List message templates
ApiKeyAuthorizationBearer <token>An API key from Developers → API keys: Authorization: Bearer gauge_live_… (or pulse_k_live_…).
limit?stringPage size, 1–100 (default 25).
after?stringA nextCursor from the previous page. Opaque.
before?stringA prevCursor, to page back. Opaque. Not with after.
connectionId?stringOne connection.
status?stringapproved, pending, rejected, draft, paused, disabled.
language?stringe.g. en_US.
category?stringmarketing, utility, authentication.
Gauge-Version?stringA dated version. Default 2026-10-21.
A page of templates.
application/json- response
A cursor page over (created_at, id). Every list returns this shape.
data*array<>nextCursor*|Pass as after for the next page; null on the last page.
prevCursor*|Pass as before for the previous page; null on the first page.
curl -X GET 'https://app.gauge.chat/api/v2/templates'{ "nextCursor": "string", "prevCursor": "string", "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "connectionId": "84b500d7-71c8-4b1f-adf4-f1eb0000973d", "name": "string", "language": "string", "category": "string", "status": "string", "body": "string", "components": null, "variables": [ "string" ], "rejectionReason": "string", "qualityRating": "string", "createdAt": "string", "updatedAt": "string" } ]}Get a template GET
With its components and the body variables a send must fill.
Start a click-to-call call POST
Rings your agent first (their Gauge softphone, or `agent.phone`), then calls the customer into the same call when the agent answers. No audio travels over HTTP: the agent talks on the softphone or their phone. Needs the `voice-dial` scope, granted only by name. Before anything rings Gauge checks the number, then the do-not-contact list, consent (`purpose: marketing` needs a recorded opt-in for voice) and quiet hours, then reserves `maxDurationSeconds` × the per-minute rate against your balance and this key's daily cap. `maxDurationSeconds` is a hard limit enforced by the carrier. If the agent does not answer the call ends as `agent_no_answer`: the customer is never dialled and the reservation is released. The actual cost is charged when the call ends and the rest released. Follow it with `GET /v2/calls/{id}` (`bridge.status`), `call.answered` and `call.completed`.