- A Retriever account with some credits.
curlandjq(brew install jq,apt install jq), anduuidgen(on Linux without it, the snippet reads/proc/sys/kernel/random/uuid). Or Node 18+, or Python 3.9+: see full scripts.
1
Create an API key (1 min)
- Open the Retriever app.
- Go to Settings → API keys.
- Click Create API key, then confirm with Create key.
- Copy the
ret_live_…key. It is shown only once.
2
Verify the key (15 s)
/credits has no /v1 prefix.3
Start a run (15 s)
A small request for a quick result:Generate the key once and keep it: sending the same request again with this key never creates a second run.Then send the request:
202 Accepted response (excerpt):outputasks the agent to publish its table under the keystartups. You will know exactly what to read in the last step.- Retriever created a workspace and a conversation. You will see them in the app too.
- If no
RUN_IDis printed, read the error above. A401means a wrong key. For a network error, a429or a5xx, run only theRUN_ID=$(curl …)command again, with the sameIDEMPOTENCY_KEY: you get the same run back instead of a second, billed run. Do not generate a new key for the same request.
4
Wait for completion (1 to 3 min)
queued does not count: a queued run starts on its own, so never create it again. See Runs per organization.- A network error, a
429or a5xxsays nothing about the run: run the loop again. - A
401or404means a wrong key or run id: fix it first. - The loop does not retry. For retries with backoff, see the shared Node client and Make your integrations robust.
5
Read the result (15 s)
row_schema: see Get a guaranteed table format.You made your first authenticated API call and got a prospect list.
Same flow in Node.js or Python
node quickstart.mjs (Node 18+) or python quickstart.py (pip install requests).
- Each script prints
IDEMPOTENCY_KEYbefore it creates the run, thenRUN_IDas soon as it is known. - On any failure, the script stops and prints the command that resumes it: with the same
IDEMPOTENCY_KEYwhile the run is not confirmed (the same key never creates a second run), withRUN_IDonce it is. - A
401or404means a wrong key or run id: fix it before resuming. - If you stop the script yourself (Ctrl-C), resume with
RUN_ID=<the printed id> node quickstart.mjs(orpython quickstart.py). If it stopped before printingRUN_ID, useIDEMPOTENCY_KEY=<the printed key>. Running it with neither creates a second run, which is billed. - The scripts do not retry. For retries with backoff on network errors,
429and5xx, see the shared Node client and Make your integrations robust.
Next steps
- Enforce result columns: Get a guaranteed table format.
- Enrich your own list: Enrich a list from your CRM.
- Understand runs, outputs, and artifacts: Runs.