Real endpoints, real auth, real payloads. Every URL here is wired to a ViewSet in the open-source repo — so you can verify exactly what we ship.
Pick the environment that matches your keys:
https://api.jinaconnect.comhttps://api.jinaconnect-dev.jinacode.systemsEvery request requires a Bearer token. For service-to-service traffic, use an API key issued from your tenant settings. For interactive sessions, exchange credentials for a JWT pair via /token/ and rotate it with /refresh/.
# POST /token/ — exchange email + password for a JWT pair
curl -X POST "https://api.jinaconnect.com/token/" \
-H "Content-Type: application/json" \
-d '{ "email": "you@brand.com", "password": "••••••••" }'
# → 200 OK
{ "access": "eyJhbGciOi...",
"refresh": "eyJhbGciOi..." }
# Use the access token on every call:
-H "Authorization: Bearer eyJhbGciOi..."
→ refresh access tokens via POST /refresh/
API keys are scoped per tenant and per role. Live keys are prefixed jc_live_...; sandbox keys jc_test_.... Pass them in the same Authorization: Bearer header.
Every customer workspace is a tenant. Agencies run 5–50 tenants on a single deployment, each with its own branding, wallet and WhatsApp Business Account.
| Method & Path | Description |
|---|---|
GET /tenants/onboarding-options/ | List available onboarding flows |
GET /tenants/branding/ | Get tenant branding settings |
PATCH /tenants/branding/ | Update custom domain, logo, email sender |
GET /tenants/users/ | List tenant members |
POST /tenants/members/invite/ | Invite a teammate |
GET /tenants/roles/ | RBAC role list |
GET /tenants/host-wallet/ | Get per-tenant wallet balance |
GET /tenants/waba-info/ | WhatsApp Business Account metadata |
GET /tenants/tenant-tags/ | Custom tenant tags for org-level filtering |
A unified contact directory across channels. Each contact carries a phone number, channel IDs, segments and custom attributes.
| Method & Path | Description |
|---|---|
GET /contacts/ | List contacts (paginated, filterable) |
POST /contacts/ | Create a contact |
GET /contacts/{id}/ | Retrieve a contact |
PATCH /contacts/{id}/ | Update contact attributes / segments |
POST /contacts/bulk-import/ | CSV upload for bulk import |
# POST /contacts/ — create a contact
curl -X POST "https://api.jinaconnect.com/contacts/" \
-H "Authorization: Bearer jc_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Asha Rao",
"phone": "+919876543210",
"segments": ["vip", "diwali-2026"],
"attributes": { "city": "Pune", "plan": "pro" }
}'
→ 201 Created · returns the new contact id
Schedule, send and track WhatsApp template broadcasts, then drill into per-message delivery and click data.
| Method & Path | Description |
|---|---|
GET /broadcast/ | List broadcasts |
POST /broadcast/ | Create & queue a broadcast |
GET /broadcast/{id}/ | Get broadcast detail |
GET /broadcast/messages/ | List individual messages within broadcasts |
GET /broadcast/url-tracking/ | Click events on shortened URLs |
GET /broadcast/dashboard/ | Aggregate analytics (delivery, read, reply rates) |
# POST /broadcast/ — create & queue a template broadcast
curl -X POST "https://api.jinaconnect.com/broadcast/" \
-H "Authorization: Bearer jc_live_..." \
-d '{
"template": "diwali_offer",
"segment": "diwali-2026",
"schedule_at": "2026-10-20T09:00:00Z"
}'
→ 201 Created · broadcast queued, track via /broadcast/dashboard/
Send template and session messages on the Official WhatsApp Business API, manage templates through Meta approval, and receive Meta-compliant inbound webhooks.
| Method & Path | Description |
|---|---|
POST /wa/v1/messages/ | Send a template / session message |
GET /wa/v1/messages/ | List sent & received messages |
POST /wa/v1/templates/ | Submit a template for Meta approval |
GET /wa/v1/templates/ | List templates and approval status |
POST /wa/v1/webhooks/{tenant_id}/ | Meta-compliant inbound webhook |
# POST /wa/v1/messages/ — send a template message
curl -X POST "https://api.jinaconnect.com/wa/v1/messages/" \
-H "Authorization: Bearer jc_live_..." \
-d '{
"to": "+919876543210",
"type": "template",
"template": {
"name": "diwali_offer",
"language": "en",
"components": [{ "type": "body",
"parameters": [{ "type": "text", "text": "Asha" }] }]
}
}'
→ 202 Accepted · returns message_id & status: queued
Place outbound calls, build IVR templates that compile to TwiML / NCCO / Plivo XML, pull CDRs and recordings, and log consent for compliance.
| Method & Path | Description |
|---|---|
GET /voice/api/provider-configs/ | List configured voice providers |
POST /voice/api/calls/ | Place an outbound call |
GET /voice/api/calls/ | List calls with status & duration |
GET /voice/api/calls/{id}/ | Retrieve call detail (CDR + transcription) |
GET /voice/api/call-events/ | DTMF / answer / hangup / transfer events |
GET /voice/api/recordings/ | S3-backed recordings index |
POST /voice/api/templates/ | Create an IVR template (TwiML / NCCO / Plivo XML) |
GET /voice/api/rate-cards/ | Per-destination call rates |
POST /voice/api/recording-consents/ | Log recording consent for TCPA compliance |
GET /voice/api/ari-health/ | Asterisk / ARI SIP infra health check |
# POST /voice/api/calls/ — place an outbound call
curl -X POST "https://api.jinaconnect.com/voice/api/calls/" \
-H "Authorization: Bearer jc_live_..." \
-d '{
"to": "+919876543210",
"provider_config": "twilio-in",
"template_id": "ivr_payment_reminder"
}'
→ 201 Created · poll /voice/api/calls/{id}/ for the CDR
Send transactional and promotional SMS through Twilio, MSG91 or Fast2SMS with DLT-registered templates, plus inbound and DLR webhooks.
| Method & Path | Description |
|---|---|
GET /sms/v1/apps/ | List configured SMS apps (Twilio / MSG91 / Fast2SMS) |
POST /sms/v1/messages/ | Send an SMS |
GET /sms/v1/templates/ | List DLT-registered templates |
POST /sms/v1/broadcast/ | Bulk SMS broadcast |
POST /sms/v1/webhooks/{app_id}/inbound/ | Inbound SMS webhook |
POST /sms/v1/webhooks/{app_id}/dlr/ | DLR (delivery report) webhook |
Register Telegram bot apps, send and broadcast messages, and receive inbound updates from the Telegram Bot API.
| Method & Path | Description |
|---|---|
GET /telegram/v1/bots/ | List Telegram bot apps |
POST /telegram/v1/messages/ | Send a Telegram message |
POST /telegram/v1/broadcast/ | Broadcast on Telegram |
POST /telegram/v1/webhooks/{bot_app_id}/ | Inbound webhook from Telegram Bot API |
Send rich cards and suggested-replies over Google RBM or Meta RCS, individually or as a broadcast.
| Method & Path | Description |
|---|---|
GET /rcs/v1/apps/ | List RCS apps (Google RBM / Meta RCS) |
POST /rcs/v1/messages/ | Send an RCS rich card / suggested-replies message |
POST /rcs/v1/broadcast/ | RCS broadcast |
A unified, omni-channel inbox. Read messages across every channel, pull inbox metrics, and export conversations as PDF.
| Method & Path | Description |
|---|---|
GET /team-inbox/api/messages/ | Unified inbox across all channels |
GET /team-inbox/api/stats/ | Inbox metrics (response time, open conversations) |
POST /team-inbox/api/export-pdf/ | Export a conversation as PDF |
Standard HTTP status codes apply. The body for any non-2xx response is always { "detail": "...", "code": "..." }.
| Status | Meaning | What to do |
|---|---|---|
200 | OK | — |
201 | Created | — |
400 | Validation error | Inspect detail for field-level errors |
401 | Unauthorized | Refresh JWT or check API key |
403 | Forbidden | RBAC role doesn't permit this action |
404 | Not found | Verify ID and tenant scope |
429 | Rate limited | Back off — see the Retry-After header |
5xx | Server error | Retry with exponential backoff; check the status page |
Per-tenant defaults — raised on Enterprise plans:
Need a hand wiring this up? WhatsApp us, email hello@jinacode.systems, or book a 30-min call.