Developer API

Read your AI data programmatically

The Unsourced Developer API lets you pull citation and bot activity data into your own dashboards, scripts, or reporting tools. Read-only, with a generous fair-use rate limit (600 requests/hour per account) to keep it fast for everyone.

Studio plan requiredREST · JSONRead-only

Base URL

https://unsourced.app/api

All endpoints are relative to this base. HTTPS only.

Authentication

All data endpoints require an API key. Keys are created in Settings → Developer API (Studio and Agency plans). Each key is shown once at creation — store it securely. Up to 5 active keys per account.

Pass your key in one of two ways:

Authorization header (recommended)

Authorization: Bearer unsk_your_api_key_here

X-Api-Key header

X-Api-Key: unsk_your_api_key_here

Key format: all keys start with unsk_ followed by 64 hex characters. Invalid or revoked keys return 401 api_key_required or 401 invalid_api_key. All endpoints share a fair-use limit of 600 requests/hour per account; exceeding it returns 429 with a Retry-After header.

Endpoints

GET
/developer/events

Recent AI bot detections for your account, sorted newest first. One record per bot per crawl event, so bot_name and total_hits always describe the same bot.

Query parameters

site_iduuidoptionalFilter to a single site. Omit to return events across all sites.
limitintegeroptionalNumber of records to return. Min 1, max 500. Default 50.

Response

[
  {
    "id":         "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "site_id":    "3fa85f64-5717-4562-b3fc-2c963f66afb7",
    "bot_name":   "GPTBot",
    "total_hits": 14,
    "page_url":   null,
    "created_at": "2025-05-20T09:14:00.000000+00:00"
  }
]

Example

curl -H "Authorization: Bearer unsk_your_key" \
  "https://unsourced.app/api/developer/events?limit=10"
GET
/developer/citations

Recent citation check results from your weekly and on-demand scans, sorted newest first. Each record is one AI assistant response for one prompt — showing whether your site was cited.

Query parameters

site_iduuidoptionalFilter to a single site. Omit for all sites.
cited_onlybooleanoptionalSet to true to return only records where your site was cited. Default false.
limitintegeroptionalNumber of records to return. Min 1, max 500. Default 50.

Response

[
  {
    "id":                 "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "site_id":            "3fa85f64-5717-4562-b3fc-2c963f66afb7",
    "provider":           "perplexity",
    "prompt":             "best tools for tracking AI citations",
    "cited":              true,
    "match_context":      "…Unsourced provides real-time monitoring…",
    "competitor_domains": ["ahrefs.com", "semrush.com"],
    "created_at":         "2025-05-20T08:00:00.000000+00:00"
  }
]

Example

curl -H "Authorization: Bearer unsk_your_key" \
  "https://unsourced.app/api/developer/citations?cited_only=true&limit=20"
GET
/developer/stats

Aggregate totals across all sites and all time for your account. Useful for a top-level summary in dashboards or reports.

Response

{
  "total_bot_hits":        1842,
  "total_citation_checks": 640,
  "total_citations_found": 112,
  "citation_rate_pct":     18
}

Example

curl -H "Authorization: Bearer unsk_your_key" \
  "https://unsourced.app/api/developer/stats"

Provider values

The provider field in citation records is one of:

anthropicClaude (Anthropic)
Training data
openaiChatGPT (OpenAI)
Training data
openai_searchChatGPT with web search
Live crawl
googleGemini (Google)
Training data
google_groundedGemini with Google Search
Live crawl
grokGrok (xAI)
Training data
metaMeta Llama (via Groq)
Training data
perplexityPerplexity
Live crawl

Live crawl providers visit your site in real time during a scan. When one of these providers fetches your page — verified by reverse DNS — and the answer reproduces your content, the citation is marked as a confirmed live crawl.

Error responses

401api_key_requiredNo API key was provided in the request.
401invalid_api_keyThe key does not exist or has been revoked.
402pro_requiredYour account is not on the Studio plan.
429Rate limit reached. Retry after the interval in the Retry-After header.

Ready to start building?

API keys are available on the Studio plan. Create a key in Settings → Developer API.