Get started
Getting started
Create an API key, authenticate your first request, and start building with JagCall in under five minutes.
Quickstart
- 1
Create an API key
- Log in to your JagCall dashboard.
- Navigate to API in the sidebar (under Tools).
- Click Create Key.
- Give it a descriptive name (e.g. "Backend Server").
- Copy the key immediately — it will not be shown again.
Keep your key secret
Never commit an API key to version control or expose it in client-side code. Use environment variables in production. - 2
Authenticate requests
Include your API key as a Bearer token in the
Authorizationheader of every request. The base URL ishttps://jagcall.com/v1/.httpAuthorization: Bearer jc_live_abc123... - 3
Make your first call
List all agents on your account to verify everything works.
curlcurl -X GET https://jagcall.com/v1/agents \ -H "Authorization: Bearer jc_live_abc123..." \ -H "Content-Type: application/json"pythonimport requestsAPI_KEY = "jc_live_abc123..."BASE_URL = "https://jagcall.com/v1"response = requests.get( f"{BASE_URL}/agents", headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", },)agents = response.json()for agent in agents: print(f"{agent['name']} ({agent['id']})")node.jsconst API_KEY = "jc_live_abc123...";const BASE_URL = "https://jagcall.com/v1";const response = await fetch(`${BASE_URL}/agents`, { headers: { Authorization: `Bearer ${API_KEY}`, "Content-Type": "application/json", },});const agents = await response.json();agents.forEach((agent) => { console.log(`${agent.name} (${agent.id})`);});
Rate limiting
Rate limits vary by endpoint to ensure fair usage. When you exceed a limit, the API returns 429 Too Many Requests with a Retry-After header.
| Endpoint | Limit |
|---|---|
GET endpoints (lists, details, transcripts) | 200/min |
POST /v1/calls | 30/min |
POST /v1/sms | 60/min |
POST /v1/agents (and other writes) | 30/min |
POST /v1/phone-numbers/search | 10/min |
POST /v1/phone-numbers (provisioning) | 5/min |
Error responses
All errors follow a consistent JSON format with an error code, a human-readable message, and an HTTP status.
json
{ "error": { "code": "invalid_api_key", "message": "The API key provided is invalid or has been revoked.", "status": 401 }}| Status | Meaning |
|---|---|
400 | Bad request — invalid parameters |
401 | Unauthorized — missing or invalid API key |
403 | Forbidden — insufficient permissions |
404 | Not found — resource does not exist |
422 | Unprocessable entity — validation error |
429 | Too many requests — rate limit exceeded |
500 | Internal server error — contact support |
Still need help?
Can't find what you're looking for? Send us a message and our team will get back to you.