Method Endpoint Description GET/contacts/List contacts POST/contacts/Create contact GET/contacts/{id}/Get contact details PUT/contacts/{id}/Update contact DELETE/contacts/{id}/Delete contact
curl -X POST http://localhost:8000/contacts/ \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
Field Type Description phonestring Phone number (E.164 format) first_namestring First name last_namestring Last name tagFK Link to TenantTags sourceenum How the contact was created telegram_chat_idstring Auto-populated from Telegram webhooks telegram_usernamestring Auto-populated from Telegram webhooks lead_statusstring Lead pipeline status lead_scoreinteger Numerical lead score do_not_contactboolean DNC flag assigned_to_typeenum USER, BOT, CHATFLOW, UNASSIGNEDassigned_to_userFK Assigned team member assignment_notestring Notes about the assignment ticket_statusenum OPEN, CLOSED
Source Description MANUALCreated via API or admin WHATSAPPAuto-created from inbound WhatsApp message TELEGRAMAuto-created from inbound Telegram message SMSAuto-created from inbound SMS RCSAuto-created from inbound RCS message VOICEAuto-created from voice call
Parameter Description searchSearch by phone, first_name, or last_name tagFilter by tag sourceFilter by source lead_statusFilter by lead status assigned_to_typeFilter by assignment type ticket_statusFilter by ticket status orderingSort by field
Contacts are unified across channels. When a contact messages via WhatsApp and later via Telegram, both identities are linked to the same TenantContact record via phone number matching. The telegram_chat_id is populated automatically when a Telegram user messages your bot.