REST API 3 min read

abTestBot REST API

Programmatic access to your A/B testing workflows — manage sites, generate test ideas, create experiments, and receive event webhooks. The REST API is designed for traditional server-to-server integrations (cron jobs, internal tooling, webhooks out of your systems into ours).

For AI agents and LLM assistants, see the Agent Gateway docs (MCP + A2A protocols).


Base URL

https://api.abtestbot.com

All endpoints are under /v1/.


Authentication

All requests require a bearer token:

Authorization: Bearer sk_live_...

Keys are issued from Settings → API in the dashboard. Each key is scoped to one workspace. The raw key is shown once at creation — we only store a SHA-256 hash, so keep it somewhere safe.

Access requirement: Your workspace must have api_enabled = true. This is enabled automatically on the Enterprise plan.


Your first call

curl https://api.abtestbot.com/v1/sites \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

Response:

{
  "data": [
    {
      "id": "e0e3f741-3314-4e88-925f-327b08ecf9d2",
      "name": "mystore",
      "url": "https://mystore.com",
      "platform": "shopify",
      "crawl_status": "ok",
      "created_at": "2026-04-15T11:40:06.712852+00:00",
      "updated_at": "2026-04-15T11:40:06.712852+00:00"
    }
  ],
  "meta": {
    "workspace_id": "c6fc0b67-e01b-4b91-8fcc-de419b2ba044"
  }
}

Response shape

Success (2xx):

{
  "data": <resource or array>,
  "meta": {
    "workspace_id": "uuid"
  }
}

Error (non-2xx):

{
  "error": {
    "code": "validation_error",
    "message": "site_id is required"
  }
}

See errors.md for the full list of error codes and recovery guidance.


Rate limits

60 requests per minute per API key (sliding window).

Every response includes rate-limit headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1714147200

When exceeded, you receive 429 Too Many Requests with a Retry-After header (seconds until reset). Back off and retry after that interval.


Pagination

List endpoints (/v1/ideas, /v1/experiments, etc.) support limit and offset query parameters:

GET /v1/ideas?site_id=<uuid>&limit=50&offset=100
  • limit — max results per request (default 20, cap 100)
  • offset — number of records to skip (default 0)

Results are always ordered created_at DESC.


Next steps