Data API

Access professional licensing data programmatically. Perfect for developers building tools and applications.

Authentication

All API requests require authentication via an API key. Include your key in the Authorization header:

```
Authorization: Bearer YOUR_API_KEY
```

API keys are available with all plans, including the free tier. Get your key from the dashboard after signing up.

Rate Limits

Rate limits vary by plan:

| Plan | Requests | Period |
|------|----------|--------|
| Free | 100 | per day |
| Starter | 10,000 | per month |
| Professional | 100,000 | per month |
| Enterprise | Unlimited | - |

Rate limit headers are included in all responses:
- `X-RateLimit-Limit`: Your plan's limit
- `X-RateLimit-Remaining`: Requests remaining
- `X-RateLimit-Reset`: Unix timestamp when limit resets

Error Handling

The API uses standard HTTP status codes:

| Code | Meaning |
|------|---------|
| 200 | Success |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Resource doesn't exist |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |

Error responses include a JSON body:
```json
{
"success": false,
"error": {
"code": "INVALID_STATE",
"message": "The specified state 'xyz' is not valid"
}
}
```

Pagination

List endpoints support pagination with these query parameters:

- `page`: Page number (default: 1)
- `per_page`: Items per page (default: 20, max: 100)

Paginated responses include metadata:
```json
{
"success": true,
"data": [...],
"meta": {
"page": 1,
"per_page": 20,
"total": 150,
"total_pages": 8
}
}
```

Endpoints

GET /api/v1/professions

List all available professions with basic metadata.

Response

{
  "success": true,
  "data": {
    "professions": [
      {
        "id": "rn",
        "name": "Registered Nurse",
        "category": "healthcare",
        "states_covered": 50,
        "has_compact": true,
        "compact_name": "Nurse Licensure Compact"
      }
    ]
  }
}
GET /api/v1/requirements/{profession}/{state}

Get detailed licensing requirements for a specific profession and state.

Parameters

Name Type Required Description
profession string Yes Profession ID (e.g., rn, electrician, hvac)
state string Yes State slug (e.g., california, texas, new-york)

Response

{
  "success": true,
  "data": {
    "state": "california",
    "profession": "rn",
    "requirements": {
      "education": {
        "minimum": "ADN or BSN from accredited program",
        "accreditation": ["ACEN", "CCNE"]
      },
      "examination": {
        "name": "NCLEX-RN",
        "passing_score": "Adaptive"
      },
      "background_check": {
        "required": true,
        "fingerprinting": true
      }
    },
    "fees": {
      "application": 150,
      "exam": 200,
      "license": 0,
      "renewal": 190
    },
    "timeline": {
      "processing_days": "4-6 weeks",
      "renewal_period": "2 years"
    }
  }
}
GET /api/v1/reciprocity/{profession}

Get interstate compact membership and reciprocity information.

Parameters

Name Type Required Description
profession string Yes Profession ID
state string No Filter by specific state

Response

{
  "success": true,
  "data": {
    "profession": "rn",
    "compact": {
      "name": "Nurse Licensure Compact",
      "abbreviation": "NLC",
      "member_states": ["texas", "arizona", "colorado", ...],
      "pending_states": ["california", "new-york"]
    },
    "endorsement_states": [
      {
        "state": "california",
        "accepts_from": "all",
        "requirements": ["verification", "background_check"]
      }
    ]
  }
}
GET /api/v1/fees/{profession}/{state}

Get detailed fee schedule for licensing.

Parameters

Name Type Required Description
profession string Yes Profession ID
state string Yes State slug

Response

{
  "success": true,
  "data": {
    "state": "california",
    "profession": "rn",
    "fees": {
      "initial_licensure": [
        { "name": "Application Fee", "amount": 150 },
        { "name": "NCLEX-RN Exam", "amount": 200 },
        { "name": "Fingerprint Processing", "amount": 49 }
      ],
      "renewal": [
        { "name": "Renewal Fee", "amount": 190 },
        { "name": "CE Verification (if audited)", "amount": 0 }
      ],
      "other": [
        { "name": "License Verification", "amount": 25 },
        { "name": "Duplicate License", "amount": 50 }
      ]
    },
    "total_initial": 399,
    "total_renewal": 190
  }
}