Skip to main content
All routes below are under your API host (for example https://api.kupe.in) unless noted. Authenticate with Authorization: Bearer <supabase_jwt> from the dashboard, or x-api-key: <kupe_api_key> for server integrations.

Tools — custom HTTP tools and MCP

HTTP tool definitions (CRUD)

Base path: /api/v1/tool-endpoint-defs

MCP server tool definitions (CRUD)

Base path: /api/v1/tools-mcp-server-defs Same idea as HTTP tools: POST / GET / GET /{id} / PUT / DELETE for MCP-backed tools.

Attach tools to an agent

Base path: /api/v1/agents Create tools first (tool-endpoint-defs or tools-mcp-server-defs), then reference their IDs in the agent tools payload when calling POST / PATCH on /{agent_id}/tools.

Post-call analysis — rules and agent mapping

User-scoped rules (CRUD)

Base path: /api/v1/post-analysis

Map rules to an agent

Base path: /api/v1/agents/{agent_id}

Outbound — batch campaigns (end-to-end API)

Base path: /api/v1/batch-call Requires the outbound feature flag on your account. Authenticate with x-api-key or Bearer on every route below (except Twilio /status-callback, which is called by the carrier).

Prerequisites

  1. GET /api/v1/phone — list provisioned lines; note each row’s id (caller_phone_id).
  2. GET /api/v1/agents — note your agent id, or use a workflow id instead.
  3. In the agent system prompt, use variables like {{name}} that match variable_names on the batch.

End-to-end flow

Batch-level status: not_startedin_progress (after launch) → completed (all rows terminal). Recipient status: not_startedcallingcompleted | failed | no_answer.

All routes

Example: create → add numbers → launch → poll

Interactive request/response shapes: Voice Agent API OpenAPI tab → Batch calling (kupe-voice-agent.openapi.yaml).

Call logs — list, pagination, single session, post-call data

Base path: /api/v1/call-analytics Post-call analysis fields (when not redacted) appear on the session object, e.g. post_call_analysis_results and related keys returned by the service layer.

Export (ZIP, optional date range)

GET /call-analytics/export — supports request_id for a single downloadable export, or bulk export with start_date / end_date (YYYY-MM-DD) and email delivery for large ranges.

Billing and usage (usage, cost, credit summary)

Base path: /api/v1/billing Typical read endpoints (also available under /billing/... where the router is mounted without the /api/v1 prefix): Removed from the product (do not call): self-serve pricing plans, payment checkout, Razorpay webhooks, /balance-history (legacy ledger). Historical balance movements and grants are returned from GET /api/v1/wallets/{wallet_id} (see Wallets below). Other GET /api/v1/billing/** routes your deployment may expose (e.g. forex quotes, service pricing) remain read-only catalog helpers where implemented.

API key vs session (important)

When you authenticate with x-api-key, only GET (and HEAD/OPTIONS) are allowed on /api/v1/billing/**. There is no API-key billing write surface. Wallets and earnings live under /api/v1/wallets/** and /api/v1/earnings/**. Assigning credits, caps, org business model, markup, and commission are POST operations and require a Bearer (session) token with the appropriate org or super-admin role.

Feature flags

Base path: /api/v1/feature-flags

Wallets (credits, grants, ledger, org business model)

Base path: /api/v1/wallets (plus org-scoped helpers under /api/v1/orgs for business model / commission / markup). Legacy organization billing routes such as /organizations/{id}/billing/assign-credits return 410 Gone; use POST /api/v1/wallets/{wallet_id}/grants instead.

Earnings (reseller markup and commission)

Base path: /api/v1/earnings For org_admin users whose organization is a channel_partner or distributor (not internal):

API keys — multiple keys, names, revoke

Base path: /api/v1/api-keys The dashboard API Keys page supports multiple keys, optional names on create, rename, and revoke.

Voice catalog — TTS voices

Base path: /api/v1/tts-voices Use GET /api/v1/tts-voices (no trailing slash required).
For interactive request/response shapes, continue to use the Voice Agent API OpenAPI tab and kupe-voice-agent.openapi.yaml.