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.
```
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
| 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"
}
}
```
| 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
}
}
```
- `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
}
}