Introducing our new Monitoring feature Learn more

Documentation

AI visibility

Run AI visibility reports, prefill prompts and competitors, and fetch scores and history via the Krastie API.

AI visibility

Track how your brand appears across AI answer engines. These endpoints live under /v1/ai/generate and require the api-key header. See Authentication and What is AI visibility?.

Run a visibility report

POST /v1/ai/generate/seo-site-report

Queues a visibility report job for your workspace.

FieldTypeDescription
websiteurlstringHTTPS site to analyze (required unless refreshing with stored inputs)
competitorsstring[]Competitor URLs or names
promptsstring[]Buyer prompts to evaluate (plan prompt limits apply)
refreshbooleanRe-run using the previous report when true
curl https://api.krastie.ai/v1/ai/generate/seo-site-report \
  -H "api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "websiteurl": "https://example.com",
    "competitors": ["https://competitor.com"],
    "prompts": ["best tools for AI visibility tracking"]
  }'
{
  "message": "Report queued",
  "jobId": "123"
}

Poll with Async jobs until the job completes, then fetch the report.

Refresh an existing report

curl https://api.krastie.ai/v1/ai/generate/seo-site-report \
  -H "api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"refresh": true}'

Refresh reuses the previous websiteurl, competitors, and prompts when you omit overrides. Paid plans allow a limited number of refreshes per 24 hours.

Prefill competitors and prompts

POST /v1/ai/generate/seo-site-report/prefill

Suggests competitors and prompts from a website. Useful before queuing a full report.

FieldTypeDescription
websiteurlstringRequired HTTPS URL
competitorsstring[]Optional seed competitors
promptsstring[]Optional seed prompts (must stay within plan limit)
curl https://api.krastie.ai/v1/ai/generate/seo-site-report/prefill \
  -H "api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"websiteurl":"https://example.com"}'
{
  "message": "Prefill suggestions generated successfully",
  "promptLimit": 20,
  "input": {
    "websiteurl": "https://example.com",
    "competitors": [],
    "prompts": []
  },
  "suggestions": {
    "competitors": [],
    "prompts": []
  },
  "prefill": {
    "competitors": [],
    "prompts": []
  }
}

Use prefill.competitors and prefill.prompts when calling the report endpoint.

Get the latest report

GET /v1/ai/generate/seo-site-report

QueryDescription
sortdesc (default) or asc by createdAt
curl "https://api.krastie.ai/v1/ai/generate/seo-site-report" \
  -H "api-key: YOUR_KEY"

When no report exists:

{
  "message": "Seo Geo Report not found",
  "isEmpty": true
}

When a report exists, the response includes (shape abbreviated):

{
  "message": "Seo Geo Report fetched successfully",
  "isEmpty": false,
  "input": {
    "websiteurl": "https://example.com",
    "competitors": [],
    "prompts": []
  },
  "scores": {
    "aiVisibility": {
      "score": 72,
      "interpretation": null,
      "providers": {}
    }
  },
  "report": {},
  "recommendations": [],
  "refreshMeta": { "count": 0 }
}

Get visibility history

GET /v1/ai/generate/seo-site-report/history

Returns chronological score points for charts (overall, self, and competitor fields).

curl https://api.krastie.ai/v1/ai/generate/seo-site-report/history \
  -H "api-key: YOUR_KEY"
{
  "message": "Seo Geo Report history fetched successfully",
  "points": [
    {
      "timestamp": "2026-07-01T12:00:00.000Z",
      "time": "2026-07-01T12:00:00.000Z",
      "overall": 70,
      "self": 68
    }
  ]
}

Limits and errors

StatusCommon cause
400Missing/invalid websiteurl, no prior report for refresh, or too many prompts for the plan
403Free audit already used, refresh blocked on free plan, or AI credit limit reached
429Refresh limit reached (paid plans: limited refreshes per 24h)
500Failed to queue or generate the report

Website URLs must use https:// (not http://). Prompt counts are capped by plan. See Errors & rate limits.