Skip to main content
Everything below runs against the live service at https://agent.waterr.ai. If you already have a Waterr wai_ developer key, it works here as-is — no separate credential to provision. Otherwise see Authentication.
1

Create an inbox

The username becomes the address. Leave it out and one is generated.
Response
The inbox_id is the address itself, and it is what you pass in every subsequent URL.
2

Send a message

The response carries the stored Message, including the thread_id it was filed under. Hold onto that: it is how you follow up later without starting a new conversation.
If this is the very first contact with that recipient, see Limits first. Cold outbound is currently unreliable to major providers.
3

Receive the reply

When the customer replies, the service parses and threads it, then fires a message.received event. Register a webhook to catch it:
The response includes a secret — store it, it is shown once. Use it to verify the X-AgentInbox-Signature header on every delivery. See Events.
4

Reply on the thread

Reply to the message your webhook just received. Recipients are derived from the parent, so you do not pass to.
You can reply as many times as the conversation needs, and you can send on the thread later without an inbound message to reply to.

Giving your model the right text

Every stored message carries both the raw body and a cleaned one: Feed extracted_text to your model. On a long thread, text is mostly a transcript of the conversation quoted back at you, which wastes context and invites the model to reply to a message from two weeks ago.

A minimal agent loop

Return 2xx before you do the slow work. The dispatcher treats any other status as a failure and retries with backoff, so a handler that calls a model synchronously and takes 40 seconds will be retried while it is still thinking.

Next

Drafts

Put a human in the loop before anything sends.

Events

Webhook signatures, retry behaviour, and the WebSocket alternative.