Sync API Overview
The Sync API is the request-response interface to a telecrm workspace. Every call returns the operation's outcome immediately — created and updated entities, validation remarks, or a structured error.
Use the Sync API for interactive workflows that need confirmation of each operation, for any read or search, and for any operation outside lead ingestion. For high-volume, fire-and-forget lead ingestion, use the Async API instead.
Resources
| Tag | Endpoints |
|---|---|
| Leads | Create, get, update, search. |
| Actions | Create custom and payment actions, read individual actions, update them, search a lead's timeline. |
| Files | Upload files to a lead or a custom action, get a download URL, delete a file. |
| Team Members | List, create, get by email, update availability state. |
| Enterprise Metadata | Read enterprise info, custom field definitions, custom action definitions, lead stage pipeline. |
Endpoint
| Field | Value |
|---|---|
| Base URL | https://next.telecrm.in/autoupdate/v2 |
Authentication
Every request must include a Sync-typed bearer token in the Authorization header. Async tokens are rejected with 401 NOT_AUTHORIZED.
The one exception is update availability, which predates these conventions and returns 403 with a plain-text body instead.
Generate a token in the dashboard:
- Settings → Website and API → API token
- Click Create new token, choose type Sync, copy and save the token.
A workspace is limited to 3 Sync tokens at a time. See Authentication for full instructions.
Request conventions
- All request and response bodies are JSON. Set
Content-Type: application/json. - Search endpoints are POST with a JSON body — not GET with query strings.
- Searches are case-insensitive and require exact matches unless an endpoint says otherwise.
- Pagination uses
skip(offset, default0) andlimit(page size, default10). Each endpoint documents its own maximum —100everywhere except team members, which caps at10. - Endpoints that return lead or action data also accept
hidePII=true, which redacts personal data in the response. - Sort orders are documented per endpoint. Lead and action search results sort newest-first by creation timestamp; team-member listings sort ascending by name.
Field types and identifiers
The Sync API operates on the same workspace data as the Async API and shares the same field-type rules. Cross-references throughout this section point to the canonical Concepts pages:
- Lead Identifier — the field that uniquely identifies a lead.
- Field Types — text, phone, email, dropdown, tags, date, money, and the rest.
- Field API Names — how to reference custom fields in payloads.
- Actions — predefined
PAYMENTand workspace-defined custom actions. - Action Types — full enum returned by action search.
TIP
Sync custom action type is the bare numeric code (e.g. "1001"). The ACTION_ prefix used by the Async API does not apply here.
Errors
Every non-2xx response uses the same envelope:
json
{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable explanation"
}
}Universal: 401 NOT_AUTHORIZED
Returned when the token is missing, invalid, or of the wrong type (an Async token used on a Sync endpoint, or a token that doesn't belong to the targeted enterprise).
json
{
"error": {
"code": "NOT_AUTHORIZED",
"message": "Enterprise with ID 51ab23c9870 not found or invalid access token. Please generate a new one from the Website/API integrations section of the telecrm app."
}
}Common codes
Each endpoint documents its own status codes. The codes you'll see across the Sync API:
| Code | When |
|---|---|
BAD_REQUEST | Generic validation failure — bad query parameter, unsupported action type, immutable field changed. |
VALIDATION_ERROR | Field-level validation failure (e.g. rating outside 1-5). |
INVALID_LEAD | Lead-level validation failure or attempt to modify the lead identifier. |
LEAD_NOT_FOUND | No lead with the given ID exists. |
LEAD_ALREADY_EXISTS | A lead with the same identifier value already exists (POST /lead). |
ACTION_NOT_FOUND | No action with the given ID exists on the lead, or no custom action with the given code. |
TEAM_MEMEBER_NOT_FOUND | No team member with the given email exists. The transposed spelling is what the API emits — match it literally. |
FIELD_NOT_FOUND | No custom field with the given API name. |
NOT_FOUND | No route matches the method and path. |
METHOD_NOT_ALLOWED | The path exists but not for that HTTP method — e.g. a GET on a search endpoint. |
BUY_LICENSE | License seat limit reached when creating a team member. |
NOT_AUTHORIZED | See above. |
Partial-success semantics
Three endpoints return a top-level success even when individual fields or actions failed validation:
POST /lead— lead + initial actionsPOST /lead/{leadId}— field updatesPOST /lead/{leadId}/action— batch of actions
Each returns a remarks array describing per-field outcomes:
json
{
"lead_id": "603d2b2f9b1e8a001c8e4f5c",
"actions": [
{ "action_id": "603d2b2f9b1e8a001c8e4f5d", "status": "CREATED" },
{ "action_id": null, "status": "IGNORED" }
],
"remarks": [
{ "field": "fields.rating", "status": "IGNORED", "remark": "Rating must be between 1 and 5" },
{ "field": "actions[0].fields.email", "status": "IGNORED", "remark": "Email is invalid" }
]
}A 200/201 response is not a guarantee that every field or action was accepted. Always check remarks and per-action status values.
WARNING
The lead's ID is spelled lead_id on POST /lead, leadid on POST /lead/{leadId}/action and POST /lead/{leadId}/action/{actionId}, and id on the endpoints that return a lead object. The three spellings are not interchangeable.
OpenAPI specification
The full Sync API spec is published as a self-contained YAML at /openapi/sync.yaml. Use it for SDK generation, Postman imports, or any machine-readable consumption.