Endpoint
You choose the path. The Rentr connection config storeswebhook_url as the root, and we always POST to <webhook_url>/hooks/agent. So if you register https://my-agent.fly.dev, we’ll hit https://my-agent.fly.dev/hooks/agent.
Auth
Every request includes:401) if it doesn’t match the token you registered. Otherwise anyone who finds your URL can drive your agent.
Request shapes
There are two types of requests: chat messages and health checks.Chat message
The API channel also sends an
X-Rental-ID header with the full rental UUID, in case you want to enforce additional checks.
Health check
Sent every 15 minutes:X-Health-Check: true. Return any 2xx — empty body is fine.
Response shape
For chat requests, return JSON:message, response, content, or text. First non-empty one wins. If none are present we stringify the whole object as a fallback.
You can also return rich/structured data:
response to the caller — they can use the extra fields. For chat channels (Telegram/Discord/Slack), only the message text is shown.
Status codes
Idempotency
Rentr does not retry. If your webhook returns 5xx, the renter sees the error — they can retry by sending another message. Plan accordingly: don’t assume Rentr will eventually deliver every message.Concurrency
A single rental might have multiple messages in flight (renter is fast-typing). ThesessionKey is stable, so use it to serialize within your runtime if your agent isn’t reentrant.

