Developers
Build on Pixl
Start calls and WhatsApp messages from your own system, keep contacts and consent in step, and read the results back. Plain HTTPS and JSON, with an API key.
What you can do
Each guide covers one job, with every field and a sample in curl, Node and Python.
- AuthenticationAPI keys, scopes and workspaces
- CallsStart a phone call, follow it and read what was said
- WhatsAppSend templates and replies, and read conversations
- Contacts and consentContacts, custom fields, opt-ins and opt-outs
- Lead linkSend leads in from any form or tool
- WebhooksCalls, messages, consent and new leads, sent to your system as they happen
- CRM syncEach lead and contact, kept up to date in your CRM
- Errors and limitsError shapes, limits, pagination and what changed
Quickstart
1. Make a key. In Pixl, open Connections › Developers and choose Create a key. Give it a name, pick what it may do, and copy it. The key is shown once. A key made there works in that workspace only, which is what you want for an integration.
2. Keep it out of your code. Store it as a secret, for example in an environment variable called PIXL_API_KEY. The samples on these pages read it from there.
3. Make a first request. This one asks who the key belongs to. Any key may call it.
GET/users/meAny key
curl "https://api.pixlagents.com/api/v1/users/me" \
-H "Authorization: Bearer $PIXL_API_KEY"{
"id": "user_123",
"email": "dev@example.com",
"full_name": "Asha Rao",
"is_active": true,
"created_at": "2026-10-01T09:30:00"
}A 401 means the key is wrong, revoked or expired. Next, read Authentication to choose your key's scopes.
Base URL and format
Every path on these pages goes after this base URL:
https://api.pixlagents.com/api/v1- Send the key on every request:
Authorization: Bearer pxl_… - Bodies are JSON. Send
Content-Type: application/jsonwith one. - Phone numbers go in international format, with the country code:
+919876543210. - Times come back in UTC, as ISO 8601. Most have no zone suffix; read them as UTC.
- Ids are strings. The ids in these samples, like
agent_123, are short fakes; real ones are longer. - Fields you don't recognise may appear in a response. Ignore them; new ones are added over time.
Send a message to an agent
Send a message to one of your agents and get its answer back, as if a customer had written. A new key can do this from the start. Find the agent's id on its page in Pixl, or under Connections › Developers.
POST/execute/agent/{agent_id}Scope: chat:write
Body
messagestringRequired- What to say to the agent.
conversation_idstring- Continue an earlier conversation with this agent. Leave it out to start a new one.
curl -X POST "https://api.pixlagents.com/api/v1/execute/agent/agent_123" \
-H "Authorization: Bearer $PIXL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "Do you have a slot on Saturday morning?"
}'{
"conversation_id": "conv_789",
"message_id": "msg_456",
"content": "Yes, we have 10:30 and 11:15 on Saturday. Shall I book one for you?",
"paused": false
}paused is true when a person on your team has taken over this conversation. The agent didn't answer, and content is a short holding line. This endpoint is limited to a number of requests a minute that depends on your plan.
API reference file
Every endpoint on these pages is also in one machine-readable file, for tools that read OpenAPI: request builders, code generators, mock servers. It needs no key.
https://api.pixlagents.com/api/v1/public/openapi.jsonIt lists the same endpoints as these pages, no more. The guides are where the rules live: what each field is for, and why a request is refused.
Results as they happen
GET /voice/call-now/{campaign_id}, GET /calls and GET /messages.