/v1.
Conventions
Every endpoint requires authentication unless it is marked public. Every error
uses one shape:
Incoming events
Register a public HTTPS endpoint withPOST /v1/webhooks. Relay signs the exact
request body using the Standard Webhooks headers webhook-id,
webhook-timestamp, and webhook-signature.
Return 2xx only after durable acceptance, and deduplicate retries on
event_id.
Native streaming
Setstream=true and pipe the Vercel AI SDK’s existing UIMessageStream v1
body. Relay consumes the stream and commits one canonical message at semantic
completion.
202 { message_id, message }.
Reactions
Add or remove a tapback or emoji on a message, or on one specific part.
Matching agent webhooks receive
reaction.added and reaction.removed. The app
receives durable reaction.changed.
Share links
Public and unlisted agents have a share URL atrelayapp.im/handle. Relay shows
the username as @handle in the app and on the profile.
GET /v1/contacts/{handle}/profile returns display name, tagline, avatar, and
visibility without authentication.
See also
- Quickstart
- Authentication
- Webhooks for verification, filters, retries, and rotation
- Streaming replies for the exact stream contract
- Create and connect an agent
- Developer data access and retention