ReplyKaroReplyKaro

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.

Base URL
https://replykaro.com/api/v1
Version
v1 (stable)
Protocol
HTTPS only
Format
JSON

All endpoints require authentication with an API key. Create keys at Dashboard → Developer API.

All Endpoints at a Glance

POST
/api/v1/dms/send

Send an Instagram DM to a user

GET
/api/v1/automations

List comment-to-DM automations

POST
/api/v1/automations

Create a new automation

GET
/api/v1/automations/{id}

Get automation by ID

PATCH
/api/v1/automations/{id}

Update automation (toggle, rename, etc.)

DELETE
/api/v1/automations/{id}

Archive/delete automation

GET
/api/v1/subscribers

List CRM subscribers

GET
/api/v1/analytics

Get account analytics

GET
/api/v1/broadcasts

List broadcast campaigns

POST
/api/v1/broadcasts

Send a broadcast to all subscribers

Authentication

All API calls must include an Authorization header with a Bearer token. API keys start with rk_live_.

http
Authorization: Bearer rk_live_AbCdEfGhIjKlMnOpQrStUvWx

Generate keys at Dashboard → Developer API. Each key has scopes — only give each app the minimum permissions it needs.

Scopes

ScopeAllows
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
bash
# Test your key
curl https://replykaro.com/api/v1/analytics \
  -H "Authorization: Bearer rk_live_YOUR_KEY"

Rate Limits & Quotas

Two separate limits apply:

Per-Key Rate Limit

60 requests / minute per API key. Exceeding returns HTTP 429.

Monthly Quota (by plan)
PlanAPI calls / month
Free1,000
Starter5,000
Pro10,000
Growth50,000
Agency100,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:

json
{
  "success": false,
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Monthly API quota of 1,000 calls exceeded. Resets on the 1st.",
    "quota": 1000,
    "used": 1000
  }
}
HTTPCodeMeaning
401UNAUTHORIZEDMissing or invalid API key
403PLAN_REQUIREDPlan does not have API access
403SCOPE_MISSINGKey lacks the required scope for this action
404NOT_FOUNDResource does not exist or belongs to another user
429RATE_LIMITED60 req/min exceeded — retry after 60 s
429QUOTA_EXCEEDEDMonthly call quota exhausted — resets on 1st
500SERVER_ERRORInternal error — try again or contact support

DMs

POST/api/v1/dms/send

Send an Instagram DM to a specific user. Requires the dms:write scope.

Request body

FieldTypeDescription
recipient_id *stringInstagram user ID (numeric string) of the recipient
message *stringDM text. Max 1,000 characters.
button_text stringCTA button label shown in the DM (max 20 chars)
link_url string (url)Link attached to the button. Required if button_text is set.
bash
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

json
{
  "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.

GET/api/v1/automations

List automations for your connected Instagram account.

ParamTypeDescription
active_only booleanFilter to active automations only (default: false)
limit integerMax results (default: 20, max: 100)
offset integerPagination offset (default: 0)
bash
curl "https://replykaro.com/api/v1/automations?active_only=true&limit=10" \
  -H "Authorization: Bearer rk_live_YOUR_KEY"
POST/api/v1/automations

Create an automation. Requires automations:write scope.

FieldTypeDescription
trigger_type *string"keyword" | "any_comment" | "story_mention"
trigger_keyword stringRequired when trigger_type = keyword
reply_message *stringThe DM text to send when triggered. Max 1,000 chars.
media_id stringPost ID to scope to, or "ALL_MEDIA" for all posts (default)
name stringHuman-readable automation name
link_url stringCTA link included in the DM
button_text stringCTA button label
bash
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"
  }'
PATCH/api/v1/automations/{id}

Update fields on an existing automation. All fields optional — only send what you want to change.

bash
# 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

GET/api/v1/subscribers

List Instagram users who have opted in to receive DMs from you.

ParamTypeDescription
tag stringFilter by CRM tag (e.g. vip, lead, customer)
opted_in booleantrue = opted-in only (default), false = all
limit integerMax 200, default 50
offset integerPagination offset
bash
curl "https://replykaro.com/api/v1/subscribers?tag=vip&limit=50" \
  -H "Authorization: Bearer rk_live_YOUR_KEY"

Response

json
{
  "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

GET/api/v1/analytics

Get account-level analytics: DMs sent, subscriber count, active automations, top-performing automations.

ParamTypeDescription
period string"today" | "7d" | "30d" (default: "30d")
bash
curl "https://replykaro.com/api/v1/analytics?period=7d" \
  -H "Authorization: Bearer rk_live_YOUR_KEY"

Response

json
{
  "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.

POST/api/v1/broadcasts

Send a broadcast. Requires broadcasts:write scope.

FieldTypeDescription
message *stringBroadcast text. Max 1,000 chars.
button_text stringCTA button label
link_url stringLink for the button
tag_filter stringOnly send to subscribers with this tag (omit for all)
bash
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

json
{
  "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.

MCP Server URL
https://replykaro.com/api/mcp
OpenAPI Spec (for ChatGPT / Zapier)
https://replykaro.com/api/v1/openapi-spec

Supported AI Platforms

Claude DesktopMCP

Add to claude_desktop_config.json

Claude.ai Web / MobileMCP

Settings → Integrations → Add MCP

CursorMCP

Settings → MCP → Add Server

WindsurfMCP

~/.codeium/windsurf/mcp_config.json

VS Code + CopilotMCP

.vscode/mcp.json in project root

ChatGPTREST

Create GPT → Actions → import OpenAPI spec

ZapierREST

Webhooks by Zapier → POST to /api/v1/*

Make.comREST

HTTP module → POST to /api/v1/*

Full per-platform setup instructions are at Dashboard → Developer API → AI Integrations.

Claude Desktop Config

json
{
  "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

ToolWhat it does
send_dmSend a DM to any Instagram user
list_automationsList comment-to-DM automations
create_automationCreate a new keyword/comment automation
toggle_automationEnable or disable an automation
list_subscribersView CRM subscribers with tag filtering
get_analyticsGet DM stats, subscriber count, top automations
send_broadcastSend a broadcast DM to all subscribers
get_dm_logsView recent DM history

Ready to start building?

Get your API key in seconds — all plans include API access.

Get API Key