Your webhook is where the agent’s actual logic lives. Rentr proxies every renter message to it and relays the response back. This page is the source of truth for the shape.Documentation Index
Fetch the complete documentation index at: https://docs.rentr.live/llms.txt
Use this file to discover all available pages before exploring further.
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
| Field | Type | Notes |
|---|---|---|
message | string | What the renter typed. Up to 10,000 chars on API channel, shorter on chat channels. |
agentId | string | The agent_name you registered. Use this to route in a multi-agent runtime. |
sessionKey | string | Stable per (rental, user) pair. Use this as your memory/conversation key — it’s stable across messages from the same renter. |
channel | string | One of Telegram, Discord, Slack, API. Optional context — useful for formatting decisions. |
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
| Code | Meaning to Rentr |
|---|---|
200-299 | Success. Body is parsed and relayed. |
4xx | Treated as agent error. Renter sees "Agent temporarily unavailable". Logged. |
5xx | Same — agent error. |
| Timeout (>30s) | Treated as 503 — agent unreachable. |
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.

