Gary Club
Resource

Calls

Inbound and outbound voice. Reading is fully shipped today; the outbound dial trigger ships in Phase 1.5.

Two outbound paths
For one-off dials (post-form, post-event), use POST /v1/calls with an outbound voice agent id. For volume dialing (lapsed-customer reactivation, lead lists), use SDR Campaigns — the dialer cron works the queue with concurrency, retries, and calling windows baked in.

List calls#

List phone calls

GET/v1/calls
Cursor-paginated. Filter by direction, status, contact phone, since timestamp.

Query parameters

limitintegerdefault: 50
page_tokenstring
direction"inbound" | "outbound"
statusstring
e.g. completed, missed, voicemail.
phonestring
Substring on contact_phone.
sincedatetime
ISO-8601. Only calls created at-or-after this timestamp.
Request
curl "https://agency.gary.club/api/public/v1/calls?direction=inbound&limit=20" \
  -H "Authorization: Bearer gc_live_EXAMPLE_AbCdEfGhIj0123456789"

Read one#

Full call detail

GET/v1/calls/{id}
Returns the full phone_calls row plus hydrated transcript turns from phone_transcripts. Recording URLs are time-bound; cache the bytes if you need long-term storage.

Path parameters

iduuidrequired
Request
curl https://agency.gary.club/api/public/v1/calls/call_EXAMPLE_aaaa \
  -H "Authorization: Bearer gc_live_EXAMPLE_AbCdEfGhIj0123456789"

List agent templates#

List AI phone agent templates

GET/v1/agents
Each row is a configured ElevenLabs / Telnyx agent — name, voice, phone number, status. Use the id on POST /v1/calls when triggering a dial.
Request
curl https://agency.gary.club/api/public/v1/agents \
  -H "Authorization: Bearer gc_live_EXAMPLE_AbCdEfGhIj0123456789"

Initiate an outbound call#

Trigger an outbound dial

POST/v1/calls
Fires a single outbound call. The call is placed by the resolved agent itself: with a client-scoped key (cl_live_ / agent_live_) it dials as that client's agent from the client agent's own number; with an agency key (gc_live_) it uses the agency's shared SDR agent. Requires the org's ai_sdr_outbound_enabled flag to be on and the supplied agent_id to resolve to a launched outbound voice agent in the same tenancy.

Body parameters

tostringrequired
E.164 phone to dial.
agent_iduuidrequired
The agent that will place the call (UUID or slug). Discover via GET /v1/agents. With a client-scoped key this must be one of that client's agents, and it must be provisioned for outbound (have its own dedicated number).
prompt_overridestring
Per-call system-prompt override. Leave null to use the agent template's default.
contextobject
Free-form key/value context the agent can reference (e.g. customer name, last meeting summary).
callback_urlstring
Optional one-shot webhook URL for events on this specific call (in addition to org-level subscriptions).
metadataobject
Round-tripped on every call.* event for this call. Use it to correlate the trigger with downstream events.
Request
curl -X POST https://agency.gary.club/api/public/v1/calls \
  -H "Authorization: Bearer cl_live_EXAMPLE_AbCdEfGhIj0123456789" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+15551234567",
    "agent_id": "ag_EXAMPLE_clientOutbound",
    "context": { "first_name": "Jane", "last_meeting_topic": "pricing" },
    "metadata": { "n8n_run_id": "run_abc123" }
  }'
Client keys dial as their own agent — no fallback
A client-scoped key (cl_live_ / agent_live_) places the call as that client's own agent, from that agent's own number, and the call is attributed to that client. If the agent isn't provisioned for outbound (no dedicated number) the request returns 422 rather than falling back to the agency's shared SDR agent — so a key can only ever dial as the agent it's scoped to. Provision the agent's outbound number in the portal before triggering calls with a client key.

Webhooks for calls#

  • call.received — inbound ringing.
  • call.answered — pickup confirmed.
  • call.completed — full transcript + recording + outcome + cost.
  • call.voicemail_left — outbound only.
  • call.failed — couldn't connect.

See Webhooks for the payload shape and signature verification.