ChatofyDevelopers
REST APIMCP Server (AI)New
API KeysWebhooks
REST API Documentation
/
Getting Started
API Resources
API v1.0 Live
Developer Platform/REST API v1/Overview & Guides

Chatofy Developer API

Build automated WhatsApp-first workflows, send outbound campaign broadcasts, and integrate your CRM with programmatic HTTP endpoints.

Quick Start Guide

Recommended

Send your first WhatsApp message via cURL in under 60 seconds.

Authentication & Keys

Bearer token authorization headers and API key security practices.

Endpoint Reference

Detailed schemas for messages, contacts, campaigns, and tags.

Webhook Subscriptions

Real-time

Receive real-time HTTP POST notifications on incoming WhatsApp messages.

1. Platform Introduction

The Chatofy Developer REST API enables programmatic access to your WhatsApp Business ecosystem. Instead of manually navigating CRM dashboards, your external servers, webhooks, or third-party platforms (like Zapier, Make, and backend microservices) can dispatch messages and manage leads.

Common API Workflows

Send plain text or media WhatsApp messages
Trigger pre-approved Meta message templates
Synchronize lead attributes, custom tags, and notes
Broadcast automated mass message campaigns
Audience: Software engineers and system integrators. All API responses use standard HTTP status codes and JSON envelopes.

2. Base URL & Encoding

All API requests are sent over HTTPS to the canonical production gateway. All payload bodies and responses use UTF-8 JSON encoding.

Production Base URLhttps://app.chatofy.in/api/v1
Content-Type: application/json

3. Bearer Token Authentication

Every request must provide your secret API key in the standard HTTP Authorization header using the Bearer scheme.

cURL Authentication Example
1curl -X GET "https://app.chatofy.in/api/v1/contacts" \
2 -H "Authorization: Bearer cfy_sk_live_yourSecretKey" \
3 -H "Content-Type: application/json"
Protect your secret tokens: Never include API keys in client-side frontends or public source control repositories. Treat your key as you would a database password.

4. API Key Lifecycle & Quotas

Organizations can provision and revoke secret keys directly in their workspace settings. Each key inherits permissions scoped to your organization.

Generation & Rolling

Generate fresh tokens with custom identifiers. When rolling credentials, revoke your existing key to provision a replacement.

Encrypted Storage

Tokens are encrypted at rest with AES-256-GCM. SHA-256 hashes are used for instant constant-time lookup.

Go to API Key Management

5. Rate Limits & Throttling

To guarantee high availability and protect WhatsApp Cloud API upstream thresholds, requests are throttled per organization token:

Plan TierRequests / MinuteBurst AllowanceStatus
Standard Plan100 req / min200 requestsActive
Professional Plan500 req / min1,000 requestsRecommended
Enterprise / Agency2,000 req / min5,000 requestsDedicated

When limits are exceeded, the API returns a 429 Too Many Requests response. Inspect the standard Retry-After response header for backoff recommendations.


6. Error Response Schema

Chatofy returns standard HTTP status codes with a predictable JSON envelope indicating error details:

HTTP CodeError CodeDescription & Remediation
200 / 201SUCCESSOperation completed as requested.
400BAD_REQUESTMissing or invalid payload fields or parameters.
401UNAUTHORIZEDMissing or invalid Bearer authentication token.
403FORBIDDENInsufficient permissions or feature not allowed on your plan.
429RATE_LIMIT_EXCEEDEDToo many requests dispatched within the minute window.
500INTERNAL_SERVER_ERRORUnexpected platform error. Retry with exponential backoff.

7. Timestamps & Timezone

Every timestamp returned by the API (created_at, updated_at, current_period_end, webhook timestamp and so on) uses ISO 8601 with a fixed Indian Standard Time offset and no fractional seconds:

Timestamp format
1YYYY-MM-DDTHH:mm:ss+05:30
22026-09-23T01:07:44+05:30

Asia/Kolkata is the default timezone for the whole platform until an account chooses another one for its own settings. Send schedule times without an offset (for example 2026-10-14T21:30) and they are read as IST; an explicit Z or offset is honoured and converted.

Parsing: the offset is part of the value, so any ISO 8601 client parses it to the same instant as the equivalent UTC time.

8. Quick Start: Dispatch a Message in 60s

Run this cURL snippet in your terminal to dispatch a live WhatsApp message:

1. Send Text Message via cURL
1curl -X POST "https://app.chatofy.in/api/v1/contact/919000000000/send-message" \
2 -H "Authorization: Bearer YOUR_SECRET_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "text": {
6 "body": "Hello from Chatofy API! 🚀",
7 "preview_url": false
8 }
9 }'
One chat per contact: every message sent to a number lands in that contact's single inbox chat, whichever business phone is used. Sending to a contact whose chat is closed reopens that same chat; a second chat is never created.
Try without code: You can execute and verify live API requests directly inside your browser playground at Settings → API Keys.


9. MCP Server for AI Assistants (Model Context Protocol)

Dedicated AI Developer Portal Available

Connect Chatofy to Claude, Cursor & Custom GPTs

Model Context Protocol (MCP) and REST APIs serve distinct purposes. To keep your developer experience clean and focused, we provide a dedicated MCP Developer Portal featuring full client setup guides, interactive tool schemas, and copyable prompt workflows.

26
Dynamic AI Tools
7
Grounding Resources
6
Workflow Prompts
1-Click
OAuth 2.0 PKCE
Open MCP Developer PortalLearn about the MCP Specification

Instant 1-Click Connection for Claude Code CLI:

Claude Code CLI Registration
1claude mcp add --transport http chatofy https://app.chatofy.in/api/mcp
2claude mcp login chatofy

10. All Endpoints Reference

Explore full request and response specifications for each resource endpoint:

Getting Started

Account & Profile

GET/api/v1/account
Get Account Details

Contacts

GET/api/v1/contacts
List Contacts
POST/api/v1/contact/create
Create Contact
POST/api/v1/contact/update/{phone}
Update Contact
POST/api/v1/contacts/upsert
Upsert Contact by Phone
POST/api/v1/contacts/bulk
Bulk Create Contacts
GET/api/v1/contacts/duplicates
List Duplicate Contacts
POST/api/v1/contacts/merge
Merge Duplicate Contacts
POST/api/v1/contacts/import/preview
CSV Import Pre-flight Preview
POST/api/v1/contacts/import/commit
Commit CSV Import
GET/api/v1/contacts/{id}/timeline
Get Contact Activity Timeline
GET/api/v1/contacts/search
Search Contacts (Typo-Tolerant)
GET/api/v1/contacts/{id}/products
List Contact Product Inquiries
POST/api/v1/contacts/{id}/products
Link Product or Update Interest Level
DELETE/api/v1/contacts/{id}/products/{productId}
Unlink Product Inquiry
POST/api/v1/contacts/{id}/activities
Log Activity or Offline Interaction
GET/api/v1/contacts/{id}/followups
Get Follow-Up Cadence & History
POST/api/v1/contacts/{id}/followups
Log Follow-Up Check-in

Messages

POST/api/v1/contact/{phone}/send-message
Send Text Message
POST/api/v1/contact/{phone}/send-interactive-message
Send Interactive Message
POST/api/v1/contact/{phone}/send-media-message
Send Media Message
POST/api/v1/contact/{phone}/send-media-message
Send Document
POST/api/v1/contact/{phone}/send-template-message
Send Template Message
POST/api/v1/contact/{phone}/send-template-message
Send Template (with Variables)
POST/api/v1/contact/{phone}/send-template-message
Send Template (Body Variables Only)
GET/api/v1/conversations
Get Conversations & Thread Memory
GET/api/v1/inbox/search-messages
Search Message Archive
POST/api/v1/inbox/conversations/{id}/snooze
Snooze Conversation
POST/api/v1/inbox/conversations/{id}/reopen
Reopen Snoozed Conversation
POST/api/v1/inbox/bulk
Batch Bulk Inbox Actions
GET/api/v1/inbox/conversations/{id}/media
Get Conversation Media Gallery
GET/api/v1/inbox/conversations/{id}/metadata
Get Conversation Metadata & Attributes
PATCH/api/v1/inbox/conversations/{id}/metadata
Update Conversation Metadata & Attributes

Templates

GET/api/v1/templates
List Templates
POST/api/v1/templates
Create Template

Campaigns

GET/api/v1/campaigns
List Campaigns
GET/api/v1/campaign/{id}
Get Campaign
GET/api/v1/campaign/{id}/logs
Campaign Logs

CRM Pipelines & Deals

GET/api/v1/products
List Products
POST/api/v1/products
Create Product
PATCH/api/v1/products/{id}
Update or Archive Product
PUT/api/v1/products/{id}/stages
Set Product Stage Override
GET/api/v1/tags
List Contact Tags
POST/api/v1/contact/tags
Add or Remove Contact Tag
DELETE/api/v1/contacts/{id}
Delete Contact
POST/api/v1/contacts/{id}/restore
Restore Contact
GET/api/v1/users
List Users / Team Members
GET/api/v1/pipelines
List Pipelines & Stages
POST/api/v1/pipelines
Create Pipeline
POST/api/v1/pipelines/{id}/stages
Create Pipeline Stage
PUT/api/v1/pipelines/{id}/stages
Reorder Pipeline Stages
PATCH/api/v1/pipelines/{id}/stages/{stageId}
Update Pipeline Stage
DELETE/api/v1/pipelines/{id}/stages/{stageId}
Archive Pipeline Stage
GET/api/v1/deals
List Deals
POST/api/v1/deals
Create Deal
POST/api/v1/deals/bulk
Bulk Create Deals
POST/api/v1/deals/{id}/move
Move Deal Stage
PATCH/api/v1/deals/{id}
Update Deal Attributes
DELETE/api/v1/deals/{id}
Delete Deal
POST/api/v1/deals/{id}/restore
Restore Deal
GET/api/v1/deals/search
Search Deals
GET/api/v1/deals/export
Export Deals (CSV / JSON)

Tasks & Follow-ups

GET/api/v1/tasks
List Tasks
POST/api/v1/tasks
Create Task
GET/api/v1/tasks/{id}
Get Task Details
PATCH/api/v1/tasks/{id}
Update Task
POST/api/v1/tasks/{id}/complete
Complete Task
POST/api/v1/tasks/{id}/snooze
Snooze Task
GET/api/v1/tasks/queue
Task Queue (Grouped by Owner)

Reports & Analytics

GET/api/v1/reports/pipeline
Pipeline Performance Report
GET/api/v1/reports/conversion
Stage Conversion & Funnel Report
GET/api/v1/reports/win-rate
Win Rate Report (By Owner & Source)
GET/api/v1/reports/followups
Follow-up Compliance Report
GET/api/v1/reports/velocity
Sales Velocity & Cycle Report
GET/api/v1/reports/sla
SLA Response Compliance Report
GET/api/v1/reports/export
Export CRM Metrics (CSV / JSON)

Chatbot Flows & Automations

GET/api/v1/flows
List Flows
POST/api/v1/flows/trigger
Trigger Flow

Model Context Protocol (MCP)

POST/api/mcp
MCP Streamable HTTP
POST/api/mcp/oauth/register
MCP OAuth 2.0 Dynamic Client Registration
POST/api/mcp/oauth/token
MCP OAuth 2.0 PKCE Token Exchange
GET/api/mcp/oauth/userinfo
MCP OAuth User & Workspace Info

© 2026 Chatofy. All rights reserved.

•Help Center & Wiki•Privacy Policy•Terms of Service
Powered byChatofy Cloud Architecture

On this page

  • Introduction
  • Base URL & Encodings
  • Bearer Authentication
  • Key Provisioning
  • Rate Limiting Limits
  • Standard Error Codes
  • Timestamps & Timezone
  • Quick Start Tutorial
  • MCP Server for AI Assistants
  • All API Endpoints
Live Interactive Tester

Test and run WhatsApp API calls directly in the sandbox playground.

Launch API Sandbox