Validation Rules
- Must be a valid URL
https://is required for non-localhost hostshttp://is only allowed forlocalhostand127.0.0.1- Maximum 10 custom URIs per account
- Duplicate URIs are rejected with
409 CONFLICT
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
curl -X POST "https://api.adrelay.dev/v1/redirect-uris" \
-H "X-API-Key: $ADRELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uri": "https://myapp.com/callback"}'
import { AdRelay } from "@adrelay/sdk";
const client = new AdRelay({ apiKey: process.env.ADRELAY_API_KEY });
const { data } = await client.redirectUris.create("https://myapp.com/callback");
console.log(data.id); // Use this ID to delete later
console.log(data.uri); // "https://myapp.com/callback"
import requests
response = requests.post(
"https://api.adrelay.dev/v1/redirect-uris",
headers={
"X-API-Key": "your-api-key-here",
"Content-Type": "application/json",
},
json={"uri": "https://myapp.com/callback"},
)
data = response.json()["data"]
{
"data": {
"id": "uri_abc123",
"uri": "https://myapp.com/callback",
"createdAt": "2026-03-24T12:00:00.000Z"
}
}
{
"error": {
"code": "BAD_REQUEST",
"message": "HTTPS is required for non-localhost redirect URIs",
"retryable": false,
"requestId": "req_abc123"
}
}
{
"error": {
"code": "CONFLICT",
"message": "Redirect URI already registered",
"retryable": false,
"requestId": "req_abc123"
}
}
Register a new OAuth redirect URI for your account.
curl -X POST "https://api.adrelay.dev/v1/redirect-uris" \
-H "X-API-Key: $ADRELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uri": "https://myapp.com/callback"}'
import { AdRelay } from "@adrelay/sdk";
const client = new AdRelay({ apiKey: process.env.ADRELAY_API_KEY });
const { data } = await client.redirectUris.create("https://myapp.com/callback");
console.log(data.id); // Use this ID to delete later
console.log(data.uri); // "https://myapp.com/callback"
import requests
response = requests.post(
"https://api.adrelay.dev/v1/redirect-uris",
headers={
"X-API-Key": "your-api-key-here",
"Content-Type": "application/json",
},
json={"uri": "https://myapp.com/callback"},
)
data = response.json()["data"]
{
"data": {
"id": "uri_abc123",
"uri": "https://myapp.com/callback",
"createdAt": "2026-03-24T12:00:00.000Z"
}
}
{
"error": {
"code": "BAD_REQUEST",
"message": "HTTPS is required for non-localhost redirect URIs",
"retryable": false,
"requestId": "req_abc123"
}
}
{
"error": {
"code": "CONFLICT",
"message": "Redirect URI already registered",
"retryable": false,
"requestId": "req_abc123"
}
}
curl -X POST "https://api.adrelay.dev/v1/redirect-uris" \
-H "X-API-Key: $ADRELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uri": "https://myapp.com/callback"}'
import { AdRelay } from "@adrelay/sdk";
const client = new AdRelay({ apiKey: process.env.ADRELAY_API_KEY });
const { data } = await client.redirectUris.create("https://myapp.com/callback");
console.log(data.id); // Use this ID to delete later
console.log(data.uri); // "https://myapp.com/callback"
import requests
response = requests.post(
"https://api.adrelay.dev/v1/redirect-uris",
headers={
"X-API-Key": "your-api-key-here",
"Content-Type": "application/json",
},
json={"uri": "https://myapp.com/callback"},
)
data = response.json()["data"]
{
"data": {
"id": "uri_abc123",
"uri": "https://myapp.com/callback",
"createdAt": "2026-03-24T12:00:00.000Z"
}
}
{
"error": {
"code": "BAD_REQUEST",
"message": "HTTPS is required for non-localhost redirect URIs",
"retryable": false,
"requestId": "req_abc123"
}
}
{
"error": {
"code": "CONFLICT",
"message": "Redirect URI already registered",
"retryable": false,
"requestId": "req_abc123"
}
}
https:// is required for non-localhost hostshttp:// is only allowed for localhost and 127.0.0.1409 CONFLICT