DripTell public API
Build customer workflows without losing the conversation.
Connect contacts, leads, WhatsApp messages, templates, media, conversations, and automatic replies to the systems your team already uses.
Current reference
26 public operations
Production base URL, workspace-scoped authentication, and human-readable examples for every operation.
Explore the API
Choose the resource that matches the workflow you are building.
Account and health
Confirm that the API is reachable and identify the workspace attached to a key.
Contacts
Create, find, update, and safely remove the customer records shared across DripTell.
Leads
Bring website forms, lead ads, and partner opportunities into the DripTell pipeline.
Contact groups
Organize contacts into reusable audiences without duplicating customer records.
Messaging
Send WhatsApp content through the correct service-window, template, consent, and media rules.
Conversations
Read recent customer conversations or the message history of a single contact.
Templates
Read approved WhatsApp template names, languages, components, and placeholders before sending.
Canned replies
Manage keyword-triggered automatic responses for repeat customer questions.
Authentication
Keep the workspace key on your server.
DripTell uses bearer API keys. Each key belongs to one workspace and grants access only to that workspace's resources.
Never place a key in browser code, a mobile bundle, analytics events, a public repository, or a support message.
curl --request GET "https://app.driptell.com/api/v1/verify" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"Store securely
Use an environment secret or a managed secret store.
Rotate quickly
Revoke an exposed key and replace it in every connector.
Quickstart
Put one real customer into the workflow.
Create the contact once, keep the returned UUID, and reuse it for later leads, conversations, and messages. Phone numbers are normalized to E.164.
- 01
Generate the key
Create a server-side API key for the correct workspace.
- 02
Verify the workspace
Call /api/v1/verify before reading or writing data.
- 03
Create the contact
Keep the returned UUID as the customer identity.
curl --request POST "https://app.driptell.com/api/v1/contacts" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"first_name": "Jane",
"last_name": "Doe",
"phone": "+971500000000",
"email": "[email protected]"
}'{
"success": true,
"data": {
"contact": {
"uuid": "1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"first_name": "Jane",
"last_name": "Doe",
"phone": "+971500000000",
"email": "[email protected]"
}
}
}Core concepts
Know the rules before production traffic.
These conventions apply across the public API. They make pagination, retries, security, and WhatsApp delivery behavior predictable.
Base URL
https://app.driptell.comEvery path in the reference is appended to this production host.
Authentication
Bearer API keyKeys belong to one workspace and must remain on a trusted server.
Request format
JSON over HTTPSSend Content-Type: application/json for calls with a request body.
Pagination
page and per_pageList endpoints start at page 1 and accept up to 100 items per page.
Safe retries
Idempotency-KeyUse a stable key for lead creation and other source-driven writes.
Messaging window
24-hour service windowUse approved templates when free-form WhatsApp messaging is closed.
API reference
Every public operation, explained.
Expand an operation to see its purpose, authentication, fields, request, response, implementation notes, and possible errors.
2 operations
Account and health
Confirm that the API is reachable and identify the workspace attached to a key.
GETVerify an API key
/api/v1/verifyValidate a bearer key and return the workspace and user context it belongs to.
Verify an API key
/api/v1/verifyValidate a bearer key and return the workspace and user context it belongs to.
/api/v1/verifyBearer keyVerify an API key
Validate a bearer key and return the workspace and user context it belongs to.
Use this before moving customer data. Every authenticated endpoint is automatically scoped to the workspace returned here.
Possible errors
401The bearer key is missing, invalid, or revoked.
curl --request GET "https://app.driptell.com/api/v1/verify" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"valid": true,
"organization": {
"id": 8,
"name": "Northstar Trading",
"identifier": "northstar-trading"
},
"user": {
"id": 18,
"email": "[email protected]",
"name": "Account Owner",
"role": "owner"
}
}
}GETCheck API health
/api/v1/healthCheck whether the public API is reachable without returning workspace data.
Check API health
/api/v1/healthCheck whether the public API is reachable without returning workspace data.
/api/v1/healthPublicCheck API health
Check whether the public API is reachable without returning workspace data.
Implementation notes
- This endpoint does not require authentication.
- Use it for uptime monitoring and connector smoke tests, not workspace verification.
curl --request GET "https://app.driptell.com/api/v1/health" \
--header "Accept: application/json"{
"ok": true,
"status": "ok",
"service": "driptell-v4",
"timestamp": "2026-07-08T00:00:00.000Z"
}5 operations
Contacts
Create, find, update, and safely remove the customer records shared across DripTell.
GETList contacts
/api/v1/contactsReturn a paginated list of contacts in the workspace, with optional search.
List contacts
/api/v1/contactsReturn a paginated list of contacts in the workspace, with optional search.
/api/v1/contactsBearer keyList contacts
Return a paginated list of contacts in the workspace, with optional search.
Request fields
searchstringFilter by name, phone, or email. Matching is case-insensitive.
pageintegerPage number starting at 1. The default is 1.
per_pageintegerItems per page from 1 to 100. The default is 25.
Possible errors
401The bearer key is missing, invalid, or revoked.
curl --request GET "https://app.driptell.com/api/v1/contacts?search=Jane&page=1&per_page=25" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"contacts": [
{
"uuid": "1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"first_name": "Jane",
"last_name": "Doe",
"phone": "+971500000000",
"email": "[email protected]",
"is_subscribed": true,
"is_favorite": false,
"address": {},
"metadata": {},
"created_at": "2026-06-01T09:30:00.000Z",
"updated_at": "2026-06-10T11:05:00.000Z"
}
],
"page": 1,
"per_page": 25
}
}POSTCreate a contact
/api/v1/contactsCreate a customer record. DripTell normalizes the phone number to E.164.
Create a contact
/api/v1/contactsCreate a customer record. DripTell normalizes the phone number to E.164.
/api/v1/contactsBearer keyCreate a contact
Create a customer record. DripTell normalizes the phone number to E.164.
Request fields
first_namerequiredstringContact first name.
phonerequiredstringPhone number in E.164 format.
last_namestringContact last name.
emailstringContact email address.
addressobjectStructured address data used by your workflow.
metadataobjectAdditional workspace-specific contact data.
Possible errors
400first_name is missing, or phone is missing or invalid.
401The bearer key is missing, invalid, or revoked.
409A contact with the same phone number already exists.
curl --request POST "https://app.driptell.com/api/v1/contacts" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"first_name": "Jane",
"last_name": "Doe",
"phone": "+971500000000",
"email": "[email protected]"
}'{
"success": true,
"data": {
"contact": {
"uuid": "1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"first_name": "Jane",
"last_name": "Doe",
"phone": "+971500000000",
"email": "[email protected]",
"created_at": "2026-06-16T09:30:00.000Z"
}
}
}GETGet a contact
/api/v1/contacts/{uuid}Fetch one contact by its public UUID.
Get a contact
/api/v1/contacts/{uuid}Fetch one contact by its public UUID.
/api/v1/contacts/{uuid}Bearer keyGet a contact
Fetch one contact by its public UUID.
Request fields
uuidrequireduuidContact UUID returned by contact, lead, and conversation calls.
Possible errors
401The bearer key is missing, invalid, or revoked.
404No contact with that UUID exists in the workspace.
curl --request GET "https://app.driptell.com/api/v1/contacts/1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"contact": {
"uuid": "1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"first_name": "Jane",
"last_name": "Doe",
"phone": "+971500000000",
"email": "[email protected]",
"is_subscribed": true,
"is_favorite": false,
"blocked_at": null,
"address": {},
"metadata": {},
"created_at": "2026-06-01T09:30:00.000Z",
"updated_at": "2026-06-10T11:05:00.000Z"
}
}
}PUTUpdate a contact
/api/v1/contacts/{uuid}Update only the supplied contact fields. Unsent fields stay unchanged.
Update a contact
/api/v1/contacts/{uuid}Update only the supplied contact fields. Unsent fields stay unchanged.
/api/v1/contacts/{uuid}Bearer keyUpdate a contact
Update only the supplied contact fields. Unsent fields stay unchanged.
Request fields
uuidrequireduuidContact UUID.
first_namestringUpdated first name.
last_namestringUpdated last name.
phonestringUpdated E.164 phone number.
emailstringUpdated email address.
addressobjectReplacement address object.
metadataobjectReplacement metadata object.
Possible errors
400The supplied phone number is invalid.
401The bearer key is missing, invalid, or revoked.
404No contact with that UUID exists.
409The new phone number belongs to another contact.
curl --request PUT "https://app.driptell.com/api/v1/contacts/1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"email": "[email protected]"
}'{
"success": true,
"data": {
"contact": {
"uuid": "1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"first_name": "Jane",
"last_name": "Doe",
"phone": "+971500000000",
"email": "[email protected]",
"updated_at": "2026-06-16T10:00:00.000Z"
}
}
}DELETEDelete a contact
/api/v1/contacts/{uuid}Soft-delete a contact and hide it from later public API calls.
Delete a contact
/api/v1/contacts/{uuid}Soft-delete a contact and hide it from later public API calls.
/api/v1/contacts/{uuid}Bearer keyDelete a contact
Soft-delete a contact and hide it from later public API calls.
Request fields
uuidrequireduuidContact UUID.
Possible errors
401The bearer key is missing, invalid, or revoked.
404No contact with that UUID exists.
curl --request DELETE "https://app.driptell.com/api/v1/contacts/1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"deleted": true
}
}1 operation
Leads
Bring website forms, lead ads, and partner opportunities into the DripTell pipeline.
POSTCreate or update a lead
/api/v1/leadsCreate a lead from an external payload and optionally create or reuse its contact and conversation.
Create or update a lead
/api/v1/leadsCreate a lead from an external payload and optionally create or reuse its contact and conversation.
/api/v1/leadsBearer keyCreate or update a lead
Create a lead from an external payload and optionally create or reuse its contact and conversation.
DripTell updates an existing open lead for the same contact unless update_existing is false. A stable Idempotency-Key or external_source_id prevents duplicates.
Request fields
Idempotency-KeystringStable key for a source event. Reusing it returns the original lead.
phonestringCustomer phone number. Supply phone, email, or contact_uuid.
emailstringCustomer email. Supply phone, email, or contact_uuid.
contact_uuiduuidExisting contact UUID.
first_namestringCustomer first name when creating a contact.
last_namestringCustomer last name when creating a contact.
titlestringLead title visible in the pipeline.
sourcestringLead source such as website, partner, or lead_ad.
external_source_idstringUnique identifier from the originating system.
stage_namestringTarget pipeline stage.
value_amountnumberExpected lead value.
value_currencystringISO currency code for value_amount.
prioritystringWorkflow priority such as low, normal, or high.
lead_scorenumberOptional score supplied by the source system.
custom_fieldsobjectCustom lead data used by the workspace.
create_conversationbooleanCreate a conversation when the lead does not already have one.
Implementation notes
- Configured outbound webhooks receive lead.created or lead.updated.
- Use both source and external_source_id when the originating system provides a durable record ID.
Possible errors
400No customer identity was supplied, a value is invalid, or the contact is blocked.
401The bearer key is missing, invalid, or revoked.
curl --request POST "https://app.driptell.com/api/v1/leads" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Idempotency-Key: source-event-8471" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971555535102",
"first_name": "Wasim",
"title": "Website enquiry",
"source": "website",
"external_source_id": "landing-page-12345",
"stage_name": "New lead",
"value_amount": 2500,
"value_currency": "USD",
"priority": "high",
"custom_fields": {
"budget": "2500 USD",
"interest": "WhatsApp automation"
},
"create_conversation": true
}'{
"success": true,
"data": {
"created": true,
"lead": {
"id": 128,
"public_id": "7c34773d-88a0-43c4-8c7a-5c32e0f80213",
"title": "Website enquiry",
"source": "website",
"status": "open",
"stage": "New lead",
"lead_health_score": 57,
"lead_health_status": "active",
"contact_name": "Wasim",
"phone": "+971555535102",
"conversation_public_id": "d8e5fc33-37e3-4923-90b0-2d46d7fbf412"
}
}
}4 operations
Contact groups
Organize contacts into reusable audiences without duplicating customer records.
GETList contact groups
/api/v1/contact-groupsReturn all contact groups in the workspace with their member counts.
List contact groups
/api/v1/contact-groupsReturn all contact groups in the workspace with their member counts.
/api/v1/contact-groupsBearer keyList contact groups
Return all contact groups in the workspace with their member counts.
Possible errors
401The bearer key is missing, invalid, or revoked.
curl --request GET "https://app.driptell.com/api/v1/contact-groups" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"groups": [
{
"uuid": "8a2b1c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
"name": "VIP customers",
"description": "High-value accounts",
"created_at": "2026-05-20T08:00:00.000Z",
"contacts": 42
}
]
}
}POSTCreate a contact group
/api/v1/contact-groupsCreate a named group that can be reused as a customer audience.
Create a contact group
/api/v1/contact-groupsCreate a named group that can be reused as a customer audience.
/api/v1/contact-groupsBearer keyCreate a contact group
Create a named group that can be reused as a customer audience.
Request fields
namerequiredstringGroup name.
descriptionstringOptional explanation of the audience.
Possible errors
400name is missing.
401The bearer key is missing, invalid, or revoked.
curl --request POST "https://app.driptell.com/api/v1/contact-groups" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"name": "VIP customers",
"description": "High-value accounts"
}'{
"success": true,
"data": {
"group": {
"uuid": "8a2b1c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
"name": "VIP customers",
"description": "High-value accounts",
"created_at": "2026-06-16T09:30:00.000Z"
}
}
}PUTUpdate a contact group
/api/v1/contact-groups/{uuid}Rename a group or change its description.
Update a contact group
/api/v1/contact-groups/{uuid}Rename a group or change its description.
/api/v1/contact-groups/{uuid}Bearer keyUpdate a contact group
Rename a group or change its description.
Request fields
uuidrequireduuidContact group UUID.
namerequiredstringUpdated group name.
descriptionstringUpdated group description.
Possible errors
400name is missing.
401The bearer key is missing, invalid, or revoked.
404No group with that UUID exists.
curl --request PUT "https://app.driptell.com/api/v1/contact-groups/8a2b1c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"name": "VIP"
}'{
"success": true,
"data": {
"updated": true
}
}DELETEDelete a contact group
/api/v1/contact-groups/{uuid}Soft-delete a group without deleting the contacts inside it.
Delete a contact group
/api/v1/contact-groups/{uuid}Soft-delete a group without deleting the contacts inside it.
/api/v1/contact-groups/{uuid}Bearer keyDelete a contact group
Soft-delete a group without deleting the contacts inside it.
Request fields
uuidrequireduuidContact group UUID.
Possible errors
401The bearer key is missing, invalid, or revoked.
404No group with that UUID exists.
curl --request DELETE "https://app.driptell.com/api/v1/contact-groups/8a2b1c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"deleted": true
}
}8 operations
Messaging
Send WhatsApp content through the correct service-window, template, consent, and media rules.
POSTSend a text message
/api/v1/sendSend free-form WhatsApp text inside the 24-hour customer service window.
Send a text message
/api/v1/sendSend free-form WhatsApp text inside the 24-hour customer service window.
/api/v1/sendBearer keySend a text message
Send free-form WhatsApp text inside the 24-hour customer service window.
Request fields
messagerequiredstringMessage text, up to 4096 characters.
phonestringRecipient phone number in E.164 format. Use this or contact_uuid.
contact_uuiduuidExisting DripTell contact UUID. Use this or phone.
first_namestringName used if a new contact must be created from phone.
Possible errors
400message is missing, exceeds 4096 characters, or no recipient was supplied.
401The bearer key is missing, invalid, or revoked.
422The 24-hour customer service window is closed. Send an approved template instead.
429The workspace send limit was reached. Wait for the Retry-After period before retrying.
curl --request POST "https://app.driptell.com/api/v1/send" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971500000000",
"message": "Hi Jane, your order has shipped!"
}'{
"success": true,
"data": {
"message_id": 918273,
"status": "sent"
}
}POSTSend a template message
/api/v1/send/templateSend an approved WhatsApp template inside or outside the 24-hour service window.
Send a template message
/api/v1/send/templateSend an approved WhatsApp template inside or outside the 24-hour service window.
/api/v1/send/templateBearer keySend a template message
Send an approved WhatsApp template inside or outside the 24-hour service window.
Request fields
templaterequiredstringApproved template name.
phonestringRecipient phone number in E.164 format. Use this or contact_uuid.
contact_uuiduuidExisting DripTell contact UUID. Use this or phone.
languagestringTemplate language code such as en_US.
variablesstring[]Body placeholder values in the same order as {{1}}, {{2}}, and later variables.
header_media_urlurlPublic image, video, or document URL required by a media header.
header_variablestringText value required by a text header.
Possible errors
400template is missing, or fewer variables were supplied than required.
401The bearer key is missing, invalid, or revoked.
404The template was not found or is not approved.
422A required media header URL is missing or invalid.
429The workspace send limit was reached. Wait for the Retry-After period before retrying.
curl --request POST "https://app.driptell.com/api/v1/send/template" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971500000000",
"template": "order_update",
"language": "en_US",
"variables": [
"Jane",
"#10234"
]
}'{
"success": true,
"data": {
"message_id": 918274,
"status": "sent"
}
}POSTSend a marketing template
/api/v1/send/marketing-templateSend an approved marketing template after recording explicit customer consent.
Send a marketing template
/api/v1/send/marketing-templateSend an approved marketing template after recording explicit customer consent.
/api/v1/send/marketing-templateBearer keySend a marketing template
Send an approved marketing template after recording explicit customer consent.
Marketing traffic is separated from service messages and is recorded in WhatsApp commerce and platform audit history.
Request fields
templaterequiredstringApproved MARKETING template name.
consent_confirmedrequiredbooleanMust be true to confirm the customer opted in.
consent_sourcestringWhere consent was collected, such as checkout opt-in.
phonestringRecipient phone number in E.164 format. Use this or contact_uuid.
contact_uuiduuidExisting DripTell contact UUID. Use this or phone.
languagestringTemplate language code.
variablesstring[]Ordered template body variables.
header_media_urlurlPublic media URL required by the template header.
Possible errors
401The bearer key is missing, invalid, or revoked.
404The marketing template was not found or is not approved.
422Consent was not confirmed, or required header media is invalid.
429The workspace send limit was reached. Wait for the Retry-After period before retrying.
curl --request POST "https://app.driptell.com/api/v1/send/marketing-template" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971500000000",
"template": "summer_offer",
"language": "en_US",
"variables": [
"Jane"
],
"consent_confirmed": true,
"consent_source": "checkout opt-in"
}'{
"success": true,
"data": {
"message_id": 918276,
"status": "sent",
"endpoint": "marketing_messages"
}
}POSTSend a media message
/api/v1/send/mediaSend an image, video, audio file, document, or sticker from a public URL.
Send a media message
/api/v1/send/mediaSend an image, video, audio file, document, or sticker from a public URL.
/api/v1/send/mediaBearer keySend a media message
Send an image, video, audio file, document, or sticker from a public URL.
Request fields
typerequiredstringOne of image, video, audio, document, or sticker.
urlrequiredurlPublic HTTPS URL for the media file.
phonestringRecipient phone number in E.164 format. Use this or contact_uuid.
contact_uuiduuidExisting DripTell contact UUID. Use this or phone.
captionstringOptional media caption where supported.
filenamestringFilename shown for a document.
Possible errors
400type is invalid or url is not a public HTTP or HTTPS link.
401The bearer key is missing, invalid, or revoked.
422The 24-hour customer service window is closed. Send an approved template instead.
429The workspace send limit was reached. Wait for the Retry-After period before retrying.
curl --request POST "https://app.driptell.com/api/v1/send/media" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971500000000",
"type": "image",
"url": "https://cdn.example.com/promo.jpg",
"caption": "New arrivals"
}'{
"success": true,
"data": {
"message_id": 918275,
"status": "sent"
}
}POSTDownload received media
/api/send/media/fetchReturn a secure download URL or stream for media received from a WhatsApp contact.
Download received media
/api/send/media/fetchReturn a secure download URL or stream for media received from a WhatsApp contact.
/api/send/media/fetchBearer keyDownload received media
Return a secure download URL or stream for media received from a WhatsApp contact.
This endpoint intentionally sits outside the main /api/v1 path. The requested media must belong to the same workspace as the bearer key.
Request fields
idstringGeneric message or media identity.
wam_idstringWhatsApp message ID from messages[].id.
media_idstringMedia object ID from messages[].image.id, document.id, audio.id, or similar.
response_typestringSet to url for a JSON response. Omit it to stream the file.
Implementation notes
- Use response_type=url when your integration needs JSON.
- Without response_type=url, the successful response is the media file stream.
Possible errors
400No message ID, media ID, or chat UUID was supplied.
401The bearer key is missing, invalid, or revoked.
404The media is not in this workspace or is no longer available.
curl --request POST "https://app.driptell.com/api/send/media/fetch" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"wam_id": "wamid.HBgMOTcxNTg1OTQxMjAzFQIAEhgWM0VCMDg5M0QwQzM3MDRCMjZDQUQ2QwA=",
"response_type": "url"
}'{
"statusCode": 200,
"success": true,
"message": "Media URL generated successfully.",
"data": {
"media_url": "https://app.driptell.com/api/media/3511",
"media_id": 3511,
"file_name": "Customer document.pdf",
"mime_type": "application/pdf"
}
}POSTSend a location
/api/v1/send/locationSend a WhatsApp map pin inside the 24-hour customer service window.
Send a location
/api/v1/send/locationSend a WhatsApp map pin inside the 24-hour customer service window.
/api/v1/send/locationBearer keySend a location
Send a WhatsApp map pin inside the 24-hour customer service window.
Request fields
latituderequirednumberLocation latitude.
longituderequirednumberLocation longitude.
namestringLocation name.
addressstringDisplay address.
phonestringRecipient phone number in E.164 format. Use this or contact_uuid.
contact_uuiduuidExisting DripTell contact UUID. Use this or phone.
Possible errors
401The bearer key is missing, invalid, or revoked.
422The 24-hour customer service window is closed. Send an approved template instead.
429The workspace send limit was reached. Wait for the Retry-After period before retrying.
curl --request POST "https://app.driptell.com/api/v1/send/location" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971500000000",
"latitude": 25.1972,
"longitude": 55.2744,
"name": "Dubai Mall"
}'{
"success": true,
"data": {
"message_id": 918277,
"status": "sent"
}
}POSTSend contact cards
/api/v1/send/contactsSend one or more WhatsApp contact-card payloads.
Send contact cards
/api/v1/send/contactsSend one or more WhatsApp contact-card payloads.
/api/v1/send/contactsBearer keySend contact cards
Send one or more WhatsApp contact-card payloads.
Request fields
contactsrequiredobject[]One to ten WhatsApp contact-card objects.
phonestringRecipient phone number in E.164 format. Use this or contact_uuid.
contact_uuiduuidExisting DripTell contact UUID. Use this or phone.
Possible errors
400contacts is empty or contains more than ten cards.
401The bearer key is missing, invalid, or revoked.
422The 24-hour customer service window is closed. Send an approved template instead.
429The workspace send limit was reached. Wait for the Retry-After period before retrying.
curl --request POST "https://app.driptell.com/api/v1/send/contacts" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971500000000",
"contacts": [
{
"name": {
"formatted_name": "Support Team"
},
"phones": [
{
"phone": "+971500000001",
"type": "WORK"
}
]
}
]
}'{
"success": true,
"data": {
"message_id": 918278,
"status": "sent"
}
}POSTSend catalog products
/api/v1/send/productSend a single product or multi-product WhatsApp catalog message.
Send catalog products
/api/v1/send/productSend a single product or multi-product WhatsApp catalog message.
/api/v1/send/productBearer keySend catalog products
Send a single product or multi-product WhatsApp catalog message.
Request fields
catalog_idrequiredstringMeta commerce catalog ID.
product_retailer_idstringRetailer ID for a single product.
productsobject[]Product sections for a multi-product message.
phonestringRecipient phone number in E.164 format. Use this or contact_uuid.
contact_uuiduuidExisting DripTell contact UUID. Use this or phone.
Implementation notes
- Orders submitted from catalog carts are stored in WhatsApp commerce history.
Possible errors
400catalog_id or product identifiers are missing.
401The bearer key is missing, invalid, or revoked.
422The 24-hour customer service window is closed. Send an approved template instead.
429The workspace send limit was reached. Wait for the Retry-After period before retrying.
curl --request POST "https://app.driptell.com/api/v1/send/product" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"phone": "+971500000000",
"catalog_id": "123456789",
"product_retailer_id": "sku-100"
}'{
"success": true,
"data": {
"message_id": 918279,
"status": "sent"
}
}1 operation
Conversations
Read recent customer conversations or the message history of a single contact.
GETList chats or messages
/api/v1/chatsReturn recent workspace conversations, or the messages for one contact.
List chats or messages
/api/v1/chatsReturn recent workspace conversations, or the messages for one contact.
/api/v1/chatsBearer keyList chats or messages
Return recent workspace conversations, or the messages for one contact.
Without contact_uuid the response contains chats. With contact_uuid it contains that contact's messages, newest first.
Request fields
contact_uuiduuidWhen present, return this contact's message history instead of the conversation list.
pageintegerPage number starting at 1.
per_pageintegerItems per page from 1 to 100.
Possible errors
401The bearer key is missing, invalid, or revoked.
curl --request GET "https://app.driptell.com/api/v1/chats?contact_uuid=1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b&page=1&per_page=25" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"chats": [
{
"uuid": "c0ffee00-1111-2222-3333-444455556666",
"status": "open",
"last_message_at": "2026-06-16T08:45:00.000Z",
"last_message_preview": "Thanks, see you then!",
"unread_count": 0,
"contact_uuid": "1f0a9c2e-1b3d-4e5f-9a8b-7c6d5e4f3a2b",
"contact_name": "Jane Doe",
"phone": "+971500000000"
}
],
"page": 1,
"per_page": 25
}
}1 operation
Templates
Read approved WhatsApp template names, languages, components, and placeholders before sending.
GETList templates
/api/v1/templatesReturn approved message templates and their current structure.
List templates
/api/v1/templatesReturn approved message templates and their current structure.
/api/v1/templatesBearer keyList templates
Return approved message templates and their current structure.
Implementation notes
- Use name with POST /api/v1/send/template.
- Build the variables array in the same order as the {{n}} placeholders in the body.
Possible errors
401The bearer key is missing, invalid, or revoked.
curl --request GET "https://app.driptell.com/api/v1/templates" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"templates": [
{
"uuid": "55556666-7777-8888-9999-aaaabbbbcccc",
"name": "order_update",
"category": "UTILITY",
"language": "en_US",
"status": "APPROVED",
"components": [
{
"type": "BODY",
"text": "Hi {{1}}, your order {{2}} has shipped."
}
],
"created_at": "2026-04-12T10:00:00.000Z"
}
]
}
}4 operations
Canned replies
Manage keyword-triggered automatic responses for repeat customer questions.
GETList canned replies
/api/v1/canned-repliesReturn every keyword-triggered reply configured in the workspace.
List canned replies
/api/v1/canned-repliesReturn every keyword-triggered reply configured in the workspace.
/api/v1/canned-repliesBearer keyList canned replies
Return every keyword-triggered reply configured in the workspace.
Possible errors
401The bearer key is missing, invalid, or revoked.
curl --request GET "https://app.driptell.com/api/v1/canned-replies" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"canned_replies": [
{
"uuid": "dddd1111-eeee-2222-ffff-333344445555",
"name": "Business hours",
"triggers": [
"hours",
"open"
],
"response": {
"type": "text",
"data": {
"text": "We are open 9am to 6pm, Sunday to Thursday."
},
"match": "contains"
},
"status": "active",
"updated_at": "2026-06-01T12:00:00.000Z"
}
]
}
}POSTCreate a canned reply
/api/v1/canned-repliesCreate a keyword-triggered automatic text reply.
Create a canned reply
/api/v1/canned-repliesCreate a keyword-triggered automatic text reply.
/api/v1/canned-repliesBearer keyCreate a canned reply
Create a keyword-triggered automatic text reply.
Request fields
namerequiredstringInternal reply name.
keywordsrequiredstring[]Words or phrases that trigger the reply.
textrequiredstringReply sent to the customer.
matchstringKeyword matching mode. For example, contains.
Possible errors
400name, keywords[], or text is missing.
401The bearer key is missing, invalid, or revoked.
curl --request POST "https://app.driptell.com/api/v1/canned-replies" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"name": "Business hours",
"keywords": [
"hours",
"open"
],
"text": "We are open 9am to 6pm.",
"match": "contains"
}'{
"success": true,
"data": {
"canned_reply": {
"uuid": "dddd1111-eeee-2222-ffff-333344445555",
"name": "Business hours",
"status": "active"
}
}
}PUTUpdate a canned reply
/api/v1/canned-replies/{uuid}Change the name, keywords, message text, match mode, or active state.
Update a canned reply
/api/v1/canned-replies/{uuid}Change the name, keywords, message text, match mode, or active state.
/api/v1/canned-replies/{uuid}Bearer keyUpdate a canned reply
Change the name, keywords, message text, match mode, or active state.
Request fields
uuidrequireduuidCanned reply UUID.
namestringUpdated internal name.
keywordsstring[]Updated trigger terms.
textstringUpdated customer reply.
matchstringUpdated match mode.
statusstringactive or inactive.
Possible errors
401The bearer key is missing, invalid, or revoked.
404No canned reply with that UUID exists.
curl --request PUT "https://app.driptell.com/api/v1/canned-replies/dddd1111-eeee-2222-ffff-333344445555" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"status": "inactive"
}'{
"success": true,
"data": {
"updated": true
}
}DELETEDelete a canned reply
/api/v1/canned-replies/{uuid}Soft-delete a canned reply.
Delete a canned reply
/api/v1/canned-replies/{uuid}Soft-delete a canned reply.
/api/v1/canned-replies/{uuid}Bearer keyDelete a canned reply
Soft-delete a canned reply.
Request fields
uuidrequireduuidCanned reply UUID.
Possible errors
401The bearer key is missing, invalid, or revoked.
404No canned reply with that UUID exists.
curl --request DELETE "https://app.driptell.com/api/v1/canned-replies/dddd1111-eeee-2222-ffff-333344445555" \
--header "Authorization: Bearer $DRIPTELL_API_KEY" \
--header "Accept: application/json"{
"success": true,
"data": {
"deleted": true
}
}Let events move the workflow.
Webhooks let connected systems react to DripTell activity without repeatedly polling the API.
Read the webhook guideVerify the sender
Accept HTTPS traffic only and validate the configured signature or shared secret before processing a payload.
Acknowledge quickly
Return a successful response, queue the real work, and keep slow systems outside the delivery request.
Make retries safe
Store the event identity and make repeated deliveries idempotent before changing customer or order state.
Keep delivery evidence
Record the event, response, timestamp, and downstream result so a workflow can be audited and replayed.
Errors and retries
Recover from the reason, not the status alone.
Read both the HTTP status and the response body. Retry only temporary failures, use idempotency for writes, and respect Retry-After whenever it is returned.
400Invalid request
A required field is missing or a supplied value cannot be accepted.
Correct the request before retrying.
401Authentication failed
The bearer key is missing, invalid, or revoked.
Replace the key and verify the workspace again.
404Resource not found
The resource does not exist inside the key's workspace.
Check the UUID and the workspace that issued the key.
409Resource conflict
The write conflicts with an existing customer record or identity.
Read the existing resource and reconcile the identity.
422Channel rule blocked the send
The request is valid but cannot be delivered under current channel rules.
Use an approved template or correct the required media or consent.
429Rate limit reached
The workspace reached its current send rate.
Respect Retry-After and retry with exponential backoff.
Ready to build
Start with one customer workflow and make it dependable.
Create a workspace key, verify it, and test one complete workflow before moving production traffic.