Signup comes with $1 in credit. No subscription needed.Claim your $1
Docs: Quickstart: API
Get started

Quickstart: API

A first REST call in five minutes: signup, inspect, run, wallet.

A first real call in five minutes: sign up, find a capability, inspect its price, run it, read the wallet.

1. Create an account and a key

Sign up on the dashboard (password, Google, GitHub or an emailed code) and verify your email: the workspace unlocks with $1 of credit that runs real calls. Mint a key under API keys. It is shown only once, so store it now.

export ROUTERGROWTH_API_KEY=rg_live_...

Building an agent that speaks MCP? It can skip the key and connect with OAuth instead: see the MCP quickstart.

2. Find a capability

curl -X POST https://api.routergrowth.com/v1/discover \
  -d '{"query": "find a verified email for a person"}'

Discover is free and public: it searches the catalog, never executes a paid call, and returns candidates with status, providers and starting_price.

3. Inspect it

curl -X POST https://api.routergrowth.com/v1/inspect \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{"capability": "contact.find"}'

The response is the contract: input_schema, output_fields, per-provider offers with exact prices, and billing conditions. Inspect before the first run of a capability, and tell the user what it costs when that matters to them: they asked, they set a budget, or a batch would pass about $1.

4. Run it

curl -X POST https://api.routergrowth.com/v1/run \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -H "Idempotency-Key: my-unique-value-1" \
  -d '{
    "capability": "contact.find",
    "input": {"first_name": "Alex", "last_name": "Rivera", "company_domain": "example.com"},
    "routing": {"provider": "auto", "strategy": "best_value", "max_cost": "0.10"}
  }'

A successful response looks like:

{
  "run_id": "run_...",
  "status": "succeeded",
  "capability": "contact.find",
  "provider": "...",
  "routing_reason": "auto: best_value picked ...",
  "billing": {"currency": "USD", "quoted": "0.042", "charged": "0.042", "platform_funded": true},
  "timing": {"duration_ms": 842},
  "attempts": [{"provider": "...", "outcome": "succeeded", "duration_ms": 842, "detail": null}],
  "result": {"...": "..."},
  "request_id": "req_...",
  "created_at": "2026-09-02T09:30:00+00:00"
}

The Idempotency-Key header makes the call safe to retry: a replay returns the original run with an Idempotent-Replay: true response header instead of executing again.

5. Check the wallet and history

curl https://api.routergrowth.com/v1/wallet -H "Authorization: Bearer $ROUTERGROWTH_API_KEY"
curl https://api.routergrowth.com/v1/runs   -H "Authorization: Bearer $ROUTERGROWTH_API_KEY"
curl "https://api.routergrowth.com/v1/history?q=alex.rivera@example.com" -H "Authorization: Bearer $ROUTERGROWTH_API_KEY"

The last one is the run log read by subject: every run that mentions that person in its input or result, the outbound touches, and paid results you can reuse instead of buying again. Check it before enriching or messaging anyone (details).

Every key gets a web view of the same state, balance, keys, runs and usage, on the dashboard. Agents read it over the API; you read it in the browser.

6. Go one tier down when you need to

Discover also returns raw endpoints: one provider's own endpoint, with kind: "endpoint". Inspect one to get the provider's request shape, then run it with max_cost set, because a raw run has no quote and settles on the provider's measured cost after the call.

curl -X POST https://api.routergrowth.com/v1/discover \
  -d '{"query": "tiktok video comments", "kind": "endpoint"}'

curl -X POST https://api.routergrowth.com/v1/inspect \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{"provider": "dataforseo", "endpoint": "/v3/serp/google/organic/live/advanced"}'

curl -X POST https://api.routergrowth.com/v1/run \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{
    "provider": "dataforseo",
    "endpoint": "/v3/serp/google/organic/live/advanced",
    "input": {"keyword": "best crm", "location_code": 2840, "language_code": "en"},
    "routing": {"max_cost": "0.05"}
  }'

result.data is the provider's payload untouched. When discover says a capability wraps the endpoint, prefer the capability: normalized output, a quote, failover.

Next

Reading this as an agent? This page as markdown: /docs/quickstart-api.md · every page: /docs/llms.txt