GreetWise Zapier API
Reference for the endpoints the GreetWise Zapier integration uses to authenticate, subscribe to events, and load sample data, plus the webhook payloads GreetWise sends.
GreetWise sends call, contact, and booking events to Zapier. The GreetWise Zapier integration uses the endpoints below to check a user's API key, turn event subscriptions on and off, and load recent events in the Zap editor.
Using Zapier and just want to connect your account? See Connect GreetWise to Zapier in the Help Center.
A machine-readable OpenAPI 3.1 version of this reference is available at /developers/zapier/openapi.json.
Overview
| Base URL | https://api.greetwise.ai |
| Format | JSON request and response bodies |
| Authentication | API key in the X-Api-Key header |
| Delivery model | REST Hooks: Zapier subscribes, GreetWise pushes events |
| Method | Path | Purpose |
|---|---|---|
GET |
/zapier/v1/auth-test |
Test an API key |
POST |
/zapier/v1/hooks |
Subscribe to a trigger |
DELETE |
/zapier/v1/hooks/{id} |
Unsubscribe |
GET |
/zapier/v1/new-calls |
Recent completed calls |
GET |
/zapier/v1/new-contacts |
Recent new contacts |
GET |
/zapier/v1/new-bookings |
Recent bookings |
Authentication
Every request needs an API key. A GreetWise user creates one in the GreetWise app under Integrations → Zapier by clicking Connect. Keys start with zap_.
Send the key in the X-Api-Key header:
GET /zapier/v1/auth-test HTTP/1.1
Host: api.greetwise.ai
X-Api-Key: zap_3f9c...
Authorization: Bearer zap_3f9c... is also accepted.
Each organization has one key at a time, and every request only sees that organization's data. Clicking Disconnect revokes the key and deletes all of the organization's subscriptions. Connecting again creates a new key.
Errors
Errors return a JSON body with the HTTP status code and a message:
{
"statusCode": 401,
"message": "Invalid API key",
"error": "Unauthorized"
}
| Status | When |
|---|---|
400 Bad Request |
The request body failed validation. message is an array listing each problem. |
401 Unauthorized |
The API key is missing ("Missing API key"), wrong, or revoked ("Invalid API key"). |
5xx |
Something went wrong on our side. Safe to retry. |
Test an API key
GET /zapier/v1/auth-test
Zapier calls this when a user connects their GreetWise account. A 200 means the key is valid.
curl https://api.greetwise.ai/zapier/v1/auth-test \
-H "X-Api-Key: zap_3f9c..."
Response 200
{
"organizationId": "a3e9b0c4-58d2-4e1f-8a6b-0c7d9e2f4b15",
"connected": true
}
The first successful request with a new key also lets the user finish setup by clicking Verify in the GreetWise app.
Subscribe to a trigger
POST /zapier/v1/hooks
Zapier calls this when a user turns on a Zap. GreetWise stores the target_url and sends each new matching event to it (see Webhook payloads). An organization can have any number of subscriptions, including several to the same event.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
event |
string | yes | new_call, new_contact, or new_booking |
target_url |
string | yes | The URL GreetWise should POST events to |
curl -X POST https://api.greetwise.ai/zapier/v1/hooks \
-H "X-Api-Key: zap_3f9c..." \
-H "Content-Type: application/json" \
-d '{"event": "new_call", "target_url": "https://hooks.zapier.com/hooks/standard/123456/abcdef/"}'
Response 201
{
"id": "e41b7c90-2d5f-4a83-9e6c-1f0a8b3d7c52",
"organizationId": "a3e9b0c4-58d2-4e1f-8a6b-0c7d9e2f4b15",
"event": "new_call",
"targetUrl": "https://hooks.zapier.com/hooks/standard/123456/abcdef/",
"createdAt": "2026-09-30T17:30:00.000Z"
}
Keep the id. It's needed to unsubscribe.
A 400 is returned if event isn't one of the three values or target_url isn't a valid URL.
Unsubscribe
DELETE /zapier/v1/hooks/{id}
Zapier calls this when a user turns off or deletes a Zap. id is the value returned when subscribing. GreetWise stops sending events to that URL right away.
curl -X DELETE https://api.greetwise.ai/zapier/v1/hooks/e41b7c90-2d5f-4a83-9e6c-1f0a8b3d7c52 \
-H "X-Api-Key: zap_3f9c..."
Response 200
{ "success": true }
This also returns 200 if the subscription was already removed, so it's safe to retry.
List recent events
GET /zapier/v1/new-calls
GET /zapier/v1/new-contacts
GET /zapier/v1/new-bookings
Return the organization's most recent events of one type, newest first. The Zap editor uses these to show real sample data when a user tests a trigger. Each item has exactly the same shape as the matching webhook payload.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit |
integer | 10 |
Number of events to return, from 1 to 50 |
curl "https://api.greetwise.ai/zapier/v1/new-calls?limit=3" \
-H "X-Api-Key: zap_3f9c..."
Response 200
[
{
"id": "6f1c2a9e-3b7d-4f0a-9c51-2d8e7b4a1f03",
"organizationId": "a3e9b0c4-58d2-4e1f-8a6b-0c7d9e2f4b15",
"callerPhone": "+15551234567",
"callerName": "Jane Smith",
"durationSeconds": 87,
"summary": "Caller asked about office hours and was told they are 9am–5pm Monday through Friday.",
"occurredAt": "2026-09-30T17:42:10.512Z"
}
]
If the organization has no events of that type yet, the response is an empty array ([]).
Webhook payloads
When a subscribed event happens, GreetWise sends a POST request to each matching target_url with a JSON body describing a single event. Any 2xx response counts as delivered.
- Events are sent as soon as they happen. Contacts and bookings can arrive while the call is still going;
new_callis sent when it ends. - Requests time out after 10 seconds. Failed deliveries are not retried.
- Every event has a unique
id. Use it to skip duplicates. occurredAtis an ISO 8601 timestamp in UTC.- Fields GreetWise doesn't know are
nullinstead of being left out.
new_call
Sent when a call answered by GreetWise ends.
| Field | Type | Description |
|---|---|---|
id |
string (UUID) | Unique event id |
organizationId |
string (UUID) | The GreetWise organization |
callerPhone |
string or null | Caller phone number, E.164 format |
callerName |
string or null | Caller name, if GreetWise learned it |
durationSeconds |
integer | Call length in seconds |
summary |
string or null | AI-written summary of the call |
occurredAt |
string (date-time) | When the call ended |
{
"id": "6f1c2a9e-3b7d-4f0a-9c51-2d8e7b4a1f03",
"organizationId": "a3e9b0c4-58d2-4e1f-8a6b-0c7d9e2f4b15",
"callerPhone": "+15551234567",
"callerName": "Jane Smith",
"durationSeconds": 87,
"summary": "Caller asked about office hours and was told they are 9am–5pm Monday through Friday.",
"occurredAt": "2026-09-30T17:42:10.512Z"
}
new_contact
Sent when GreetWise creates a contact from a caller during a call. Contacts added by hand in the GreetWise app are not sent.
| Field | Type | Description |
|---|---|---|
id |
string (UUID) | Unique event id |
organizationId |
string (UUID) | The GreetWise organization |
name |
string or null | Contact name |
phone |
string or null | Phone number, E.164 format |
email |
string or null | Email address, if the caller gave one |
occurredAt |
string (date-time) | When the contact was created |
{
"id": "b8d40e17-6c2a-4b9f-a0e3-5f71c8d2e946",
"organizationId": "a3e9b0c4-58d2-4e1f-8a6b-0c7d9e2f4b15",
"name": "Jane Smith",
"phone": "+15551234567",
"email": null,
"occurredAt": "2026-09-30T17:41:02.118Z"
}
new_booking
Sent when GreetWise books an appointment for a caller.
| Field | Type | Description |
|---|---|---|
id |
string (UUID) | Unique event id |
organizationId |
string (UUID) | The GreetWise organization |
date |
string | Appointment date, YYYY-MM-DD, in the business's local time |
time |
string | Appointment start time, e.g. 10:00 AM, in the business's local time |
callerName |
string | Name the appointment was booked under |
confirmationNumber |
string or null | Confirmation number given to the caller |
phone |
string or null | Caller phone number, E.164 format |
email |
string or null | Caller email, if they gave one |
occurredAt |
string (date-time) | When the booking was made |
{
"id": "d2a7f5c3-91e4-4d6b-b8a0-3c5e7f9a1b24",
"organizationId": "a3e9b0c4-58d2-4e1f-8a6b-0c7d9e2f4b15",
"date": "2026-10-07",
"time": "10:00 AM",
"callerName": "Jane Smith",
"confirmationNumber": "GW-00123",
"phone": "+15551234567",
"email": "jane@example.com",
"occurredAt": "2026-09-30T17:43:55.904Z"
}
Support
Questions about the API or the Zapier integration? Email support@greetwise.ai.