mySDRDocs

API reference

API Introduction

Turn a company into leads your agent can approach. Base URL, authentication, and every endpoint.

View Markdown

The API turns companies into leads an agent can approach: look a company up, read a signal or its context, find the people in the roles you sell to, then enrich a contact. The worked path is From companies to leads. Keys are created under Connect assistant → API keys. Credit prices are on Credits & costs. The tools of the Signals MCP server, including preview_cost and max_credits, are on MCP.

Base URL

All requests go to:

https://mysdr.app/api/v1

Authentication

Every request must include your API key as a Bearer token in the Authorization header:

--header "Authorization: Bearer $MYSDR_API_KEY"

Create keys under Connect assistant → API keys in mySDR. Keep them secret: never put a key in client-side code or a public repository. Load the key from the environment variable MYSDR_API_KEY. A key starts with gtk_. A missing, invalid or revoked key is 401 on every route, including while an API is closed. A valid key while the Company API or the Signals API is closed for your organization answers 403 api_not_enabled on those routes, with what the key can do instead. Connecting an assistant is Connect your assistant. The assistant key is created under Connect assistant → Other → Create assistant key.

Request format

Send a JSON body with Content-Type: application/json. Field names are snake_case. Unknown fields and unknown query parameters are rejected with 400 rather than ignored, so a typo never silently drops a filter: the error names the parameter in param, says what the endpoint takes, and suggests the name you probably meant.

Response format

Every response is JSON and carries mySDR-Api-Version (2026-10-04; FounderMCP-Api-Version is a deprecated alias) and mySDR-Request-Id (FounderMCP-Request-Id is a deprecated alias). Paid endpoints add credits_used to the body and X-Credits-Used and X-Credits-Charged headers with the same number. When the wallet can be read they also send X-Credits-Remaining. GET /usage adds balance and today.credits_remaining.

Error responses

Every error has the same shape. Branch on error.type; the message is meant for people and can change.

{
  "error": {
    "type": "invalid_request",
    "message": "`page` must be a whole number from 1 to 100."
  }
}

Errors never cost credits.

HTTP status codes

  • 400 invalid_request — The body is not valid JSON, a field is unknown or has the wrong type, or a value is not allowed.
  • 401 authentication_error — The Authorization header is missing, or the key is unknown or revoked.
  • 403 permission_error — API access is not part of your plan, or your account is suspended.
  • 403 api_not_enabled — The key is valid, but the Signals API or the Company API is not enabled for your organization yet. The error says what this key can do.
  • 404 not_found — The endpoint, or the object you asked for (a search, a row, a campaign), does not exist.
  • 405 method_not_allowed — The path exists, but not with this HTTP method. The Allow header and the error name the methods it takes.
  • 429 rate_limit_error — More than 60 requests per minute, or more than 3 at the same time, on one key. Wait for the Retry-After header.
  • 429 daily_limit_reached — The request could take your organization over its daily credit limit. The limit resets at midnight (Europe/Brussels).
  • 402 insufficient_credits — The credit balance is lower than this request could cost. Nothing was charged. Add credits, or send a smaller request. The error includes code, fix and a link to the credits docs.
  • 502 upstream_error — The data source did not answer. Retry later.
  • 503 service_unavailable — The API is temporarily unavailable. Retry later.
  • 500 internal_error — Something went wrong on our side.

Rate limits

  • 60 requests per minute and 3 concurrent requests per key.
  • A daily credit limit per organization — 1,000 credits unless agreed otherwise — that resets at midnight Europe/Brussels.

Both answer with 429 and a Retry-After header. Prices are on Credits & costs.

Endpoints

People search, people enrich, the technology data (a company's tech stack, companies using a technology, and finding a technology) and usage answer for every valid key. Company search and enrich, signal, monitor and lead routes answer 403 api_not_enabled for a valid key while that API is closed, and 401 when the key is missing. A method a path does not take answers 405 method_not_allowed with an Allow header, before the key is checked (on /mcp: Allow: POST); a path that does not exist answers 404. The pages below document only routes that exist.

Enrichment

Company to leads

People enrichment

Company enrichment

Signals

Searches

Monitors

Webhooks

Your own signals

Outreach

A safe layer between your agent and LinkedIn

Activity

Campaigns

Exclusions

Agenda and stages

Leads table

Companies table

MCP and usage