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. |
| 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.
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. - 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. |
TEAM_MEMBER_NOT_FOUND | No team member with the given email exists. |
ENTERPRISE_NOT_FOUND | The enterprise ID does not exist. |
NOT_FOUND | Custom field or custom action not found. |
BUY_LICENSE | License seat limit reached when creating a team member. |
NOT_AUTHORIZED | See above. |
Partial-success semantics
The two endpoints that accept multiple sub-entities — POST /lead (lead + initial actions) and POST /lead/{leadId}/action (batch of actions) — return a top-level success even when individual fields or actions failed validation.
The response body always contains 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.
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.