Skip to content
DevelopersAPI reference
Documentation menu Open Integrations

Event API

API reference

The public Pongg event API manages subscriptions and setup previews. It does not expose internal integration services.

Base URL & authentication

URL
https://app.pongg.com/api/zapier

Send a Pongg key as a Bearer token. The account comes from that key. Limit: 60 requests per key per minute; a rejected request receives 429 and Retry-After in seconds. No other public paths or methods are served by this contract.

Download OpenAPI 3.1 JSON

POST /subscribe

Register a target URL to start receiving an event. Called once, when a Zap (or any other subscriber) is turned on.

RequestResponse
JSON body: {"targetUrl": "<https url Pongg should POST events to>", "event": "lead"} (targetUrl is required; event is optional and defaults to "lead").201 Created. JSON body: {"id": "<subscription id, a UUID>"}. Keep it: it is what you pass to unsubscribe.
FieldType & requirementMeaning
targetUrlstring · body · requiredPublic receiver URL. No reachability test at registration.
eventstring · body · optionallead (default), booking or all. Unknown strings do not match fan-out.
idstring · response · requiredSubscription identifier. Keep it for removal.
cURL
curl --request POST 'https://app.pongg.com/api/zapier/subscribe' \
  --header "Authorization: Bearer $PONGG_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"targetUrl":"https://your-receiver.example.com/pongg","event":"all"}'

targetUrl is not checked for reachability at subscribe time. An address that is not http or https, or that resolves to a private or loopback range, is accepted here and simply never receives a delivery. See Webhook deliveries below.

Subscription creation is not idempotent. Repeating POST /subscribe can create duplicate subscriptions. If the response was lost, check the account's existing hooks in Integrations before creating another.

DELETE /subscribe/{id}

Remove a subscription. Called once, when a Zap is turned off.

RequestResponse
No body. {id} is the id returned by subscribe.204 No Content.
FieldType & requirementMeaning
idstring · path · requiredAn existing subscription owned by the authenticated account.
Response bodynone204 on success; an absent or other-account subscription returns 404.
cURL
curl --request DELETE \
  "https://app.pongg.com/api/zapier/subscribe/$SUBSCRIPTION_ID" \
  --header "Authorization: Bearer $PONGG_API_KEY"

An id Pongg does not have (wrong id, already removed, or owned by a different Pongg account) answers 404, not 204.

GET /perform-list

Return a handful of lead-shaped sample records, for the Zap editor's own "test this trigger" step. It is also the cheapest way to check a key still works: a 200 here is the whole proof that it resolves to a live Pongg account.

RequestResponse
Query parameter limit (optional): a whole number from 1 to 20. Defaults to 3. Nothing else in the query string is read.200 OK. JSON array of up to limit records, each shaped {id, call_id, source, contact, job_type, summary, booked}.
FieldType & requirementMeaning
limitinteger · query · optional1–20, default 3. The public edge clamps the parsed limit.
idstring · each response recordDelivery id or a synthetic sample id.
call_id / source / job_type / summarystring · each response recordJob type and summary are empty on real-record previews.
contactobject · each response recordReal previews contain only external_id; no captured name/phone/email.
bookedboolean · each response recordWhether the sampled delivery has an external appointment id.
cURL
curl --request GET \
  'https://app.pongg.com/api/zapier/perform-list?limit=3' \
  --header "Authorization: Bearer $PONGG_API_KEY"

This is a preview, not a feed: once real calls exist, its samples carry an id, a call, a source and whether it booked, but job_type and summary are empty and contact carries no name, phone or email. Subscribe and wait for a real call to receive full records.

Errors

Errors use {"error":"<sentence>"}. The rate-limit response also contains retryAfterSeconds. A successful DELETE returns no body.

StatusMeaningNext step
400Pongg could not accept that request.Check the request body; targetUrl is required.
401That Pongg key is not valid. Open Integrations in Pongg and create a new one.Correct or rotate the account key.
404That is not a Pongg endpoint.Use one of the three supported method/path pairs.
404Pongg has no record of that.Check the subscription id and account.
429Too many requests to Pongg. Wait a minute and try again.Wait for Retry-After before another API request.
502Pongg could not be reached just now. Try again shortly.Retry reads later. A POST may have saved a subscription before a response was lost; check existing hooks in Integrations before repeating it.

Subscription creation is not an idempotent API. Repeating POST /subscribe can create duplicate subscriptions, which can produce duplicate pushes. There is no public subscription-list endpoint; the signed-in Integrations card shows the account’s hooks.

Search documentation