Overview
The ReplyKaro API lets you programmatically send Instagram DMs, manage comment-to-DM automations, view subscribers, and get analytics. It is a REST API that uses JSON for requests and responses.
All endpoints require authentication with an API key. Create keys at Dashboard → Developer API.
All Endpoints at a Glance
/api/v1/dms/sendSend an Instagram DM to a user
/api/v1/automationsList comment-to-DM automations
/api/v1/automationsCreate a new automation
/api/v1/automations/{id}Get automation by ID
/api/v1/automations/{id}Update automation (toggle, rename, etc.)
/api/v1/automations/{id}Archive/delete automation
/api/v1/subscribersList CRM subscribers
/api/v1/analyticsGet account analytics
/api/v1/broadcastsList broadcast campaigns
/api/v1/broadcastsSend a broadcast to all subscribers
Authentication
All API calls must include an Authorization header with a Bearer token. API keys start with rk_live_.
Authorization: Bearer rk_live_AbCdEfGhIjKlMnOpQrStUvWxGenerate keys at Dashboard → Developer API. Each key has scopes — only give each app the minimum permissions it needs.
Scopes
| Scope | Allows | |
|---|---|---|
| read | Read automations, subscribers, analytics | |
| dms:write | Send DMs (POST /dms/send) | |
| automations:write | Create/update/delete automations | |
| broadcasts:write | Send broadcasts to all subscribers | |
| full | All permissions above |
# Test your key
curl https://replykaro.com/api/v1/analytics \
-H "Authorization: Bearer rk_live_YOUR_KEY"Rate Limits & Quotas
Two separate limits apply:
60 requests / minute per API key. Exceeding returns HTTP 429.
| Plan | API calls / month |
|---|---|
| Free | 1,000 |
| Starter | 5,000 |
| Pro | 10,000 |
| Growth | 50,000 |
| Agency | 100,000 |
Quota resets on the 1st of each month. Shared between API calls and dashboard DM usage.
Errors
Errors return a consistent JSON body with a machine-readable code:
{
"success": false,
"error": {
"code": "QUOTA_EXCEEDED",
"message": "Monthly API quota of 1,000 calls exceeded. Resets on the 1st.",
"quota": 1000,
"used": 1000
}
}| HTTP | Code | Meaning |
|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | PLAN_REQUIRED | Plan does not have API access |
| 403 | SCOPE_MISSING | Key lacks the required scope for this action |
| 404 | NOT_FOUND | Resource does not exist or belongs to another user |
| 429 | RATE_LIMITED | 60 req/min exceeded — retry after 60 s |
| 429 | QUOTA_EXCEEDED | Monthly call quota exhausted — resets on 1st |
| 500 | SERVER_ERROR | Internal error — try again or contact support |
DMs
/api/v1/dms/sendSend an Instagram DM to a specific user. Requires the dms:write scope.
Request body
| Field | Type | Description |
|---|---|---|
| recipient_id * | string | Instagram user ID (numeric string) of the recipient |
| message * | string | DM text. Max 1,000 characters. |
| button_text | string | CTA button label shown in the DM (max 20 chars) |
| link_url | string (url) | Link attached to the button. Required if button_text is set. |
curl -X POST https://replykaro.com/api/v1/dms/send \
-H "Authorization: Bearer rk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipient_id": "123456789",
"message": "Hey! Here is the link you asked for 👇",
"button_text": "Shop Now",
"link_url": "https://yoursite.com/product"
}'Response
{
"success": true,
"message_id": "ig_msg_abc123",
"recipient_id": "123456789"
}Automations
Automations trigger a DM whenever someone comments a keyword (or any comment, or a story mention) on your posts.
/api/v1/automationsList automations for your connected Instagram account.
| Param | Type | Description |
|---|---|---|
| active_only | boolean | Filter to active automations only (default: false) |
| limit | integer | Max results (default: 20, max: 100) |
| offset | integer | Pagination offset (default: 0) |
curl "https://replykaro.com/api/v1/automations?active_only=true&limit=10" \
-H "Authorization: Bearer rk_live_YOUR_KEY"/api/v1/automationsCreate an automation. Requires automations:write scope.
| Field | Type | Description |
|---|---|---|
| trigger_type * | string | "keyword" | "any_comment" | "story_mention" |
| trigger_keyword | string | Required when trigger_type = keyword |
| reply_message * | string | The DM text to send when triggered. Max 1,000 chars. |
| media_id | string | Post ID to scope to, or "ALL_MEDIA" for all posts (default) |
| name | string | Human-readable automation name |
| link_url | string | CTA link included in the DM |
| button_text | string | CTA button label |
curl -X POST https://replykaro.com/api/v1/automations \
-H "Authorization: Bearer rk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Link in bio automation",
"media_id": "ALL_MEDIA",
"trigger_type": "keyword",
"trigger_keyword": "link",
"reply_message": "Here is the link! 👇",
"link_url": "https://yoursite.com",
"button_text": "Open"
}'/api/v1/automations/{id}Update fields on an existing automation. All fields optional — only send what you want to change.
# Toggle off
curl -X PATCH https://replykaro.com/api/v1/automations/auto_abc123 \
-H "Authorization: Bearer rk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"is_active": false}'Subscribers
/api/v1/subscribersList Instagram users who have opted in to receive DMs from you.
| Param | Type | Description |
|---|---|---|
| tag | string | Filter by CRM tag (e.g. vip, lead, customer) |
| opted_in | boolean | true = opted-in only (default), false = all |
| limit | integer | Max 200, default 50 |
| offset | integer | Pagination offset |
curl "https://replykaro.com/api/v1/subscribers?tag=vip&limit=50" \
-H "Authorization: Bearer rk_live_YOUR_KEY"Response
{
"subscribers": [
{
"id": "sub_xyz",
"instagram_user_id": "123456789",
"username": "john_doe",
"tags": ["vip"],
"opted_in": true,
"created_at": "2026-01-15T10:00:00Z"
}
],
"total": 142,
"limit": 50,
"offset": 0
}Analytics
/api/v1/analyticsGet account-level analytics: DMs sent, subscriber count, active automations, top-performing automations.
| Param | Type | Description |
|---|---|---|
| period | string | "today" | "7d" | "30d" (default: "30d") |
curl "https://replykaro.com/api/v1/analytics?period=7d" \
-H "Authorization: Bearer rk_live_YOUR_KEY"Response
{
"period": "7d",
"dms_sent": 342,
"dms_this_month": 1204,
"total_subscribers": 891,
"active_automations": 5,
"top_automations": [
{ "name": "Link bio", "trigger_count": 180, "id": "auto_abc" },
{ "name": "Free guide", "trigger_count": 95, "id": "auto_xyz" }
]
}Broadcasts
Broadcasts send a DM to all opted-in subscribers at once.
/api/v1/broadcastsSend a broadcast. Requires broadcasts:write scope.
| Field | Type | Description |
|---|---|---|
| message * | string | Broadcast text. Max 1,000 chars. |
| button_text | string | CTA button label |
| link_url | string | Link for the button |
| tag_filter | string | Only send to subscribers with this tag (omit for all) |
curl -X POST https://replykaro.com/api/v1/broadcasts \
-H "Authorization: Bearer rk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "New product drop! 🔥 Limited stock.",
"button_text": "Shop Now",
"link_url": "https://yoursite.com/launch",
"tag_filter": "vip"
}'Response
{
"id": "bc_abc123",
"recipients": 234,
"status": "queued",
"created_at": "2026-08-07T10:00:00Z"
}AI & MCP Integration
ReplyKaro exposes an MCP (Model Context Protocol) server, which lets Claude Desktop, Cursor, Windsurf, VS Code, and other MCP clients control ReplyKaro from natural language — no code needed.
https://replykaro.com/api/mcphttps://replykaro.com/api/v1/openapi-specSupported AI Platforms
Add to claude_desktop_config.json
Settings → Integrations → Add MCP
Settings → MCP → Add Server
~/.codeium/windsurf/mcp_config.json
.vscode/mcp.json in project root
Create GPT → Actions → import OpenAPI spec
Webhooks by Zapier → POST to /api/v1/*
HTTP module → POST to /api/v1/*
Full per-platform setup instructions are at Dashboard → Developer API → AI Integrations.
Claude Desktop Config
{
"mcpServers": {
"replykaro": {
"url": "https://replykaro.com/api/mcp",
"headers": {
"Authorization": "Bearer rk_live_YOUR_KEY"
}
}
}
}After restarting Claude Desktop you can say things like:
- "Send a DM to Instagram user 123456789 about my product launch"
- "Create an automation that replies to anyone who comments 'link'"
- "How many DMs did I send this month?"
- "Pause all my active automations"
MCP Tools Exposed
| Tool | What it does |
|---|---|
| send_dm | Send a DM to any Instagram user |
| list_automations | List comment-to-DM automations |
| create_automation | Create a new keyword/comment automation |
| toggle_automation | Enable or disable an automation |
| list_subscribers | View CRM subscribers with tag filtering |
| get_analytics | Get DM stats, subscriber count, top automations |
| send_broadcast | Send a broadcast DM to all subscribers |
| get_dm_logs | View recent DM history |