How to use the API
Read-only live vendor catalog. Catalog /v1 routes require a production fp_live_ Bearer token from Select API Access. Cookies and MFA cannot substitute. Sandbox uses the published token on /sandbox. Machine-readable contract: OpenAPI JSON.
1. Environments
This is a hosted Partner API. Partners call the production host below.
| Host | URL | Use |
|---|---|---|
| Production | https://dayblinkselect-api-service-git-main-day-blink-gpo.vercel.app | Live vendor catalog |
| Custom domain | https://api.dayblinkselect.com | Same service after DNS is attached |
Production catalog is /v1 with Bearer fp_live_... from Select API Access. Sandbox is the same host under /sandbox/v1 with the published token on /sandbox.
2. Production token, then call the catalog
# Generate SELECT_API_TOKEN in Select → API Access after invite + MFA curl -sS "https://dayblinkselect-api-service-git-main-day-blink-gpo.vercel.app/v1/taxonomy" \ -H "Authorization: Bearer $SELECT_API_TOKEN" curl -sS "https://dayblinkselect-api-service-git-main-day-blink-gpo.vercel.app/v1/vendors?page=1&perPage=10" \ -H "Authorization: Bearer $SELECT_API_TOKEN" # Sandbox on the same hosted API (published token on /sandbox) curl -sS "https://dayblinkselect-api-service-git-main-day-blink-gpo.vercel.app/sandbox/v1/taxonomy" \ -H "Authorization: Bearer $SELECT_SANDBOX_API_TOKEN"
3. Partner APIs
Full partner surface. Same list: /apis.
Production and sandbox use the same method, path suffix, query parameters, and JSON. Prefix production with /v1 and sandbox with /sandbox/v1. Catalog calls need Authorization: Bearer — production fp_live_... from Select API Access, sandbox fp_test_... published on /sandbox.
Public
| Method | Production | Sandbox | Auth | What it returns |
|---|---|---|---|---|
GET | /health | — | None | Liveness check. Returns { ok: true }. |
GET | /openapi.json | — | None | OpenAPI 3.0 contract for this host. |
Catalog
| Method | Production | Sandbox | Auth | What it returns |
|---|---|---|---|---|
GET | /v1/taxonomy | /sandbox/v1/taxonomy | Bearer | Categories, subcategories, spend areas, and enabled regions. Use these ids as filters on vendors. |
GET | /v1/vendors | /sandbox/v1/vendors | Bearer | Paginated live listings. List items omit email and long-form HTML. Query: |
GET | /v1/vendors/{id} | /sandbox/v1/vendors/{id} | Bearer | One live vendor by UUID, including email and full_description. 404 if unknown or not live. |
Rankings
| Method | Production | Sandbox | Auth | What it returns |
|---|---|---|---|---|
GET | /v1/vendors/{id}/ranking | /sandbox/v1/vendors/{id}/ranking | Bearer | Full score breakdown plus global rank_number for that live vendor. |
GET | /v1/rankings | /sandbox/v1/rankings | Bearer | Live vendors ordered by rank_number. Optional vendor_id returns that row only. Query: |
GET | /v1/categories/{id}/rankings | /sandbox/v1/categories/{id}/rankings | Bearer | Rank list for a category UUID from taxonomy. Items include vendor_id, rank_number, master_score, is_partner. Query: |
GET | /v1/subcategories/{id}/rankings | /sandbox/v1/subcategories/{id}/rankings | Bearer | Rank list for a subcategory UUID from taxonomy. Same shape as category rankings. Query: |
Path id values are UUIDs, not slugs. Lists use page (default 1) and perPage (default 50, max 100). Response: { items, page, perPage, total }. Production returns live vendors only. Sandbox returns the same shape from synthetic fixtures.
Errors
| HTTP | code | Meaning |
|---|---|---|
| 400 | invalid_id | Path or query is not a UUID |
| 401 | unauthorized | Missing, invalid, or revoked Bearer token |
| 401 | token_expired | Token expired |
| 403 | forbidden | Account is not an active partner |
| 404 | not_found | Unknown id, or vendor is not live |
| 429 | rate_limit_exceeded | Over 60 requests per minute — wait for Retry-After |
| 500 | internal_error | Unexpected server error |
| 503 | internal_error | Service unavailable (including rate-limit store down) |
Failures look like { "error": { "code", "message" } }. Quote x-request-id in support tickets.