API Reference
Public developer API for Agiler — manage projects, domains, backups, rules, files, SQL, variables, and billing programmatically.
Overview
Public developer API. Authenticate with an API token sent as `Authorization: Bearer <token>`. Issue tokens from the agiler dashboard at https://app.agiler.io.
Version: v1
Base URL: https://api.agiler.io/v1
Content type: application/json on all requests and responses unless noted on a specific endpoint.
OpenAPI spec: /openapi.json — download to generate an SDK (openapi-generator, Speakeasy, Fern) or import into Postman / Insomnia.
Contents
Authentication
apiKeyAuth ·
http (bearer)
API key issued by POST /auth/tokens, sent as `Authorization: Bearer <token>`. Scopes are fixed at issue time and enforced server-side.
curl -H "Authorization: Bearer $AGILER_TOKEN" \
https://api.agiler.io/v1/projectsScopes are fixed at token-issue time and enforced server-side. Each operation below lists the scopes it requires.
Errors
Errors return a non-2xx status and a JSON body shaped as an ErrorResponse:
{
"error": {
"code": "invalid_argument",
"field": "name",
"message": "name must not be empty"
}
}Common status codes used across the API:
| Status | Meaning |
|---|---|
400 | Malformed request body or parameters |
401 | Missing or invalid bearer token |
403 | Token lacks the required scope or the caller does not own the resource |
404 | Resource not found (or hidden from the caller) |
409 | Conflict — e.g. idempotency key reused with a different body |
429 | Rate limited; honor Retry-After |
500 | Server error; safe to retry idempotent calls |
Idempotency
Write endpoints accept an Idempotency-Key header — any opaque
string up to 128 characters (UUIDs work well). If the server has seen the
key on a prior request with the same body, the recorded response is
replayed. A different body under the same key returns 409.
Endpoints
Grouped by feature area; jump to a group from the contents.
Projects
get
/projects
List your projects
Scopes:
projects:read
Query parameters
workspace_idstring · uuid — Filter projects to a workspace id.cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:50
Responses
- 200
OK
· array of
ProjectSummary - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/projects
Create a project
Scopes:
projects:write
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 201
Created
·
ProjectDetail - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/projects/{project}
Delete a project
Scopes:
projects:write
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/projects/{project}
Get a project
Scopes:
projects:read
Path parameters
projectstring required
Responses
- 200
OK
·
ProjectDetail - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
patch
/projects/{project}
Update a project
Scopes:
projects:write
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 200
OK
·
ProjectDetail - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project Backups
get
/projects/{project}/backups
List backups for a project
Scopes:
projects.backups:read
Path parameters
projectstring required
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:50
Responses
- 200
OK
· array of
ProjectBackupEntry - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/projects/{project}/backups
Trigger an on-demand backup
Scopes:
projects.backups:write
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 201
Created
·
ProjectBackupEntry - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/projects/{project}/backups/policy
Get the project's backup policy
Scopes:
projects.backups:read
Path parameters
projectstring required
Responses
- 200
OK
·
ProjectBackupPolicyOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
patch
/projects/{project}/backups/policy
Update the project's backup policy
Scopes:
projects.backups:write
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
UpdateProjectBackupPolicyInput
Responses
- 200
OK
·
ProjectBackupPolicyOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/projects/{project}/backups/{backup}
Delete a backup
Scopes:
projects.backups:write
Path parameters
projectstring requiredbackupstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/projects/{project}/backups/{backup}/database
Download the database dump for a backup
Scopes:
projects.backups:read
Path parameters
projectstring requiredbackupstring required
Responses
- 200
OK
·
BinaryStream - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/projects/{project}/backups/{backup}/restore
Restore a backup (asynchronous; returns 202)
Scopes:
projects.backups:write
Path parameters
projectstring requiredbackupstring required
Query parameters
drain_requestsboolean — Wait for in-flight requests to drain before starting the restore. Defaults to false.
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 202 Accepted
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/projects/{project}/backups/{backup}/storage
Download the storage archive for a backup
Scopes:
projects.backups:read
Path parameters
projectstring requiredbackupstring required
Responses
- 200
OK
·
BinaryStream - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project Domains
get
/projects/{project}/domains
List domains attached to a project
Scopes:
projects.domains:read
Path parameters
projectstring required
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:50
Responses
- 200
OK
· array of
ProjectDomainOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/projects/{project}/domains
Attach a domain to a project
Scopes:
projects.domains:write
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 201
Created
·
ProjectDomainOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/projects/{project}/domains/{domain}
Detach a domain from a project
Scopes:
projects.domains:write
Path parameters
projectstring requireddomainstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
patch
/projects/{project}/domains/{domain}
Update a project domain (primary flag only today)
Scopes:
projects.domains:write
Path parameters
projectstring requireddomainstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 200
OK
·
ProjectDomainOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project Files
get
/projects/{project}/files
List the root of a project's file tree
Scopes:
projects.files:read
Path parameters
projectstring required
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:100
Responses
- 200
OK
· array of
ProjectFileEntry - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/projects/{project}/files/{path}
Delete a file or directory
Scopes:
projects.files:write
Path parameters
projectstring requiredpathstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/projects/{project}/files/{path}
List a directory or download a file (response shape depends on path)
Scopes:
projects.files:read
Path parameters
projectstring requiredpathstring required
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:100
Responses
- 200
OK
· array of
ProjectFileEntry·BinaryStream - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
put
/projects/{project}/files/{path}
Upload a file, or move/copy via X-Move-Source / X-Copy-Source headers
Scopes:
projects.files:write
Path parameters
projectstring requiredpathstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/octet-stream
string
Responses
- 200
OK
·
ProjectFileEntry - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project Logs
get
/projects/{project}/logs
Fetch project request logs
Scopes:
projects.logs:read
Path parameters
projectstring required
Query parameters
sincestring · date-time — RFC 3339 lower bound on the time window.untilstring · date-time — RFC 3339 upper bound on the time window.qstring — Free-text filter on log lines.cursorstring — Cursor for the next page.limitinteger — Maximum number of results to return. Default:100
Responses
- 200
OK
· array of
ProjectLogEventOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project Rules
get
/projects/{project}/rules
List a project's rules
Scopes:
projects.rules:read
Path parameters
projectstring required
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:50
Responses
- 200
OK
· array of
ProjectRuleOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/projects/{project}/rules
Create a project rule
Scopes:
projects.rules:write
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 201
Created
·
ProjectRuleOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/projects/{project}/rules/{rule}
Delete a project rule
Scopes:
projects.rules:write
Path parameters
projectstring requiredrulestring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/projects/{project}/rules/{rule}
Fetch a single project rule
Scopes:
projects.rules:read
Path parameters
projectstring requiredrulestring required
Responses
- 200
OK
·
ProjectRuleOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
patch
/projects/{project}/rules/{rule}
Update a project rule
Scopes:
projects.rules:write
Path parameters
projectstring requiredrulestring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 200
OK
·
ProjectRuleOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project SQL
get
/projects/{project}/sql/statements
List recent SQL statement executions
Scopes:
projects.sql:execute
Path parameters
projectstring required
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return.
Responses
- 200
OK
· array of
StatementListItem - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/projects/{project}/sql/statements
Execute a SQL statement against the project database
Scopes:
projects.sql:execute
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 200
Freeform JSON object proxied from the edge runtime; the shape is owned by that service and may evolve independently of this API.
·
FreeformObject - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/projects/{project}/sql/statements/{statement}
Cancel or delete a SQL statement execution
Scopes:
projects.sql:execute
Path parameters
projectstring requiredstatementstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/projects/{project}/sql/statements/{statement}
Fetch a single SQL statement execution by id
Scopes:
projects.sql:execute
Path parameters
projectstring requiredstatementstring required
Responses
- 200
Freeform JSON object proxied from the edge runtime; the shape is owned by that service and may evolve independently of this API.
·
FreeformObject - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project Usage
get
/projects/{project}/usage
Fetch project usage time-series
Scopes:
projects.usage:read
Path parameters
projectstring required
Query parameters
sincestring · date-time — RFC 3339 lower bound on the time window.untilstring · date-time — RFC 3339 upper bound on the time window.granularitystring — Bucket size for the returned series. Defaults to day. One of:hour,day,week,monthcursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of buckets to return. Default:30
Responses
- 200
OK
·
ProjectUsageResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Project Variables
get
/projects/{project}/variables
List project environment variables
Scopes:
projects.variables:read
Path parameters
projectstring required
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:100
Responses
- 200
OK
· array of
ProjectVariableOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/projects/{project}/variables
Create a project variable
Scopes:
projects.variables:write
Path parameters
projectstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 201
Created
·
ProjectVariableOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/projects/{project}/variables/{variable}
Delete a project variable
Scopes:
projects.variables:write
Path parameters
projectstring requiredvariablestring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
patch
/projects/{project}/variables/{variable}
Update a project variable
Scopes:
projects.variables:write
Path parameters
projectstring requiredvariablestring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 200
OK
·
ProjectVariableOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Regions
get
/regions
List public regions
Scopes:
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:50
Responses
- 200
OK
· array of
RegionOutput - 401
Unauthorized
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/regions/{region}
Fetch a single region
Scopes:
Path parameters
regionstring required
Responses
- 200
OK
·
RegionOutput - 401
Unauthorized
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Rules
get
/rules
List the rule condition / action catalog
Scopes:
Responses
- 200
OK
·
RuleOptionsOutput - 401
Unauthorized
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Runtimes
get
/runtimes
List public runtimes
Scopes:
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:50
Responses
- 200
OK
· array of
RuntimeOutput - 401
Unauthorized
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/runtimes/{runtimeid}
Fetch a single runtime
Scopes:
Path parameters
runtimeidstring required
Responses
- 200
OK
·
RuntimeOutput - 401
Unauthorized
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Users
get
/users/me
Fetch the authenticated user
Scopes:
Responses
- 200
OK
·
SelfUser - 401
Unauthorized
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Billing
get
/users/me/billing
Get the caller's billing profile
Scopes:
billing:read
Responses
- 200
OK
·
BillingOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
patch
/users/me/billing
Update billing budget and charge settings
Scopes:
billing:write
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 204 No Content
- 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/users/me/billing/payment-methods
List the caller's billing payment methods
Scopes:
billing:read
Responses
- 200
OK
· array of
PaymentMethodOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/users/me/billing/statements/{period}
Download a monthly billing statement as PDF
Scopes:
billing:read
Path parameters
periodstring required
Responses
- 200
OK
·
BinaryStream - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/users/me/billing/transactions
List billing transactions, grouped by month
Scopes:
billing:read
Query parameters
yearinteger — Filter to transactions in this four-digit year (UTC).monthinteger — Filter to transactions in this calendar month (1-12, UTC). Requires year.cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:12
Responses
- 200
OK
· array of
BillingTransactionMonth - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Notifications
get
/users/me/notifications
List the caller's notifications
Scopes:
notifications:read
Query parameters
cursorstring — Cursor for the next page (opaque; obtained from the previous response's Link rel="next").limitinteger — Maximum number of results to return. Default:50
Responses
- 200
OK
· array of
NotificationOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
delete
/users/me/notifications/{notification}
Dismiss a notification
Scopes:
notifications:write
Path parameters
notificationstring required
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Responses
- 204 No Content
- 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Verify
get
/users/me/verify
List the caller's pending verifications
Scopes:
Responses
- 200
OK
· array of
PendingVerification - 401
Unauthorized
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
workspaces
get
/workspaces
List your workspaces
Scopes:
projects:read
Responses
- 200
OK
· array of
WorkspaceOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
post
/workspaces
Create a workspace
Scopes:
projects:write
Header parameters
Idempotency-Keystring — Opaque client-supplied retry token (any string up to 128 chars; UUIDs work well). If the server has seen this key on a prior request with the same body, it replays the recorded response. A different body under the same key returns 409.
Request body
application/json
Responses
- 201
Created
·
WorkspaceOutput - 400
Bad Request
·
ErrorResponse - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 409
Conflict
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/workspaces/{workspace}
Get a workspace
Scopes:
projects:read
Path parameters
workspacestring required
Responses
- 200
OK
·
WorkspaceOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/workspaces/{workspace}/billing-transfer
Get pending workspace billing transfer
Scopes:
projects:read
Path parameters
workspacestring required
Responses
- 200
OK
·
WorkspaceBillingTransferOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
get
/workspaces/{workspace}/members
List workspace members and pending invites
Scopes:
projects:read
Path parameters
workspacestring required
Responses
- 200
OK
· array of
WorkspaceMemberOutput - 401
Unauthorized
·
ErrorResponse - 403
Forbidden
·
ErrorResponse - 404
Not Found
·
ErrorResponse - 429
Too Many Requests
·
ErrorResponse - 500
Internal Server Error
·
ErrorResponse
Schemas
Object shapes referenced by the operations above.
BillingOutput
account_idstring requiredaddress_citystring requiredaddress_countrystring requiredaddress_line1string requiredaddress_line2string requiredaddress_statestring requiredaddress_zipstring requiredbrandstring requiredbudget_alertsarray of integer requiredbudget_stopboolean requiredcharge_amountinteger requiredcharge_thresholdinteger requiredexp_monthinteger requiredexp_yearinteger requiredforce_updatestring · date-timelast4string requiredmonthly_budgetinteger requirednamestring requiredupdateboolean
BillingTransactionEntry
amountinteger requiredcreated_atstring · date-time requireddescriptionstring requiredexpires_atstring · date-time
BillingTransactionMonth
balanceinteger requiredcreated_atstring · date-time requiredmonthinteger requiredtxarray ofBillingTransactionEntryrequiredyearinteger required
BinaryStream
string · binary
CreateProjectDomainInput
namestring requiredprimaryboolean
CreateProjectInput
namestring requiredregionstring requiredruntimestring requiredworkspace_idstring · uuid e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2f
CreateProjectRuleInput
actionsarray ofRuleStatementrequiredactivebooleanconditionsobject requirednamestring requiredprioritynumber
CreateProjectVariableInput
namestring requiredsensitivebooleanvaluestring required
CreateSQLStatementInput
read_onlyboolean requiredsqlstring requiredtimeoutinteger
CreateWorkspaceInput
namestring required
ErrorPayload
codestring requiredfieldstringidstringmessagestring requiredresourcestring
ErrorResponse
errorErrorPayloadrequired
FreeformObject
object — Freeform JSON object proxied from the edge runtime; the shape is owned by that service and may evolve independently of this API.
NotificationOutput
created_atstring · date-time requireddescriptionstring requiredidstring requirednamestring requiredprioritystring requiredtitlestring requiredurlstring required
PaymentMethodAddressOutput
citystring requiredcountrystring requiredline1string requiredline2string requiredpostal_codestring requiredstatestring required
PaymentMethodBillingDetailsOutput
addressPaymentMethodAddressOutputrequirednamestring required
PaymentMethodCardOutput
brandstring requiredexp_monthinteger requiredexp_yearinteger requiredlast4string required
PaymentMethodOutput
billing_detailsPaymentMethodBillingDetailsOutputrequiredcardPaymentMethodCardOutputrequiredidstring requiredis_defaultboolean requiredtypestring required
PendingVerification
channelstring requiredexpires_atstring · date-timetargetstring required
ProjectBackupEntry
automaticboolean requiredcreated_atstring · date-time requireddatabase_sizeintegeridstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fruntimestringsizeintegerstatusstring requiredstorage_sizeinteger
ProjectBackupPolicyOutput
frequency_daysinteger requiredretention_daysinteger required
ProjectDetail
activeboolean requiredcreated_atstring · date-time requiredidstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fnamestring requiredregionstring requiredruntimestring requiredstatusstring requiredupdated_atstring · date-time requiredworkspace_idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2f
ProjectDomainOutput
created_atstring · date-time requiredidstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fnamestring requiredprimaryboolean required
ProjectFileEntry
etagstringis_dirboolean requiredmodified_atstring · date-time requirednamestring requiredpathstring requiredsizeinteger required
ProjectLogEventOutput
messagestring requiredprioritystring requiredrequest_idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2ftimestampstring · date-time required
ProjectRuleOutput
actionsarray ofRuleStatementrequiredactiveboolean requiredconditionsobject requiredcreated_atstring · date-time requiredidstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fnamestring requiredpriorityinteger requiredupdated_atstring · date-time required
ProjectSummary
activeboolean requiredcreated_atstring · date-time requiredidstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fnamestring requiredregionstring requiredruntimestring requiredstatusstring requiredupdated_atstring · date-time requiredworkspace_idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2f
ProjectUsageOutput
backup_sizeinteger requireddatabase_sizeinteger requireddatatransfer_outinteger requiredduration_averageinteger requiredduration_totalinteger requiredevents_atstring · date-time requiredrequests_totalinteger requiredrequests_workerinteger requiredresponses_1xxinteger requiredresponses_2xxinteger requiredresponses_3xxinteger requiredresponses_4xxinteger requiredresponses_5xxinteger requiredstorage_sizeinteger required
ProjectUsageResponse
itemsarray ofProjectUsageOutputrequiredtotalsProjectUsageTotalsrequired
ProjectUsageTotals
backup_sizeinteger requireddatabase_sizeinteger requireddatatransfer_outinteger requiredduration_averageinteger requiredduration_totalinteger requiredrequests_totalinteger requiredrequests_workerinteger requiredresponses_1xxinteger requiredresponses_2xxinteger requiredresponses_3xxinteger requiredresponses_4xxinteger requiredresponses_5xxinteger requiredstorage_sizeinteger required
ProjectVariableOutput
idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fnamestring requiredsensitiveboolean requiredvaluestring
RegionOutput
created_atstring · date-time requireddescriptionstring requiredidstring requiredupdated_atstring · date-time required
RuleActionOption
allowed_valuesarray of string — Domain of allowed values when this action takes one. Omitted for terminal actions that take no value (e.g. "end").descriptionstring — Human-readable explanation of the action's effect.factstring — Dotted fact key the action mutates. Omitted for terminal actions like "end".operatorstring required — Action operator code (e.g. "set", "end").
RuleCatalogNotes
conditions_shapestring required — How to build the conditions object: a JSON object containing one or more of 'all' (AND), 'any' (OR), or 'not' (negated AND). Each maps to an array of statements.statement_shapestring required — How to build a single rule statement from a catalog entry: copy fact/operator from the entry, then supply a single string 'value' (NOT 'values') chosen from the entry's 'allowed_values' domain.terminal_action_endstring required — Explanation of the special {"operator":"end"} action.
RuleConditionOption
allowed_valuesarray of string required — Domain of allowed value strings. A single "*" entry means any string is accepted; a literal list like ["http","https"] means the value must be one of those exact strings. Each rule statement carries a single value (the request shape's "value" field), not this array.descriptionstring — Human-readable note about when this fact is observable and how the engine evaluates it.factstring required — Dotted fact key, e.g. "request.method". A trailing ".*" ("request.header.*") means any sub-key is accepted.operatorsarray of string required — Operator codes allowed for this fact when used inside conditions.all / .any / .not arrays.
RuleOptionsOutput
actionsarray ofRuleActionOptionrequiredconditionsarray ofRuleConditionOptionrequirednotesRuleCatalogNotesrequiredtemplatesarray ofRuleTemplateOutputrequired
RuleStatement
factstringoperatorstringvaluestring
RuleTemplateOutput
actionsarray ofRuleStatementrequiredconditionsobject requirednamestring required
RuntimeOutput
created_atstring · date-time requireddeprecated_atstring · date-timedescriptionstring requiredidstring requiredupdated_atstring · date-time required
SelfUser
created_atstring · date-time requiredeffective_scopesarray of string requiredemailstring requiredidstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fnamestring required
StatementListItem
duration_msintegeridstring requiredsql_previewstring requiredstatusstring requiredsubmitted_atstring required
UpdateBillingInput
budget_alertsarray of integerbudget_stopbooleancharge_amountintegercharge_thresholdintegermonthly_budgetinteger
UpdateProjectBackupPolicyInput
frequency_daysintegerretention_daysinteger
UpdateProjectDomainInput
primaryboolean
UpdateProjectInput
activebooleannamestringruntimestringworkspace_idstring
UpdateProjectRuleInput
actionsarray ofRuleStatementactivebooleanconditionsobjectnamestringprioritynumber
UpdateProjectVariableInput
namestringsensitivebooleanvaluestring
WorkspaceBillingTransferOutput
created_atstring · date-time requiredidstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2frequested_by_emailstring requiredrequested_by_namestringrequested_by_user_idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2ftarget_emailstring requiredtarget_namestringtarget_user_idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fupdated_atstring · date-time requiredworkspace_idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2f
WorkspaceMemberOutput
created_atstring · date-time requiredemailstring requiredexpires_atstring · date-timeinvite_idstring · uuid e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fis_billing_userboolean requiredmfa_enabledbooleannamestringrolestring requiredstatusstring requiredupdated_atstring · date-time requireduser_idstring · uuid e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2f
WorkspaceOutput
billing_user_idstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fcreated_atstring · date-time requiredidstring · uuid required e.g.01935d3d-9d8c-7a30-9b1f-3b3a8e1c5a2fnamestring requiredrequire_mfaboolean requiredrolestring requiredupdated_atstring · date-time required
© 2026 Agiler. All rights reserved.
The WordPress® trademark is the intellectual property of the WordPress Foundation, and the Woo® and WooCommerce® trademarks are the intellectual property of WooCommerce, Inc. Uses of the WordPress®, Woo®, and WooCommerce® names in this website are for identification purposes only and do not imply an endorsement by WordPress Foundation or WooCommerce, Inc. Agiler is not endorsed or owned by, or affiliated with, the WordPress Foundation or WooCommerce, Inc.