Before you start
In the dashboard, review Plan & billing and confirm that API & webhooks is enabled and your workspace plan is active. You will also need permission to manage API keys in API & Apps.
The REST API base URL is https://mcp.callsyncapp.com/api/v1. Use the API to request data when your integration needs it. Use webhooks when you want CallSync to send events to your receiver.
Create and store your API key
0 of 3 steps checked
Fetch your recent calls
Run this from your server or terminal after setting CALLSYNC_API_KEY. It requests the first page of five calls, ordered by the most recent call time.
curl --fail-with-body --get 'https://mcp.callsyncapp.com/api/v1/calls' \
--data-urlencode 'limit=5' \
--data-urlencode 'page=1' \
-H "Authorization: Bearer $CALLSYNC_API_KEY"Read the response
Successful calls responses contain status, data and pagination. Each call includes its ID, time, direction, duration, caller, staff, note, recording and AI details when available. Missing recording or AI information does not mean the call failed to sync.
The example below shows an empty workspace response; your data array contains call objects when eligible calls exist.
{
"status": "success",
"data": [],
"pagination": { "page": 1, "limit": 5, "total": 0 }
}Filter and paginate calls
Use pagination.total to determine whether more calls remain. Call data can change while you page through it; use each call’s ID to avoid duplicate records in your integration.
| Parameter | Usage |
|---|---|
| limit | Use an integer from 1 to 10 for calls per page. Default: 5. |
| page | Start at 1. Increase it to fetch the next page. |
| search | Search calls by phone/name, notes, employee and available AI text. |
| direction | Use incoming or outgoing to filter call direction. |
curl --fail-with-body --get 'https://mcp.callsyncapp.com/api/v1/calls' \
--data-urlencode 'search=Alex' \
--data-urlencode 'direction=outgoing' \
--data-urlencode 'limit=10' \
--data-urlencode 'page=1' \
-H "Authorization: Bearer $CALLSYNC_API_KEY"Fetch related workspace data
These are paths relative to the base URL. The analysis endpoint requires call_id; if no analysis exists yet, data contains a not_found status. Do not assume all endpoints have the same response or pagination shape.
| GET endpoint | Purpose |
|---|---|
| /calls | Recent calls with contact, recording and AI details. |
| /analysis?call_id=CALL_ID | Analysis for one call. Replace CALL_ID with the ID returned by /calls. |
| /callers | Contact activity, including total calls and last interaction. |
| /identities | Saved contact names, notes and labels. |
| /employees | Team/device details. Archived people are excluded unless include_archived=true. |
If a request fails
- Check the HTTP status and response body before using the returned data.
- For 401, check the Bearer header and whether the key was regenerated.
- For 400 on analysis, confirm that call_id is present.
- For an empty calls list, verify the workspace key, filters and the phone’s sync status.
- For network or server errors, retry with a bounded delay and log the status. Avoid repeatedly retrying invalid credentials.