Reference Crimson API v1

The Crimson
API reference.

A predictable, resource-oriented REST API. JSON everywhere, standard verbs, bearer-token auth, and cursor pagination. This is the complete surface — pipelines, candidates, compensation, and analytics.

base-urlHTTPS
# All requests share one base URL https://api.crimsontalent.com/v1 # Auth: bearer token, TLS 1.3 only Authorization: Bearer ck_live_... # Pin an API version (optional but advised) Crimson-Version: 2026-04-01

Bearer tokens.

Every request must include your secret key in the Authorization header. Requests over plain HTTP or without a valid key are rejected with 401. Keep secret keys server-side; use publishable keys for browser contexts.

authenticate.shcURL
curl https://api.crimsontalent.com/v1/pipelines \ -H "Authorization: Bearer $CRIMSON_API_KEY" \ -H "Crimson-Version: 2026-04-01" # Missing or invalid key { "error": { "type": "authentication_error", "message": "No valid API key provided." } }

The full surface.

Grouped by resource. Every collection endpoint supports cursor pagination and filtering; every object endpoint accepts a resource ID.

Pipelines

GET/v1/pipelinesList all active pipelines
GET/v1/pipelines/{id}Retrieve a single pipeline
POST/v1/pipelinesCreate a new pipeline
PATCH/v1/pipelines/{id}Update stages or metadata

Candidates

GET/v1/candidatesList candidates, filter by pipeline or stage
GET/v1/candidates/{id}Retrieve a candidate record
DELETE/v1/candidates/{id}Delete a candidate (GDPR/CCPA)

Compensation

GET/v1/compensationBenchmarks by role, market & percentile
GET/v1/compensation/rolesList supported roles & levels

Analytics

GET/v1/analytics/supplyTalent supply index by role & market
GET/v1/analytics/forecastTime-to-fill & availability forecast

Request & response.

A compensation benchmark lookup returns base, bonus, and equity splits at the percentiles you request, plus a sample size and last-refreshed timestamp so you know how fresh the data is.

GET /v1/compensationHTTP
GET /v1/compensation?role=vp-engineering&market=san-francisco&percentiles=50,75,90 Host: api.crimsontalent.com Authorization: Bearer ck_live_... // 200 OK { "object": "compensation_benchmark", "role": "vp-engineering", "market": "san-francisco", "currency": "USD", "sample_size": 1284, "base": { "p50": 315000, "p75": 352000, "p90": 401000 }, "bonus_pct": { "p50": 18, "p75": 25, "p90": 35 }, "equity_value": { "p50": 220000, "p75": 340000, "p90": 610000 }, "refreshed_at": "2026-04-14T08:00:00Z" }

How the API behaves.

Pagination

List endpoints are cursor-paginated. Pass limit (max 100) and the starting_after cursor from the previous page. Responses include has_more and the last object's ID — loop until has_more is false.

Rate limits

1,000 req/min per organization, burstable to 2,000. Watch X-RateLimit-Remaining and X-RateLimit-Reset. On 429, honor Retry-After. SDKs retry automatically with exponential backoff.

Errors

Every error returns a consistent JSON envelope with a machine-readable type, a human message, and (for validation) the offending param. HTTP status conveys the class of failure — see the table below.

Versioning

Versions are dated (2026-04-01). Set Crimson-Version per request or account-wide. Released versions never break; additive changes are continuous. Deprecations get 12 months' notice in the changelog.

Status codes.

Crimson uses conventional HTTP response codes. 2xx means success, 4xx means a problem with your request, and 5xx means something failed on our end (rare — and safe to retry).

CodeTypeMeaning
400invalid_request_errorThe request was malformed or missing a required parameter.
401authentication_errorNo valid API key was provided, or the key was revoked.
403permission_errorThe key is valid but lacks the scope for this resource.
404not_found_errorThe requested resource does not exist on your account.
429rate_limit_errorToo many requests — back off using Retry-After.
500api_errorSomething went wrong on our end. Safe to retry with backoff.

Skip the boilerplate.

Our official SDKs handle auth, retries, pagination, and typing for you — so you can focus on the data, not the plumbing.

Browse the SDKs