API key in a header
Every API call carries your key in X-RELAY-ACCESS-TOKEN. Keep it server-side, never in client code or a public repo.
tinyRelay secures transactional email at each hop. Your API key travels in a request header, API calls are accepted only from IP addresses we allowlist for you, webhooks are signed and sent from one fixed IP, and tracked links can hide their destination in a tamper-proof token.
Illustrative IPs. Header, allowlisting and 401 from the docs.
From your app to the email itself, each step of a send has its own protection. Hover a layer to hold it.
Every API call carries your key in X-RELAY-ACCESS-TOKEN. Keep it server-side, never in client code or a public repo.
You give us the IP addresses you call from at setup. Those are the addresses allowlisted for your API calls.
HMAC-SHA256 signatures with a per-endpoint secret, sent from 3.229.12.181.
X-Link-Wrapping: true hides tracked destinations in an opaque, tamper-proof token.
A send touches three places: your app, tinyRelay and your webhook endpoint. Pick a stop to see what protects it and what is yours to do.
Two checks apply to every API call: it must carry a valid key, and it must come from an IP address you gave us during setup, which we allowlist for security.
Mail goes out from sender domains you shared with us, signed with DKIM. You decide per request whether links are tracked and whether tracked links reveal where they go.
Every event is signed with your endpoint's own secret and posted from one IP address. The signature, not the IP, is what proves the request is ours.
Anything that can reach your endpoint can post to it. So every webhook request is signed, and your handler checks three headers before it trusts the body.
Each endpoint has its own secret, never shared across accounts. You receive it when your endpoint is configured. Store it with your other credentials.
svix-timestamp is signed with the body, so rejecting old timestamps stops a captured, valid request from being replayed later.
Contact support to rotate a secret. While it rotates, both the old and new secret sign each request.
What a correct handler does before it reads the payload.
Security questionnaires go faster when both sides know where the facts are. Everything on the left is in the tinyRelay docs. Everything on the right, ask our team directly.
Related: how email webhooks are delivered, domain authentication and deliverability, and how onboarding works.
If yours is not here, it is probably in the list above. Ask us.
Webhook signing docs →With an API key sent in the X-RELAY-ACCESS-TOKEN header, issued at onboarding. Calls are also limited to the IP addresses you gave us, which are allowlisted.
Check the signature. Each request carries svix-id, svix-timestamp and svix-signature headers, and the signature is an HMAC-SHA256 over the ID, timestamp and raw body with your endpoint's secret. The sending IP, 3.229.12.181, is not proof on its own.
With X-Link-Wrapping: true, tracked links hide the destination inside an opaque, tamper-proof token instead of a readable redirectUrl parameter. That keeps destination URLs out of the message body, where blocklist scanners can read them.
We do not list compliance certifications, a DPA or data residency options on this site. Ask our team what is available for your security review.
Contact support. Rotation is not yet available through the API. During a rotation, requests are signed with both the old and the new secret, so accept a request if any listed signature verifies.
SMTP relay or REST API, standalone or alongside tinyEmail. Tell us what you send and our team sets you up.