Headways
API Reference

API Reference

REST API for integrating with the Headways platform.

The Headways API allows you to programmatically interact with the platform. All endpoints require authentication via API key.

Base URL

https://api.headways.ai/v1

Authentication

Include your API key in the Authorization header:

curl -H "Authorization: Bearer hw_your_api_key" \
  https://api.headways.ai/v1/org

API keys are managed under Settings > API Keys in the dashboard. Each key is scoped to a specific organization.

Rate Limits

PlanRequests/minuteRequests/day
Starter6010,000
Pro300100,000
EnterpriseCustomCustom

Rate limit headers are included in every response:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1717200000

Endpoints

Organization

MethodPathDescription
GET/orgGet organization details
GET/org/membersList organization members
POST/org/members/inviteInvite a new member

Maturity

MethodPathDescription
GET/maturityGet current maturity score
GET/maturity/historyGet score history
GET/maturity/teamsGet per-team scores

Fluency

MethodPathDescription
GET/fluency/scoresList fluency scores
GET/fluency/scores/:userIdGet individual score
GET/fluency/distributionGet score distribution

Workflows

MethodPathDescription
GET/workflowsList workflows
GET/workflows/:idGet workflow details
POST/workflows/:id/assignAssign workflow to users
GET/workflows/:id/progressGet completion progress

Diagnostic

MethodPathDescription
POST/diagnostic/sessionsCreate a diagnostic session
GET/diagnostic/sessions/:idGet session results
GET/diagnostic/reports/:idGet the scored report

Error Responses

All errors follow a consistent format:

{
  "error": {
    "code": "invalid_request",
    "message": "The request body is missing the required 'email' field.",
    "status": 400
  }
}
StatusCodeDescription
400invalid_requestMalformed request
401unauthorizedMissing or invalid API key
403forbiddenInsufficient permissions
404not_foundResource does not exist
429rate_limitedToo many requests
500internal_errorServer error

Pagination

List endpoints support cursor-based pagination:

GET /org/members?limit=25&cursor=eyJpZCI6MTAwfQ

Response includes pagination metadata:

{
  "data": [...],
  "pagination": {
    "has_more": true,
    "next_cursor": "eyJpZCI6MTI1fQ"
  }
}

On this page