API Documentation
Access your CiteHawk data programmatically. All endpoints use REST conventions and return JSON.
Authentication
All API requests require an API key passed in the Authorization header.
Authorization: Bearer YOUR_API_KEYGenerate API keys in Settings > API Keys within your workspace.
All requests without a valid API key return 401 Unauthorized.
Base URL
https://citehawk.com/api/v1Endpoints
GET/api/v1/brands
Returns all brands in your workspace.
Example request
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://citehawk.com/api/v1/brandsExample response
{
"brands": [
{
"id": "abc123",
"name": "Acme Corp",
"keywords": ["acme", "acme corporation"]
}
],
"workspaceId": "ws_123"
}GET/api/v1/metrics
Returns daily visibility metrics and latest KPIs for your workspace.
| Parameter | Type | Default | Description |
|---|---|---|---|
| days | number | 30 | Number of days of historical data (1-365) |
Example request
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://citehawk.com/api/v1/metrics?days=7"Example response
{
"timeseries": [
{
"date": "2026-04-20",
"visibilityScore": 72,
"citationCount": 15
}
],
"kpis": {
"visibilityScore": 72,
"citationCount": 145,
"responseCount": 892
},
"days": 7
}GET/api/v1/responses
Returns recent AI platform responses mentioning your brands.
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | number | 50 | Number of responses to return (max 200) |
| offset | number | 0 | Number of responses to skip |
Example request
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://citehawk.com/api/v1/responses?limit=10&offset=0"Example response
{
"responses": [
{
"id": "resp_123",
"provider": "chatgpt",
"model": "gpt-4o",
"responseText": "According to Acme Corp...",
"citations": ["https://acme.com/about"]
}
],
"total": 892
}Rate Limits
API requests are rate-limited to ensure fair usage. If you exceed the limit, you will receive a 429 Too Many Requests response.
Error Codes
| Status | Description |
|---|---|
| 401 Unauthorized | Invalid or missing API key |
| 429 Too Many Requests | Rate limit exceeded |
| 500 Internal Server Error | Unexpected error |