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.

Your toolsAIQ APIPOST /clients200 { score: 72 }

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:

requesthttp
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.jsonjson
{ "error": { "code": "rate_limited", "message": "Too many requests: at most 60 a minute per key." } }
400invalid_requestSomething in the request is missing or wrong.
401unauthorizedNo key, or the key isn't valid (or was revoked).
402plan_inactive / plan_limitYour plan isn't active, or covers no more clients.
404not_foundNo such client (or it isn't yours), or no such endpoint.
409scan_runningA scan is already running for that client.
429rate_limited / scan_limitToo many requests, or a scan was started today.
500server_errorOur 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.

request.shcurl
curl https://aiq.socialiqstudio.com/api/v1/clients \
  -H "Authorization: Bearer aiq_YOUR_KEY"
response.jsonjson
{
  "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.

request.shcurl
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"}'
response.jsonjson
{
  "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.

request.shcurl
curl https://aiq.socialiqstudio.com/api/v1/clients/6f1c… \
  -H "Authorization: Bearer aiq_YOUR_KEY"
response.jsonjson
{
  "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.

request.shcurl
curl https://aiq.socialiqstudio.com/api/v1/clients/6f1c…/fixes \
  -H "Authorization: Bearer aiq_YOUR_KEY"
response.jsonjson
{
  "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.

request.shcurl
curl -X POST https://aiq.socialiqstudio.com/api/v1/clients/6f1c…/scans \
  -H "Authorization: Bearer aiq_YOUR_KEY"
response.jsonjson
{ "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.