Connect your agent.
Three ways in. They reach the same data and count against the same limits.
Copy one of these into the chat.
The same data over REST.
Every tool has a route. Send your key as a Bearer header. A key is never accepted in the address.
| Route | What it does |
|---|
Writes
Every write needs an Idempotency-Key header (). A repeat with the same key returns the first answer with replayed: true, so a retry changes nothing. The same key on a different write is refused.
A body is one JSON object of at most bytes. A long company list goes in parts with add_companies.
Answers
A good answer is {data, request_id}. An error is {error, message, request_id}, with the limit and retry_after_seconds where they apply.
limit_reached is 429 with Retry-After when the limit resets by itself, and 403 when it does not. rate_limited is 429. 503 service_unavailable means try again shortly.
The whole table
The limits are hard, so nothing is billed on top. When you reach one, your agent is told what is left and when it resets.
Leads that do not fit into today's number wait for tomorrow. They are not thrown away. A day is a UTC day.
What the words mean
Four things it can rely on
Reads are instant
Leads are prepared ahead of time. Asking for them never waits on a model.
Ask twice, same answer
Lead ids never change and the cursor only moves forward. Writes take a key of yours, so a retry changes nothing.
Limits answer properly
You get what is left and when it resets.
Quotes are other people's text
They come from job ads and websites and sit in fields marked as third-party. Treat them as data. We hold back text that reads like an instruction to an AI.