For developers and agencies

CitationOne API

Run audits programmatically and pull the result as JSON. The same engine that powers reports in the app - wired into your workflow, your CMS or your client dashboard.

REST · JSON · api/v1
# 1. Start an audit
curl -X POST https://app.citationone.com/api/v1/audits \
  -H "Authorization: Bearer co_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/article", "keyword": "your keyword" }'

# 202 { "id": "job_V1StGXR8", "status": "queued" }

# 2. Collect the result
curl https://app.citationone.com/api/v1/audits/job_V1StGXR8 \
  -H "Authorization: Bearer co_live_..."

# Or skip step 2: pass "webhookUrl" when submitting and we
# POST the result to you, signed with HMAC-SHA256.

Access by API key

You send a key in the request header instead of signing in. Keys are created and revoked in the app; each one is shown once, and only an irreversible hash of it is stored.

Scoped keys

A key can be read-only or allowed to start audits as well. A request outside its scope is refused, so a key wired into someone else's script cannot spend your credits.

Runs in the background

An audit takes minutes, so the request itself returns immediately - you get a job id and your connection back. You collect the result with a separate call.

Notified instead of polled

Pass your address in webhookUrl and the finished result comes to you, with a signature that proves the sender. Failures arrive too, and a bulk request sends one notification per audit.

Audit copy before it is published

Send the text itself instead of a URL and check a draft, a rewrite or copy for a page that does not exist yet. Same dimensions, same 1 credit.

The whole report as JSON

Content Quality Score, ten dimensions with their problems, E-E-A-T, before/after recommendations, the comparison with competitors from Google and ChatGPT, and Fan-Out question coverage.

Bulk requests

A whole list of URLs goes in one request, and the server queues them and works through them one by one. You can watch the progress and stop the batch at any point.

Projects and request history

You tag an audit with a project name when you submit it, then filter the list by that name - alongside status, domain and a date range. A separate call returns the projects themselves with an audit count.

Report links for clients

An audit can get a public read-only address you send to a client without creating an account for them. With an expiry date or without one.

Billed in credits

One API audit costs 1 credit - exactly the same as an audit ordered in the app. No separate API subscription; balance and usage history come from the API.

Documentation your AI agent can read

The same documentation is served as plain Markdown at /api-docs.md. Point your assistant (Claude, ChatGPT, Cursor) at that URL and it gets the API contract without stripping layout out of an HTML page - tables and code blocks intact. Both versions are generated from one source, so they cannot drift apart.

https://app.citationone.com/api-docs.md

You create API keys in the app, in the developers section. The first 3 audits are free - through the API too.

Create an API key