API Documentation
Base URL: https://endorso.com/api/v1
All responses are JSON. Authentication via Authorization: Bearer <api_key> or x-api-key header.
Endpoints
/api/v1/partners/registerPublic (rate limited: 3/hr)Register a new partner. Returns an API key. Email verification required before the key works.
curl -X POST https://endorso.com/api/v1/partners/register \
-H "Content-Type: application/json" \
-d '{
"name": "my-fitness-bot",
"email": "dev@example.com",
"app_url": "https://mybot.app",
"description": "AI fitness coach that recommends gear"
}'{
"partner": {
"id": 42,
"name": "my-fitness-bot",
"slug": "my-fitness-bot",
"tag": "my-fitness-bot",
"tier": "free",
"status": "pending_verification"
},
"api_key": "na_8f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e",
"message": "Partner registered. Check your email to verify..."
}/api/v1/partners/verifyPublicVerify partner email. Called via the link in the verification email. Activates the API key.
# Clicked from email — opens in browser https://endorso.com/api/v1/partners/verify?token=abc123...
/api/v1/partners/meAPI KeyGet stats and profile for the authenticated partner.
curl https://endorso.com/api/v1/partners/me \ -H "Authorization: Bearer na_8f2a..."
/api/v1/links/matchAPI Key (rate limited: 30/min)The core endpoint. Send any URL, get back an affiliate tracking link. Checks compliance, caches results, and handles sub-affiliate attribution.
curl -X POST https://endorso.com/api/v1/links/match \
-H "Authorization: Bearer na_8f2a..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.nike.com/air-max-90",
"traffic_type": "ai_agent",
"geo": "US"
}'{
"matched": true,
"program": {
"id": 15,
"name": "Nike",
"network": "Impact",
"network_slug": "impact",
"domain": "nike.com",
"commission_rate": "5%",
"allows_deeplinking": true
},
"link": {
"tracking_id": "a1b2c3d4e5f6",
"tracking_url": "https://endorso.com/t/a1b2c3d4e5f6",
"affiliate_url": "https://nike.pxf.io/c/1234/...",
"original_url": "https://www.nike.com/air-max-90"
},
"compliance": {
"allowed": true
},
"cached": false,
"adapter_used": true
}/api/v1/linksAPI KeyList your affiliate links. Only returns links owned by the authenticated partner.
curl "https://endorso.com/api/v1/links?limit=10" \ -H "Authorization: Bearer na_8f2a..."
/api/v1/programsPublic (rate limited: 50/min)Search the program catalog. Filter by domain, keyword, category, region, traffic type permissions.
# Search by keyword curl "https://endorso.com/api/v1/programs?q=fitness&limit=5" # Filter by domain curl "https://endorso.com/api/v1/programs?domain=nike.com" # Filter by network + region curl "https://endorso.com/api/v1/programs?network=awin®ion=US"
/api/v1/networksPublic (rate limited: 50/min)List available affiliate networks. Filter by status, search by name, filter API-enabled only.
# All networks curl "https://endorso.com/api/v1/networks" # API-enabled only curl "https://endorso.com/api/v1/networks?api_only=true" # Search curl "https://endorso.com/api/v1/networks?q=impact"
/api/v1/products/searchOptionalFull-text search across product feeds. Returns products with affiliate URLs.
curl "https://endorso.com/api/v1/products/search?q=running+shoes&limit=10"
Rate Limits
| Endpoint | Limit | Window |
|---|---|---|
| POST /partners/register | 3 requests | per hour |
| POST /links/match | 30 requests | per minute |
| GET /programs | 50 requests | per minute |
| GET /networks | 50 requests | per minute |
Rate limit headers: X-RateLimit-Remaining, Retry-After (on 429).
Error Codes
| Code | Meaning |
|---|---|
400 | Bad request — missing required fields |
401 | Unauthorized — missing or invalid API key |
409 | Conflict — partner name/email already exists |
429 | Rate limited — check Retry-After header |
503 | Service unavailable — admin access not configured |
Questions? support@endorso.com