disburse / docs

Quickstart

disburse turns one plain-English query into a ranked, structured list of the companies and people that fit, over a REST API or straight into your agent via MCP. This page gets you your first result in about a minute.

1. Get an API key

Create a key in the dashboard. Keys look like sk_live_…, or sk_test_… if you pick the test environment when creating one. Both are metered the same way; the prefix is what tells them apart in a log. Treat it like a password; it authenticates every request and is metered against your plan.

2. Make a request

Every endpoint is a POST under /v1, authenticated with a bearer token. The base URL is your deployment (e.g. https://api.disburse.dev).

bash
curl https://api.disburse.dev/v1/search/people \
  -H "Authorization: Bearer sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"query": "heads of growth at Series B fintechs in Australia", "limit": 5}'

You can also skip the natural-language parser and pass structured filters directly:

bash
curl https://api.disburse.dev/v1/search/companies \
  -H "Authorization: Bearer sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"location": {"country": "AU"}, "industry": ["software development"]}, "limit": 5}'

Need a whole list, not a page? Pass count and the server handles pagination, deduplication and quality filtering in one call — the response includes a summary saying exactly what came back and why it stopped:

bash
curl https://api.disburse.dev/v1/search/people \
  -H "Authorization: Bearer sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"query": "founders in Australia", "count": 200}'

3. Read the response

json
{
  "interpreted_text": "People with a job title like head of growth, in the fintech industry, located in AU.",
  "interpreted": { "entity": "person", "filters": { "title": ["head of growth"], "industry": ["fintech"], "location": { "country": "AU" } }, "limit": 5 },
  "results": [
    { "id": "pv1:l:ada-lovelace", "name": "Ada Lovelace", "title": "Head of Growth", "company_name": "Acme", "company_domain": "acme.com", "email": "ada@acme.com", "email_status": "valid" }
  ],
  "total": 128,
  "strong_matches": 41,
  "relaxed": [],
  "next_cursor": "eyJ…"
}
  • interpreted_text / interpreted: how your query was understood, in a sentence and as the structured query it compiled to.
  • results: the matched records; ids are stable and safe to store.
  • total: matches for the structured filters. On keyword searches strong_matches counts the rows that clearly match the words: quote that one for "how many".
  • relaxed: anything the engine changed to answer (a value it did not recognise, an employer it could not resolve). Empty means the query ran exactly as written.
  • next_cursor: pass it back as cursor to page; null when there are no more. For a whole list, prefer count.

Next steps

Stuck? Email support@disburse.dev with the X-Request-ID of the call that surprised you, and a founder will look at the log behind it.