Create a contact
POST /v1/contacts
Creates a new contact for the authenticated user. At least one of name,
username, or phone must be provided. Defaults platform to telegram
if omitted. Requires scope contacts:write.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”At least one of name, username, or phone is required.
object
Platform for the new contact. Defaults to telegram.
Handle with or without a leading @ - the @ is stripped server-side.
Example
{ "platform": "telegram", "name": "Acme Inc.", "username": "john_doe", "phone": null, "notes": "Met at conference"}Responses
Section titled “ Responses ”Contact created successfully.
A CRM contact record.
object
Social platform the contact belongs to.
Handle without the leading @.
CRM pipeline stage.
Lead score 0-100 (higher = hotter). Null when not scored.
True when the score was last set by AI, false for a manual override.
Team member the contact is assigned to.
Attached tags (populated on GET by id, omitted in list responses).
object
Hex color
The request body or parameters failed validation.
Standard error envelope for all v1 error responses.
object
Machine-readable error code.
Human-readable explanation of the error.
Optional structured context (field-level validation errors, etc.).
Example
{ "error": "bad_request", "message": "at least one of name, username, phone is required"}Missing or invalid bearer token.
Standard error envelope for all v1 error responses.
object
Machine-readable error code.
Human-readable explanation of the error.
Optional structured context (field-level validation errors, etc.).
Example
{ "error": "unauthorized", "message": "Invalid bearer principal"}The API key does not have the required scope for this operation.
Standard error envelope for all v1 error responses.
object
Machine-readable error code.
Human-readable explanation of the error.
Optional structured context (field-level validation errors, etc.).
Example
{ "error": "forbidden", "message": "scope contacts:write is required"}Per-key rate limit exceeded. Retry after the time indicated by X-RateLimit-Reset.
Standard error envelope for all v1 error responses.
object
Machine-readable error code.
Human-readable explanation of the error.
Optional structured context (field-level validation errors, etc.).
Example
{ "error": "rate_limited", "message": "rate limit exceeded"}Headers
Section titled “Headers ”Maximum requests allowed per minute for this key.
Requests remaining in the current window.
Unix timestamp (seconds) when the rate limit window resets.