API Reference

Inherit REST API

Automate handoff creation, brief generation, and CRM workflows. All API calls require an API key available from your API Keys dashboard.

Authentication

All requests must include an Authorization header with your API key as a Bearer token. API keys are scoped to your account and can be rotated from your dashboard.

Authorization: Bearer inh_live_xxxxxxxxxxxxxxxxxxxxxxxx

Requests without a valid key return 401 Unauthorized. Keep your API key secret — never expose it in client-side code.

Base URL

https://www.useinherit.com/api

All endpoints are HTTPS only. HTTP requests are not accepted.

Handoffs

Core resource

A handoff represents one rep-to-rep transition event. Each handoff contains one or more account briefs.

GET

/api/handoffs

List all handoffs for the authenticated user, ordered by creation date descending.

Returns: { handoffs: [{ id, name, status, crm_type, created_at, briefs: [{ count }] }] }

POST

/api/handoffs

Create a new handoff.

Request body

{
  "name": "Q2 West Coast Transition",   // required
  "crm_type": "csv"                     // required: "csv" | "hubspot" | "salesforce"
}

Returns: { handoff: { id, name, status, crm_type, created_at } }

GET

/api/handoffs/:id

Get a single handoff by ID, including its briefs.

PATCH

/api/handoffs/:id

Update handoff status or user_status.

{
  "user_status": "in_progress"   // "active" | "in_progress" | "handed_off" | "complete"
}

Briefs

Core resource

Briefs are AI-generated account summaries within a handoff. Each brief covers one account.

GET

/api/briefs?handoff_id=:id

List all briefs for a handoff.

Returns: { briefs: [{ id, account_name, account_value, deal_stage, key_contact, relationship_summary, next_steps, risk_factors, created_at }] }

POST

/api/briefs

Generate AI briefs for a set of accounts within a handoff.

Request body

{
  "handoff_id": "uuid",              // required
  "rows": [                          // required — max 100 accounts
    {
      "account_name": "Acme Corp",
      "industry": "SaaS",
      "annual_revenue": "1200000",
      "last_contact": "2024-11-15",
      "website": "acme.com"
    }
  ],
  "template_id": "saas",             // optional: "standard" | "technical" | "renewal" | "churn_risk" | "saas" | "financial_services" | "enterprise" | "manufacturing"
  "language": "es",                  // optional: "en" (default) | "es" | "fr" | "de" | "pt" | "nl" | "ja" | "zh" | "ko"
  "knowledge_context": "string"      // optional: outgoing rep notes (max 2,000 chars)
}

Returns: { results: [{ success, brief, error? }] }

This endpoint is rate-limited. Brief generation takes 1–3 seconds per account.

CRM Write-back

Push generated brief summaries back as notes to HubSpot or Salesforce accounts. Requires an active CRM connection in your Integrations settings.

POST

/api/handoffs/:id/push-crm

Push all briefs in a handoff as notes to the connected CRM.

Returns: { pushed: number, skipped: number, errors: string[] }

Webhook trigger

Enterprise

Trigger handoff creation automatically from your CRM or HRIS system when a rep change is detected. Requires an Enterprise plan and a webhook key from Integrations.

POST

/api/webhooks/rep-change

Create a handoff + generate briefs via webhook.

Send the request body as JSON with header x-inherit-signature: hex(HMAC-SHA256(WEBHOOK_SECRET_KEY, raw_body)).

{
  "webhook_key": "wk_your_user_webhook_key",
  "handoff_name": "Q2 West Coast Transition",
  "accounts": [
    {
      "account_name": "Acme Corp",
      "industry": "SaaS",
      "annual_revenue": "1200000",
      "last_contact": "2024-11-15"
    }
  ]
}

Example signing (Node.js):

const sig = crypto
  .createHmac('sha256', process.env.WEBHOOK_SECRET_KEY)
  .update(rawBody)
  .digest('hex')
fetch('https://www.useinherit.com/api/webhooks/rep-change', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'x-inherit-signature': sig },
  body: rawBody,
})

Returns: { handoff_id, handoff_url, brief_count, results }

Error codes

200OKRequest succeeded
201CreatedResource created successfully
400Bad RequestMissing or invalid parameters
401UnauthorizedMissing or invalid API key
402Payment RequiredPlan limit reached — upgrade required
403ForbiddenYou do not own this resource, or CRM not connected
404Not FoundResource does not exist
429Too Many RequestsRate limit exceeded — retry after a few seconds
500Internal Server ErrorSomething went wrong on our end

Full example — curl

Create a handoff and generate a brief in two API calls:

# 1. Create a handoff
curl -X POST https://www.useinherit.com/api/handoffs \
  -H "Authorization: Bearer inh_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "Q2 West Transition", "crm_type": "csv"}'

# → { "handoff": { "id": "abc-123", ... } }

# 2. Generate briefs
curl -X POST https://www.useinherit.com/api/briefs \
  -H "Authorization: Bearer inh_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "handoff_id": "abc-123",
    "template_id": "saas",
    "rows": [{
      "account_name": "Acme Corp",
      "industry": "SaaS",
      "annual_revenue": "1200000",
      "last_contact": "2024-11-15"
    }]
  }'

Ready to integrate?

Get your API key from the dashboard — available on all paid plans.

Get your API key →