Authentication
The account API manages things that belong to your EZsite account rather than to one table: custom domains and database usage. It is the same API the EZsite MCP server calls.
API key
Create a key in EZsite: open Settings → MCP API Keys and click Create. Copy it straight away: it is shown once and stored only as a hash.
A key acts as your whole account. Keys have no scopes: anyone holding one can do anything you can do through the API. Treat it like a password.
Base URL and headers
https://ezsite.ai/autodev
Every request sends the key as a bearer token:
Authorization: Bearer <your API key>
Content-Type: application/json
Endpoints are /{Controller}/{Action}, for example GET https://ezsite.ai/autodev/Domain/Get?id=123. Query parameters go in the URL; endpoints that take a body (marked POST) take JSON.
Response format
Every response has the same envelope:
{
"Success": true,
"Code": 200,
"Message": "",
"Data": { }
}
Success: falsemeans the call failed.Messagesays why in plain English (for example"Domain not found."or"Publish the project first, then connect the domain to it."). Show or logMessage; don't parse it.Dataholds the result. It isnullfor actions that return nothing.- An invalid or revoked key returns
Success: false,Code: 401,Message: "Authentication failed". CheckSuccess, not the HTTP status (failures also come back with HTTP 200).
Calling from your backend
Call the API from server-side code only, never from the browser: a key in front-end code is visible to every visitor.
From an EZsite backend (Edge) function, store the key as a project environment variable (for example EZSITE_API_KEY). The platform injects it at runtime, so it never appears in your code:
const res = await fetch("https://ezsite.ai/autodev/Domain/Get?id=123", {
headers: { Authorization: `Bearer ${Deno.env.get("EZSITE_API_KEY")}` },
});
const body = await res.json();
if (!body.Success) throw new Error(body.Message);
const domain = body.Data;
Rotating a key
- Create a new key under Settings → MCP API Keys.
- Update the secret your backend reads.
- Revoke the old key in the same list. Its Last Used column shows whether anything still uses it.
Limits
There is no published request quota, but please keep automated calls to about one per second and poll statuses every few minutes rather than in a tight loop. Endpoint-specific limits are listed on each page.