Skip to Content
APIOverview

API

The Asky API lets you pull your AI-search visibility data into your own systems: a data warehouse, a BI tool, an internal dashboard, or any automation you run.

It is a REST API over HTTPS. It returns JSON, uses standard HTTP status codes, and authenticates with a workspace API key you create in Settings.

The API is available on request while we onboard the first workspaces. If you do not see the API keys tab in Settings, contact us and we will enable it for your workspace.

Base URL

https://api.askylabs.com/v1

Every request must use HTTPS. Requests over plain HTTP are refused rather than redirected, because a redirect would send your API key over an unencrypted connection first.

Reads and writes

Almost everything in v1 is a GET. The write surface is deliberately small and, for now, covers topics only: creating, renaming and deleting them.

Writes are off unless your workspace is explicitly enabled for them. Every key is minted read-only, and a key can only carry a write permission if the workspace holds the write entitlement at the moment the key is created. If yours does not, a write returns 403 plan_required and a leaked key cannot alter anything.

Every write also requires an Idempotency-Key, so a retried request cannot apply twice.

What you can read

AreaExamples
VisibilityDaily visibility and mention rate, per engine, per topic, per country
CompetitorsShare of voice, rankings, and per-competitor profiles
PromptsTracked prompts, their metrics over time, individual executions, and the AI answers behind them
CitationsCited domains and URLs, earned mentions, and per-domain drill-downs
WebsiteIndexed pages and how they perform as citation sources

The full endpoint list lives in the OpenAPI specification , which is generated from the same definitions that serve the API, so it never drifts from the implementation.

Your first request

curl https://api.askylabs.com/v1/me \ -H "Authorization: Bearer asky_sk_..."
{ "data": { "workspace_id": "8f14e45f-...", "scopes": ["read:basic", "read:visibility", "read:citations", "read:prompts", "read:opportunities", "read:website", "read:content"], "brand_access": "all", "created_by": "8f14e45f-..." }, "request_id": "req_01J8Z3K9QW" }

See the quickstart for a complete walkthrough.

Response shape

Every successful response is a JSON object with the same top-level keys.

{ "data": [ ... ], "pagination": { "limit": 20, "has_more": true, "next_cursor": "eyJrIjoi..." }, "meta": { "period": { "start_date": "2026-07-15", "end_date": "2026-08-14" } }, "request_id": "req_01J8Z3K9QW" }
  • data holds the result. It is an object for single resources and an array for lists.
  • pagination appears only on list endpoints. See pagination.
  • meta describes the result set rather than any row in it, most often the date window actually used. It appears only where an endpoint has something to say.
  • request_id identifies this exact request in our logs. Include it in any support conversation.

Errors use a different envelope, described in error handling.

Treat response objects as open. We add fields within a version, so your client must ignore properties it does not recognise. See versioning.

Where to go next

If you want your AI assistant to query Asky conversationally rather than writing an integration, use the MCP server instead. It reads the same data through a different door.

Last updated on