Free audit
Submit a company name to start an AI visibility audit. Add a website URL and email when you want more context or delivery follow-up.
Use the public API to launch an AI visibility audit or read published CiteFlow content. When your workflow needs managed access, Premium, Enterprise, and approved agency integrations are scoped with our team.
Important: the public audit is not a customer-key integration. It is rate-limited by IP and designed for trying the workflow before sales provisioning.
Each lane has a different purpose. The page does not invent a paid quota: integration limits and credentials are confirmed during provisioning.
Submit a company name to start an AI visibility audit. Add a website URL and email when you want more context or delivery follow-up.
Build a content directory or discovery experience with published blog posts and resources. Responses are read-only and public.
For agencies, multi-brand teams, and production workflows that need managed API access, reporting, and an agreed operating envelope.
Request API accessShare a few details and our team will review your request before following up about eligibility, credentials, and limits.
These are the supported public formats. The admin endpoint below is shown for operational clarity, not as a customer integration option.
| Endpoint | Auth | What it does | Expected responses |
|---|---|---|---|
POST /api/audit | None | Starts an audit; company_name is required. | 200, 400, 429, 500 |
GET /api/blog/posts | None | Lists published posts, optionally filtered by language. | 200 with { success, posts } |
GET /api/resources/list | None | Lists published resources, optionally filtered by language. | 200 with { success, resources } |
POST /api/indexnow/ping is admin-onlyThis operational endpoint requires a valid X-Admin-Key and returns 401 Unauthorized without it. Do not use it for a normal integration, and do not request an admin key as a substitute for paid API provisioning.
Every example targets the production base URL. Replace the sample company and email with your own values.
The OpenAPI schema calls the optional website field website_url; the live route currently reads company_url, so the executable examples use company_url. email is optional too.
curl -X POST https://citeflow.ma/api/audit \
-H 'Content-Type: application/json' \
-d '{
"company_name": "Royal Mansour Marrakech",
"company_url": "https://royalmansour.com",
"email": "contact@royalmansour.com"
}'
Success: 200 with success, a processing audit.id, and an event_id. Missing company name returns 400; the fifth request in an hour is followed by 429.
This uses the same JSON body as the browser form and the cURL request.
const response = await fetch('/api/audit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
company_name: 'Royal Mansour Marrakech',
company_url: 'https://royalmansour.com',
email: 'contact@royalmansour.com'
})
});
const data = await response.json();
Tip: use the returned audit.id to follow the existing results flow. The audit begins asynchronously with status: "processing".
Language is optional; this example requests English posts.
curl 'https://citeflow.ma/api/blog/posts?lang=en'
{
"success": true,
"posts": [
{ "title": "...", "slug": "...", "language": "en" }
]
}
The same language filter is available for the public resources list.
curl 'https://citeflow.ma/api/resources/list?lang=en'
Response: 200 with { success, resources }. Only published resources are returned.
This request is intentionally included to make the boundary explicit. Never expose an admin key in browser code, and never ask for one as a customer API credential.
curl -X POST https://citeflow.ma/api/indexnow/ping \
-H 'Content-Type: application/json' \
-H 'X-Admin-Key: YOUR_ADMIN_KEY' \
-d '{
"client_id": 123,
"urls": ["https://example.com/updated-page"]
}'
Without a valid key: 401 and { success: false, message: "Unauthorized" }. This endpoint is for CiteFlow administration only.
There is no hidden key flow behind the public endpoints. Start with the public surface, then tell us what your production workflow needs.
Run one audit with your company name and optional website URL. The public guard allows five audits per IP in a rolling hour.
Use the processing response and published-content reads to validate your internal workflow before asking for managed access.
For Premium, Enterprise, or approved agency integrations, contact hello@citeflow.ma for eligibility, credentials, and limits.
Run the free audit first, or contact CiteFlow if you are designing a managed integration for a team or agency.