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:
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.
Routes et calls
Section titled “Routes et calls”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.
| Command | Method | Path |
|---|---|---|
et login --email | POST | /api/cli/login/email |
et login --code | POST | /api/cli/login/code |
et logout | POST | /api/cli/logout |
et whoami | GET | /api/auth/verify |
et sites | GET | /api/domains |
et site add | POST | /api/domains |
et check | GET | /api/domains/:id/signals |
et goals | GET | /api/conversion-metrics/:domainId |
et goal set | POST | /api/conversion-metrics/:domainId |
et brand | GET | /api/brand-context/domain/:domainId |
et brand set | PATCH | /api/brand-context/:id |
et brand autofill | POST | /api/brand-context/:domainId/auto-fill |
et round start | POST | /api/variants/ai-run/targets |
et status, et results, et feed | GET | /api/runs/domain/:domainId/tests |
et pause | POST | /api/tests/:id/pause |
et resume | POST | /api/tests/:id/resume |
et reject | POST | /api/variants/:id/status |
et kill <site> on | POST | /api/domains/:id/kill-switch/activate |
et kill <site> off | POST | /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.
Public routes
Section titled “Public routes”The SDK calls these from a visitor’s browser. They take no token:
GET /api/sdk.js: the SDK scriptPOST /api/events: event trackingGET /api/tests/by-url-allocations: variant allocationGET /api/tests/by-url: variant lists for the on-site previewGET /api/conversion-metrics/:domainId: goal keywords for the pageGET /api/health: health check
POST /api/cli/login/email and POST /api/cli/login/code also take no stored token. They create one.