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.

HostURLUse
Productionhttps://dayblinkselect-api-service-git-main-day-blink-gpo.vercel.appLive vendor catalog
Custom domainhttps://api.dayblinkselect.comSame 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

MethodProductionSandboxAuthWhat it returns
GET/healthNoneLiveness check. Returns { ok: true }.
GET/openapi.jsonNoneOpenAPI 3.0 contract for this host.

Catalog

MethodProductionSandboxAuthWhat it returns
GET/v1/taxonomy/sandbox/v1/taxonomyBearerCategories, subcategories, spend areas, and enabled regions. Use these ids as filters on vendors.
GET/v1/vendors/sandbox/v1/vendorsBearerPaginated live listings. List items omit email and long-form HTML.

Query: page, perPage, q, vendor_id, category_id, subcategory_id, region_id, spend_area_id, country

GET/v1/vendors/{id}/sandbox/v1/vendors/{id}BearerOne live vendor by UUID, including email and full_description. 404 if unknown or not live.

Rankings

MethodProductionSandboxAuthWhat it returns
GET/v1/vendors/{id}/ranking/sandbox/v1/vendors/{id}/rankingBearerFull score breakdown plus global rank_number for that live vendor.
GET/v1/rankings/sandbox/v1/rankingsBearerLive vendors ordered by rank_number. Optional vendor_id returns that row only.

Query: page, perPage, vendor_id

GET/v1/categories/{id}/rankings/sandbox/v1/categories/{id}/rankingsBearerRank list for a category UUID from taxonomy. Items include vendor_id, rank_number, master_score, is_partner.

Query: page, perPage

GET/v1/subcategories/{id}/rankings/sandbox/v1/subcategories/{id}/rankingsBearerRank list for a subcategory UUID from taxonomy. Same shape as category rankings.

Query: page, perPage

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

HTTPcodeMeaning
400invalid_idPath or query is not a UUID
401unauthorizedMissing, invalid, or revoked Bearer token
401token_expiredToken expired
403forbiddenAccount is not an active partner
404not_foundUnknown id, or vendor is not live
429rate_limit_exceededOver 60 requests per minute — wait for Retry-After
500internal_errorUnexpected server error
503internal_errorService unavailable (including rate-limit store down)

Failures look like { "error": { "code", "message" } }. Quote x-request-id in support tickets.