{
  "name": "Cora API",
  "version": "v1",
  "description": "Agent-first REST API for Cora. Two products: Outreach (AI agents that call and email your leads) and Money Recovery (Cora phones the customers who owe you and texts them your payment link).",
  "products": {
    "outreach": {
      "signup": "POST /v1/signup with {\"product\":\"outreach\"}",
      "endpoints_prefix": "/v1/{leads,agents,outreach,phone-numbers,activity,stats}"
    },
    "money_recovery": {
      "signup": "POST /v1/signup with {\"product\":\"money_recovery\"}",
      "endpoints_prefix": "/v1/recovery",
      "start_here": "GET /v1/recovery"
    }
  },
  "documentation_url": "https://www.cora-intelligence.com/api/v1/docs",
  "signup_url": "https://www.cora-intelligence.com/for-agents",
  "getting_started": "POST /v1/signup to self-provision (choose product: outreach | money_recovery); build for free; subscribe via /v1/billing/checkout to send real outreach. For Money Recovery, GET /v1/recovery reports exactly what is still blocking calls.",
  "authentication": "Bearer API key: Authorization: Bearer cora_live_...",
  "conventions": {
    "pagination": "cursor-based; { data, has_more, next_cursor }; params limit (1-100) + cursor",
    "errors": "{ error: { type, code, message, param, status } }",
    "idempotency": "Idempotency-Key header; required on POST /v1/outreach/call, /v1/recovery/accounts and /v1/recovery/dispatch",
    "rate_limit": "120 req/min/key; X-RateLimit-* headers"
  },
  "endpoints": [
    {
      "method": "POST",
      "path": "/v1/signup",
      "tool": null,
      "description": "Create a Cora account + API key with no human steps (no auth; rate-limited). REST-only — no MCP tool (you need an account before you can connect the MCP).",
      "no_auth": true,
      "url": "https://www.cora-intelligence.com/api/v1/signup"
    },
    {
      "method": "GET",
      "path": "/v1/billing/plans",
      "tool": "list_plans",
      "description": "List subscription plans.",
      "url": "https://www.cora-intelligence.com/api/v1/billing/plans"
    },
    {
      "method": "POST",
      "path": "/v1/billing/checkout",
      "tool": "create_checkout",
      "description": "Create a Stripe checkout link for a chosen plan.",
      "url": "https://www.cora-intelligence.com/api/v1/billing/checkout"
    },
    {
      "method": "POST",
      "path": "/v1/billing/portal",
      "tool": null,
      "description": "Get a billing management portal link. REST-only — no MCP tool.",
      "url": "https://www.cora-intelligence.com/api/v1/billing/portal"
    },
    {
      "method": "GET",
      "path": "/v1/projects",
      "tool": "list_projects",
      "description": "List your accessible projects.",
      "url": "https://www.cora-intelligence.com/api/v1/projects"
    },
    {
      "method": "POST",
      "path": "/v1/projects",
      "tool": "create_project",
      "description": "Create a new project in your company.",
      "url": "https://www.cora-intelligence.com/api/v1/projects"
    },
    {
      "method": "GET",
      "path": "/v1/credits",
      "tool": "get_credits",
      "description": "Remaining account credits.",
      "url": "https://www.cora-intelligence.com/api/v1/credits"
    },
    {
      "method": "GET",
      "path": "/v1/leads",
      "tool": "list_leads",
      "description": "List/search leads.",
      "url": "https://www.cora-intelligence.com/api/v1/leads"
    },
    {
      "method": "POST",
      "path": "/v1/leads",
      "tool": "create_lead",
      "description": "Create a lead.",
      "url": "https://www.cora-intelligence.com/api/v1/leads"
    },
    {
      "method": "POST",
      "path": "/v1/leads/bulk",
      "tool": "create_leads_bulk",
      "description": "Bulk-create up to 500 leads (email dupes skipped).",
      "url": "https://www.cora-intelligence.com/api/v1/leads/bulk"
    },
    {
      "method": "GET",
      "path": "/v1/leads/{lead_id}",
      "tool": "get_lead",
      "description": "Lead detail with recent calls/emails/activity.",
      "url": "https://www.cora-intelligence.com/api/v1/leads/{lead_id}"
    },
    {
      "method": "PATCH",
      "path": "/v1/leads/{lead_id}",
      "tool": "update_lead",
      "description": "Update a lead.",
      "url": "https://www.cora-intelligence.com/api/v1/leads/{lead_id}"
    },
    {
      "method": "GET",
      "path": "/v1/leads/{lead_id}/calls",
      "tool": "get_lead_calls",
      "description": "Call history for a lead.",
      "url": "https://www.cora-intelligence.com/api/v1/leads/{lead_id}/calls"
    },
    {
      "method": "GET",
      "path": "/v1/leads/{lead_id}/emails",
      "tool": "get_lead_emails",
      "description": "Email history for a lead.",
      "url": "https://www.cora-intelligence.com/api/v1/leads/{lead_id}/emails"
    },
    {
      "method": "GET",
      "path": "/v1/leads/{lead_id}/sms",
      "tool": "get_lead_sms",
      "description": "Two-way SMS conversation for a lead.",
      "url": "https://www.cora-intelligence.com/api/v1/leads/{lead_id}/sms"
    },
    {
      "method": "GET",
      "path": "/v1/calls/{call_id}/audio",
      "tool": "get_call_audio",
      "description": "Stream a call recording (404 if none).",
      "url": "https://www.cora-intelligence.com/api/v1/calls/{call_id}/audio"
    },
    {
      "method": "GET",
      "path": "/v1/activity",
      "tool": "get_activity",
      "description": "Recent project activity feed.",
      "url": "https://www.cora-intelligence.com/api/v1/activity"
    },
    {
      "method": "GET",
      "path": "/v1/agents",
      "tool": "list_agents",
      "description": "List agents.",
      "url": "https://www.cora-intelligence.com/api/v1/agents"
    },
    {
      "method": "POST",
      "path": "/v1/agents",
      "tool": "create_agent",
      "description": "Create an agent.",
      "url": "https://www.cora-intelligence.com/api/v1/agents"
    },
    {
      "method": "GET",
      "path": "/v1/agents/{agent_id}",
      "tool": "get_agent",
      "description": "Agent detail + stats.",
      "url": "https://www.cora-intelligence.com/api/v1/agents/{agent_id}"
    },
    {
      "method": "PATCH",
      "path": "/v1/agents/{agent_id}",
      "tool": "update_agent",
      "description": "Update an agent.",
      "url": "https://www.cora-intelligence.com/api/v1/agents/{agent_id}"
    },
    {
      "method": "POST",
      "path": "/v1/agents/{agent_id}/assign-leads",
      "tool": "assign_leads_to_agent",
      "description": "Assign leads to an agent.",
      "url": "https://www.cora-intelligence.com/api/v1/agents/{agent_id}/assign-leads"
    },
    {
      "method": "POST",
      "path": "/v1/outreach/call",
      "tool": "trigger_call",
      "description": "Place a REAL phone call (Idempotency-Key required).",
      "side_effect": true,
      "url": "https://www.cora-intelligence.com/api/v1/outreach/call"
    },
    {
      "method": "POST",
      "path": "/v1/outreach/email",
      "tool": "send_email",
      "description": "Send a REAL email.",
      "side_effect": true,
      "url": "https://www.cora-intelligence.com/api/v1/outreach/email"
    },
    {
      "method": "GET",
      "path": "/v1/phone-numbers",
      "tool": "list_phone_numbers",
      "description": "List phone numbers.",
      "url": "https://www.cora-intelligence.com/api/v1/phone-numbers"
    },
    {
      "method": "POST",
      "path": "/v1/phone-numbers/{phone_id}/assign",
      "tool": "assign_phone_number",
      "description": "Assign a number to an agent.",
      "url": "https://www.cora-intelligence.com/api/v1/phone-numbers/{phone_id}/assign"
    },
    {
      "method": "GET",
      "path": "/v1/stats",
      "tool": "get_stats",
      "description": "Project metrics.",
      "url": "https://www.cora-intelligence.com/api/v1/stats"
    },
    {
      "method": "GET",
      "path": "/v1/recovery",
      "tool": "get_recovery_status",
      "description": "Money Recovery status: connections, ledger totals, ageing, free allowance, and a blockers list naming what is still stopping a call.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery"
    },
    {
      "method": "POST",
      "path": "/v1/recovery/enable",
      "tool": "enable_recovery",
      "description": "Create the collections agent and switch Money Recovery on.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/enable"
    },
    {
      "method": "POST",
      "path": "/v1/recovery/accounts",
      "tool": "create_recovery_accounts",
      "description": "Add overdue invoices to the ledger (Idempotency-Key required).",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/accounts"
    },
    {
      "method": "GET",
      "path": "/v1/recovery/accounts",
      "tool": "list_recovery_accounts",
      "description": "List overdue accounts, most-overdue first.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/accounts"
    },
    {
      "method": "GET",
      "path": "/v1/recovery/accounts/{account_id}",
      "tool": "get_recovery_account",
      "description": "One overdue account.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/accounts/{account_id}"
    },
    {
      "method": "PATCH",
      "path": "/v1/recovery/accounts/{account_id}",
      "tool": "update_recovery_account",
      "description": "Correct an account — most usefully, add a phone number.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/accounts/{account_id}"
    },
    {
      "method": "POST",
      "path": "/v1/recovery/accounts/{account_id}/stop",
      "tool": "stop_recovery_account",
      "description": "Stop chasing one debtor. Ungated.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/accounts/{account_id}/stop"
    },
    {
      "method": "POST",
      "path": "/v1/recovery/agent",
      "tool": "configure_recovery_agent",
      "description": "Configure the collections caller (AI disclosure is always enforced).",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/agent"
    },
    {
      "method": "POST",
      "path": "/v1/recovery/connections/stripe",
      "tool": "connect_recovery_stripe",
      "description": "Connect the creditor's Stripe with a restricted key, or get a human handoff link.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/connections/stripe"
    },
    {
      "method": "POST",
      "path": "/v1/recovery/dispatch",
      "tool": "dispatch_recovery_calls",
      "description": "Queue REAL collections calls (Idempotency-Key required).",
      "side_effect": true,
      "url": "https://www.cora-intelligence.com/api/v1/recovery/dispatch"
    },
    {
      "method": "POST",
      "path": "/v1/recovery/stop",
      "tool": "pause_recovery",
      "description": "Project-wide kill switch for collections calling. Ungated.",
      "url": "https://www.cora-intelligence.com/api/v1/recovery/stop"
    }
  ]
}