AIQ · Partner program
Partner API
Connect your own tools to AIQ: list your clients and their AI visibility scores, add clients, read their fixes and start scans. JSON over HTTPS, version 1.
For approved partners. The API works only with a key from an active partner account. Not a partner yet? Apply on the For agencies page; once approved, make a key on your Partner page.
Getting a key
On the Partner page, under API, click Make a key. The key (it starts with aiq_) is shown once: keep it in your server's settings, never in a web page or an app people download. Anyone with the key can see and add your clients. Revoke a key there at any time.
Send it with every request:
Authorization: Bearer aiq_YOUR_KEY
Limits
- 60 requests a minute per key.
- One scan a day per client through the API (monthly scans happen anyway).
- Up to 10 active keys per partner.
- Your partner plan must be active; clients count towards it as in the app.
Errors
Errors use the HTTP status and a JSON body:
{ "error": { "code": "rate_limited", "message": "Too many requests: at most 60 a minute per key." } }| 400 | invalid_request | Something in the request is missing or wrong. |
| 401 | unauthorized | No key, or the key isn't valid (or was revoked). |
| 402 | plan_inactive / plan_limit | Your plan isn't active, or covers no more clients. |
| 404 | not_found | No such client (or it isn't yours), or no such endpoint. |
| 409 | scan_running | A scan is already running for that client. |
| 429 | rate_limited / scan_limit | Too many requests, or a scan was started today. |
| 500 | server_error | Our problem. Try again in a minute. |
GET /clients
Every client, with its latest score (0–100), the one before, its last scan, Autopilot, and how many fixes are waiting.
curl https://aiq.socialiqstudio.com/api/v1/clients \ -H "Authorization: Bearer aiq_YOUR_KEY"
{
"clients": [
{
"id": "6f1c…",
"name": "Corner Cafe",
"website": "https://cornercafe.com",
"score": 41,
"previousScore": 33,
"lastScanAt": "2026-10-02T14:05:11Z",
"autopilot": true,
"autopilotLastRunAt": "2026-10-03T09:00:00Z",
"fixesWaiting": 4
}
]
}POST /clients
Add a client. It gets its own workspace under yours, with your brand, and its first scan starts straight away (a few minutes). city is optional. Returns 201.
curl -X POST https://aiq.socialiqstudio.com/api/v1/clients \
-H "Authorization: Bearer aiq_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Corner Cafe", "website": "cornercafe.com", "category": "Restaurant / Café", "city": "Austin, TX"}'{
"client": { "id": "6f1c…", "name": "Corner Cafe", "website": "cornercafe.com" },
"scanQueued": true
}GET /clients/{id}
One client: its business, current score, latest scan (queued, running, completed or failed) and the last 12 scores with their likely range.
curl https://aiq.socialiqstudio.com/api/v1/clients/6f1c… \ -H "Authorization: Bearer aiq_YOUR_KEY"
{
"client": {
"id": "6f1c…",
"name": "Corner Cafe",
"business": { "name": "Corner Cafe", "website": "https://cornercafe.com", "category": "Restaurant / Café", "city": "Austin, TX", "autopilot": true },
"score": 41,
"latestScan": { "status": "completed", "startedAt": "…", "completedAt": "…" },
"history": [ { "score": 41, "low": 34, "high": 48, "at": "2026-10-02T14:05:11Z" } ]
}
}GET /clients/{id}/fixes
The client's fixes, newest first: what AIQ found or wrote, and whether each is waiting (pending) or published, and when it went live.
curl https://aiq.socialiqstudio.com/api/v1/clients/6f1c…/fixes \ -H "Authorization: Bearer aiq_YOUR_KEY"
{
"fixes": [
{ "id": "…", "title": "FAQ section: 8 of your customers' questions answered", "kind": "faq",
"status": "pending", "page": "Your FAQ page", "createdAt": "…", "liveAt": null }
]
}POST /clients/{id}/scans
Start a scan now: AIQ asks the AI assistants the client's customer questions again. Returns 202; poll GET /clients/{id} for latestScan.
curl -X POST https://aiq.socialiqstudio.com/api/v1/clients/6f1c…/scans \ -H "Authorization: Bearer aiq_YOUR_KEY"
{ "scan": { "id": "…", "status": "queued" } }Questions or something missing? Contact Social IQ. New fields may be added to responses at any time; existing ones won't change within version 1.
