API Reference
Base URL: https://citedmonitor.com/api/v1
Authentication
All requests require a Bearer token. Create API keys in Settings → Developer API. API access is available on Growth and Pro plans.
curl https://citedmonitor.com/api/v1/brands \ -H "Authorization: Bearer cm_live_your_api_key_here"
Pagination
List endpoints use cursor-based pagination. Pass ?cursor=... to fetch the next page.
{
"data": [...],
"meta": {
"next_cursor": "eyJpZCI6NDJ9",
"has_more": true
}
}
Error responses
{
"error": "Authentication required. Provide a Bearer token."
}
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | API access not available on your plan |
| 404 | Resource not found |
| 422 | Validation error |
| 429 | Rate limit exceeded |
Rate limiting
Requests are rate limited per team. Check response headers:
X-RateLimit-Limit,
X-RateLimit-Remaining,
Retry-After.
Brands
/api/v1/brands
Returns all entities (brands, products, competitors) tracked by your team.
Parameters
| own_only | boolean | Only return your own brands |
| favourites_only | boolean | Only return favourited entities |
| cursor | string | Pagination cursor |
curl https://citedmonitor.com/api/v1/brands?own_only=1 \ -H "Authorization: Bearer cm_live_abc123"
{
"data": [
{
"id": 1,
"name": "Acme Hotels",
"slug": "acme-hotels",
"domain": "acmehotels.com",
"is_own_brand": true,
"is_favourite": false,
"entity_type": "business",
"entity_subtype": "hotel",
"schedule": "weekly",
"first_seen_at": "2026-06-01T10:00:00.000000Z",
"aliases": [
{ "id": 1, "alias": "Acme Hotel Group" }
]
}
],
"meta": {
"next_cursor": null,
"has_more": false
}
}
/api/v1/brands/{id}/mentions
Returns every time a brand was mentioned in an AI response.
Parameters
| since | datetime | Only return mentions after this date (ISO 8601) |
| sentiment | string | positive negative neutral |
| cursor | string | Pagination cursor |
{
"data": [
{
"id": 284,
"prompt_run_id": 91,
"entity_id": 1,
"entity_type": "business",
"position": 2,
"sentiment": "positive",
"context_snippet": "Acme Hotels in Bakewell offers a modern boutique experience...",
"confidence": 0.95,
"created_at": "2026-06-13T14:22:00.000000Z",
"prompt_run": {
"id": 91,
"model": "gpt-4o",
"provider": { "id": 1, "name": "OpenAI", "slug": "openai" },
"prompt": { "id": 12, "body": "Best boutique hotels in the Peak District" }
}
}
],
"meta": {
"next_cursor": "eyJpZCI6MjgzfQ",
"has_more": true
}
}
/api/v1/brands/{id}/citations
Returns URLs cited alongside a brand in AI responses.
Parameters
| since | datetime | Only return citations after this date |
| domain | string | Filter by cited domain |
| cursor | string | Pagination cursor |
{
"data": [
{
"id": 55,
"prompt_run_id": 91,
"entity_id": 1,
"url": "https://acmehotels.com/bakewell",
"domain": "acmehotels.com",
"created_at": "2026-06-13T14:22:00.000000Z",
"prompt_run": {
"id": 91,
"model": "sonar-pro",
"provider": { "id": 6, "name": "Perplexity", "slug": "perplexity" },
"prompt": { "id": 12, "body": "Best boutique hotels in the Peak District" }
}
}
],
"meta": { "next_cursor": null, "has_more": false }
}
Prompts
/api/v1/prompts
Returns all prompts configured for your team.
{
"data": [
{
"id": 12,
"entity_id": 1,
"body": "What are the best boutique hotels in the Peak District?",
"is_active": true,
"created_at": "2026-06-01T10:30:00.000000Z",
"entity": {
"id": 1,
"name": "Acme Hotels",
"is_own_brand": true
}
}
],
"meta": { "next_cursor": null, "has_more": false }
}
/api/v1/prompts
Create a new monitoring prompt. Subject to your plan's prompt limit.
Body parameters
| body | string | required | The prompt text (max 1000 chars) |
| entity_id | integer | required | The brand this prompt monitors |
| schedule | string | required | daily weekly manual |
curl -X POST https://citedmonitor.com/api/v1/prompts \
-H "Authorization: Bearer cm_live_abc123" \
-H "Content-Type: application/json" \
-d '{
"body": "What are the best boutique hotels in the Peak District?",
"entity_id": 1,
"schedule": "weekly"
}'
{
"data": {
"id": 13,
"entity_id": 1,
"body": "What are the best boutique hotels in the Peak District?",
"schedule": "weekly",
"is_active": true,
"created_at": "2026-06-14T09:15:00.000000Z"
}
}
/api/v1/prompts/{id}/runs
Returns run history for a prompt, including extracted entities and citations.
{
"data": [
{
"id": 91,
"prompt_id": 12,
"model": "gpt-4o",
"status": "completed",
"token_count_input": 42,
"token_count_output": 856,
"estimated_cost": 0.0034,
"created_at": "2026-06-13T14:22:00.000000Z",
"provider": { "id": 1, "name": "OpenAI", "slug": "openai" },
"mentions": [
{
"entity": { "id": 1, "name": "Acme Hotels" },
"position": 2,
"sentiment": "positive",
"confidence": 0.95
},
{
"entity": { "id": 7, "name": "The Peacock at Rowsley" },
"position": 1,
"sentiment": "positive",
"confidence": 0.92
}
],
"citations": [
{
"url": "https://acmehotels.com/bakewell",
"domain": "acmehotels.com"
}
]
}
],
"meta": { "next_cursor": null, "has_more": false }
}
/api/v1/prompts/{id}/run
Trigger a prompt run. Dispatched asynchronously to all configured models.
curl -X POST https://citedmonitor.com/api/v1/prompts/12/run \ -H "Authorization: Bearer cm_live_abc123"
{
"message": "Prompt run dispatched."
}
Results arrive asynchronously. Poll the runs endpoint or use webhooks to be notified.
Reports
/api/v1/reports/trends
Returns daily mention counts over time, grouped by entity.
Parameters
| days | integer | Lookback period in days (default: 30) |
| entity_id | integer | Filter to a specific entity (defaults to own brands) |
{
"data": [
{
"entity": { "id": 1, "name": "Acme Hotels" },
"data": [
{ "date": "2026-06-07", "mentions": 3 },
{ "date": "2026-06-08", "mentions": 5 },
{ "date": "2026-06-09", "mentions": 4 },
{ "date": "2026-06-10", "mentions": 6 },
{ "date": "2026-06-11", "mentions": 4 },
{ "date": "2026-06-12", "mentions": 7 },
{ "date": "2026-06-13", "mentions": 5 }
]
}
],
"meta": { "days": 7 }
}