Skip to content

API

Base URL: https://api.endlesstesting.ai

et calls this API. Set ET_API to use another base. Send the account token from et login as a Bearer token:

Terminal window
curl https://api.endlesstesting.ai/api/domains \
-H "Authorization: Bearer $ET_TOKEN"

This API does not publish an OpenAPI file. GET /api/openapi.json is not a route.

A domain key (et_live_...) is accepted on routes that allow an API key, as Authorization: Bearer or X-API-Key. A session that does not own a site gets 404. A key for a different site gets 403.

Commands that take a site look it up with GET /api/domains, then call the route below. et snippet does not have its own route. It prints HTML from that site list.

CommandMethodPath
et login --emailPOST/api/cli/login/email
et login --codePOST/api/cli/login/code
et logoutPOST/api/cli/logout
et whoamiGET/api/auth/verify
et sitesGET/api/domains
et site addPOST/api/domains
et checkGET/api/domains/:id/signals
et goalsGET/api/conversion-metrics/:domainId
et goal setPOST/api/conversion-metrics/:domainId
et brandGET/api/brand-context/domain/:domainId
et brand setPATCH/api/brand-context/:id
et brand autofillPOST/api/brand-context/:domainId/auto-fill
et round startPOST/api/variants/ai-run/targets
et status, et results, et feedGET/api/runs/domain/:domainId/tests
et pausePOST/api/tests/:id/pause
et resumePOST/api/tests/:id/resume
et rejectPOST/api/variants/:id/status
et kill <site> onPOST/api/domains/:id/kill-switch/activate
et kill <site> offPOST/api/domains/:id/kill-switch/deactivate

et brand set sends POST /api/brand-context when the site has no brand row yet. et brand autofill saves the suggestions with that same POST.

The SDK calls these from a visitor’s browser. They take no token:

  • GET /api/sdk.js: the SDK script
  • POST /api/events: event tracking
  • GET /api/tests/by-url-allocations: variant allocation
  • GET /api/tests/by-url: variant lists for the on-site preview
  • GET /api/conversion-metrics/:domainId: goal keywords for the page
  • GET /api/health: health check

POST /api/cli/login/email and POST /api/cli/login/code also take no stored token. They create one.