Quickstart
Fire your first audit in five minutes.
This is a five-minute integration. By the end you will have an API key, a topped-up account, and your first completed audit.
Step 1 — Enable the API
Sign in to the CiteFlow dashboard and visit /dashboard/api. Click Enable API, enter a workspace name, and accept the API terms. CiteFlow creates your partner workspace and the first API key. The plaintext key is shown exactly once — copy it now.
ckf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxStore it in a secrets manager. Lost keys cannot be recovered; rotate through the dashboard instead.
Step 2 — Top up
Visit /dashboard/api/billing and pick a tier:
| Tier | Price | Base credits | Bonus | Total |
|---|---|---|---|---|
| Starter | $49 | 4,900 | 0 | 4,900 |
| Growth | $199 | 19,900 | 1,000 | 20,900 (+5%) |
| Scale | $499 | 49,900 | 5,000 | 54,900 (+10%) |
Stripe Checkout opens. Apply any promotion code on the Checkout page, complete payment, then return to the dashboard. Balance updates within ~10 seconds of payment via the Stripe webhook.
1 credit = $0.01. A full audit costs 150 credits ($1.50); single-
dimension audits (seo, aeo, geo) cost 80 credits ($0.80).
Step 3 — Fire your first audit
Node SDK (recommended)
npm install @citeflow/sdkimport { Citeflow } from '@citeflow/sdk';
const client = new Citeflow({ apiKey: process.env.CITEFLOW_API_KEY! });
const audit = await client.audits.create({
url: 'https://example.com',
type: 'seo',
});
const result = await client.audits.waitForCompletion(audit.audit_id);
console.log(result);Python SDK
pip install citeflow-pythonfrom citeflow import Citeflow
client = Citeflow(api_key=os.environ["CITEFLOW_API_KEY"])
audit = client.audits.create(url="https://example.com", type="seo")
result = client.audits.wait_for_completion(audit["audit_id"])
print(result)Raw HTTP (no SDK)
curl -X POST https://www.citeflow.io/api/v1/audit \
-H "Authorization: Bearer $CITEFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"url":"https://example.com","type":"seo"}'You will receive a 202 Accepted immediately:
{
"data": {
"audit_id": "vH4kZcLm9YxQrTpA2gWb",
"status": "queued",
"type": "seo",
"url": "https://example.com",
"credits": { "charged": 80, "balance_after": 4820 },
"links": { "self": "/api/v1/audit/vH4kZcLm9YxQrTpA2gWb" },
"created_at": "2026-05-27T14:32:11.001Z"
},
"request_id": "req_01jbq6t8tjk0vfgz5gd9p4d4qa"
}Audits typically complete in 15–60 seconds depending on type.
Step 4 — Get the result
Poll GET /audit/{audit_id} every 5–10 seconds until status is one of
complete, failed, cancelled:
curl https://www.citeflow.io/api/v1/audit/vH4kZcLm9YxQrTpA2gWb \
-H "Authorization: Bearer $CITEFLOW_API_KEY"When complete:
{
"data": {
"audit_id": "vH4kZcLm9YxQrTpA2gWb",
"status": "complete",
"type": "seo",
"url": "https://example.com",
"scores": { "overall": 76, "seo": 81, "aeo": null, "geo": null },
"dimensions": { "...": "engine-specific breakdown" },
"issues": [{ "...": "prioritized issues list" }],
"credits": { "charged": 80, "refunded": 0 },
"created_at": "2026-05-27T14:32:11.001Z",
"completed_at": "2026-05-27T14:32:54.622Z"
}
}Don't poll forever. Configure a webhook endpoint at
/dashboard/api/webhooks and CiteFlow will POST the result the moment
it's ready — see Webhooks.
What next
- SDKs — Node + Python clients with retry + webhook helpers.
- Authentication — IP allowlist, scopes, rotation.
- Audits — full endpoint reference + cancellation.
- Webhooks — stop polling.
- Errors — what each
error.codemeans. - Idempotency — safe retries.