---
# @generated by sylphx-gen 0.1.0 from contracts@e145cc7cf1bc9605f2b27439e5e17ed76a1a2fd7e7021906a013f7565e4a0cd5. Do not edit.
title: "API reference"
description: "The Sylphx API: authentication, resource names, pagination, idempotency, errors, versions and Watch."
type: reference
product: platform
summary: "Every service, collection, method and error code, generated from the contracts."
updated: 2026-09-28
order: 8
---

The Sylphx API is one HTTP API for the whole platform, at
`https://api.sylphx.com/v1`. Every page in this reference is generated from
the protobuf contracts in `contracts/` — the same contracts the SDKs, the CLI
and the Terraform provider come from — so a method that is not here is not
served, and a field that is here is a field the API takes.

## Authentication

Every call carries one key in `Authorization: Bearer`: a secret key
(`sylphx_sk_…`) from a server, or a publishable key (`sylphx_pk_…`) from a
browser or a mobile app. A publishable key reaches only the methods marked
**callable with a publishable key**:
9 of the 536 methods in this reference.

Keys, their kinds and their scopes are in
[Keys and scopes](/docs/platform/keys-and-scopes); the scope a method needs is
on its page.

## Names

Everything the API holds is a Resource with one canonical name
([AIP-122](https://google.aip.dev/122)):

```text
orgs/{org}
orgs/{org}/projects/{project}
orgs/{org}/projects/{project}/envs/{env}
{parent}/{collection}/{id}
```

The collection segment is a snake_case plural, unique across the whole
registry, so it identifies its service on its own. Below the environment the
caller names the id on Create (`database_id`), and the server assigns one when
it is omitted. `-` stands for any parent segment on List
([AIP-159](https://google.aip.dev/159)). The registry's Resources:

| Resource type | Collection | Name pattern |
| --- | --- | --- |
| `access.sylphx.com/ApiKey` | [api_keys](/docs/api/api_keys) | `orgs/{org}/projects/{project}/envs/{env}/api_keys/{api_key}` |
| `access.sylphx.com/Environment` | [envs](/docs/api/envs) | `orgs/{org}/projects/{project}/envs/{env}` |
| `access.sylphx.com/Org` | [orgs](/docs/api/orgs) | `orgs/{org}` |
| `access.sylphx.com/Project` | [projects](/docs/api/projects) | `orgs/{org}/projects/{project}` |
| `ai.sylphx.com/AiModel` | [ai_models](/docs/api/ai_models) | `ai_models/{ai_model}` |
| `artifacts.sylphx.com/Artifact` | [artifacts](/docs/api/artifacts) | `orgs/{org}/projects/{project}/artifacts/{artifact}` |
| `assets.sylphx.com/Asset` | [assets](/docs/api/assets) | `orgs/{org}/projects/{project}/envs/{env}/assets/{asset}` |
| `auth.sylphx.com/AuthConfig` | [auth_configs](/docs/api/auth_configs) | `orgs/{org}/projects/{project}/envs/{env}/auth_configs/{auth_config}` |
| `auth.sylphx.com/CustomerOrganization` | [customer_organizations](/docs/api/customer_organizations) | `orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}` |
| `auth.sylphx.com/EmailDomain` | [email_domains](/docs/api/email_domains) | `orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/email_domains/{email_domain}` |
| `auth.sylphx.com/EndUser` | [end_users](/docs/api/end_users) | `orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}` |
| `auth.sylphx.com/Invitation` | [invitations](/docs/api/invitations) | `orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/invitations/{invitation}` |
| `auth.sylphx.com/Membership` | [memberships](/docs/api/memberships) | `orgs/{org}/projects/{project}/envs/{env}/customer_organizations/{customer_organization}/memberships/{membership}` |
| `auth.sylphx.com/OauthClient` | [oauth_clients](/docs/api/oauth_clients) | `orgs/{org}/projects/{project}/envs/{env}/oauth_clients/{oauth_client}` |
| `auth.sylphx.com/OrganizationRole` | [organization_roles](/docs/api/organization_roles) | `orgs/{org}/projects/{project}/envs/{env}/organization_roles/{organization_role}` |
| `auth.sylphx.com/Session` | [sessions](/docs/api/sessions) | `orgs/{org}/projects/{project}/envs/{env}/end_users/{end_user}/sessions/{session}` |
| `billing.sylphx.com/BillingAccount` | [billing_accounts](/docs/api/billing_accounts) | `orgs/{org}/billing_accounts/{billing_account}` |
| `billing.sylphx.com/BudgetLease` | [budget_leases](/docs/api/budget_leases) | `orgs/{org}/budget_leases/{budget_lease}` |
| `billing.sylphx.com/Invoice` | [invoices](/docs/api/invoices) | `orgs/{org}/invoices/{invoice}` |
| `billing.sylphx.com/Meter` | [meters](/docs/api/meters) | `meters/{meter}` |
| `billing.sylphx.com/Plan` | [plans](/docs/api/plans) | `plans/{plan}` |
| `billing.sylphx.com/UsageReport` | [usage_reports](/docs/api/usage_reports) | `orgs/{org}/usage_reports/{usage_report}` |
| `broker.sylphx.com/TrustPolicy` | [trust_policies](/docs/api/trust_policies) | `orgs/{org}/trust_policies/{trust_policy}` |
| `build.sylphx.com/Build` | [builds](/docs/api/builds) | `orgs/{org}/projects/{project}/builds/{build}` |
| `build.sylphx.com/BuildCache` | [build_caches](/docs/api/build_caches) | `orgs/{org}/projects/{project}/build_caches/{build_cache}` |
| `config.sylphx.com/ConfigChange` | [config_changes](/docs/api/config_changes) | `orgs/{org}/projects/{project}/envs/{env}/config_changes/{config_change}` |
| `config.sylphx.com/ConfigFlag` | [config_flags](/docs/api/config_flags) | `orgs/{org}/projects/{project}/envs/{env}/config_flags/{config_flag}` |
| `config.sylphx.com/ConfigSegment` | [config_segments](/docs/api/config_segments) | `orgs/{org}/projects/{project}/envs/{env}/config_segments/{config_segment}` |
| `connections.sylphx.com/Connection` | [connections](/docs/api/connections) | `orgs/{org}/connections/{connection}` |
| `connections.sylphx.com/ConnectionProvider` | [connection_providers](/docs/api/connection_providers) | `orgs/{org}/connection_providers/{connection_provider}` |
| `data.sylphx.com/Bucket` | [buckets](/docs/api/buckets) | `orgs/{org}/projects/{project}/envs/{env}/buckets/{bucket}` |
| `data.sylphx.com/Database` | [databases](/docs/api/databases) | `orgs/{org}/projects/{project}/envs/{env}/databases/{database}` |
| `data.sylphx.com/KvNamespace` | [kv_namespaces](/docs/api/kv_namespaces) | `orgs/{org}/projects/{project}/envs/{env}/kv_namespaces/{kv_namespace}` |
| `data.sylphx.com/SearchIndex` | [search_indexes](/docs/api/search_indexes) | `orgs/{org}/projects/{project}/envs/{env}/search_indexes/{search_index}` |
| `entitlement.sylphx.com/Entitlement` | [entitlements](/docs/api/entitlements) | `orgs/{org}/entitlements/{entitlement}` |
| `events.sylphx.com/Connector` | [connectors](/docs/api/connectors) | `orgs/{org}/projects/{project}/envs/{env}/connectors/{connector}` |
| `events.sylphx.com/Event` | [events](/docs/api/events) | `orgs/{org}/projects/{project}/envs/{env}/events/{event}` |
| `events.sylphx.com/InboundEndpoint` | [inbound_endpoints](/docs/api/inbound_endpoints) | `orgs/{org}/projects/{project}/envs/{env}/inbound_endpoints/{inbound_endpoint}` |
| `events.sylphx.com/Queue` | [queues](/docs/api/queues) | `orgs/{org}/projects/{project}/envs/{env}/queues/{queue}` |
| `events.sylphx.com/RealtimeChannel` | [realtime_channels](/docs/api/realtime_channels) | `orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}` |
| `events.sylphx.com/RealtimeMember` | [realtime_members](/docs/api/realtime_members) | `orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}/realtime_members/{realtime_member}` |
| `events.sylphx.com/RealtimeMessage` | [realtime_messages](/docs/api/realtime_messages) | `orgs/{org}/projects/{project}/envs/{env}/realtime_channels/{realtime_channel}/realtime_messages/{realtime_message}` |
| `events.sylphx.com/Subscription` | [subscriptions](/docs/api/subscriptions) | `orgs/{org}/projects/{project}/envs/{env}/subscriptions/{subscription}` |
| `events.sylphx.com/Topic` | [topics](/docs/api/topics) | `orgs/{org}/projects/{project}/envs/{env}/topics/{topic}` |
| `events.sylphx.com/WebhookDelivery` | [webhook_deliveries](/docs/api/webhook_deliveries) | `orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}/webhook_deliveries/{webhook_delivery}` |
| `events.sylphx.com/WebhookEndpoint` | [webhook_endpoints](/docs/api/webhook_endpoints) | `orgs/{org}/projects/{project}/envs/{env}/webhook_endpoints/{webhook_endpoint}` |
| `hosting.sylphx.com/Preview` | [previews](/docs/api/previews) | `orgs/{org}/projects/{project}/envs/{env}/previews/{preview}` |
| `hosting.sylphx.com/Rollout` | [service_rollouts](/docs/api/service_rollouts) | `orgs/{org}/projects/{project}/envs/{env}/services/{service}/service_rollouts/{rollout}` |
| `hosting.sylphx.com/Service` | [services](/docs/api/services) | `orgs/{org}/projects/{project}/envs/{env}/services/{service}` |
| `hosting.sylphx.com/SourceLink` | [source_links](/docs/api/source_links) | `orgs/{org}/projects/{project}/source_links/{source_link}` |
| `keys.sylphx.com/Key` | [keys](/docs/api/keys) | `orgs/{org}/projects/{project}/envs/{env}/keys/{key}` |
| `keys.sylphx.com/KeyVersion` | [key_versions](/docs/api/key_versions) | `orgs/{org}/projects/{project}/envs/{env}/keys/{key}/key_versions/{key_version}` |
| `localization.sylphx.com/Catalog` | [catalogs](/docs/api/catalogs) | `orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}` |
| `localization.sylphx.com/CatalogEntry` | [entries](/docs/api/entries) | `orgs/{org}/projects/{project}/envs/{env}/catalogs/{catalog}/entries/{entry}` |
| `localization.sylphx.com/Glossary` | [glossaries](/docs/api/glossaries) | `orgs/{org}/projects/{project}/envs/{env}/glossaries/{glossary}` |
| `money.sylphx.com/CheckoutSession` | [checkout_sessions](/docs/api/checkout_sessions) | `orgs/{org}/projects/{project}/envs/{env}/checkout_sessions/{checkout_session}` |
| `money.sylphx.com/CustomerSubscription` | [customer_subscriptions](/docs/api/customer_subscriptions) | `orgs/{org}/projects/{project}/envs/{env}/customer_subscriptions/{customer_subscription}` |
| `money.sylphx.com/EntitlementGrant` | [entitlement_grants](/docs/api/entitlement_grants) | `orgs/{org}/projects/{project}/envs/{env}/entitlement_grants/{entitlement_grant}` |
| `money.sylphx.com/MerchantAccount` | [merchant_accounts](/docs/api/merchant_accounts) | `orgs/{org}/projects/{project}/envs/{env}/merchant_accounts/{merchant_account}` |
| `money.sylphx.com/PortalSession` | [portal_sessions](/docs/api/portal_sessions) | `orgs/{org}/projects/{project}/envs/{env}/portal_sessions/{portal_session}` |
| `money.sylphx.com/PriceCatalog` | [price_catalogs](/docs/api/price_catalogs) | `orgs/{org}/projects/{project}/envs/{env}/price_catalogs/{price_catalog}` |
| `money.sylphx.com/StoreConnection` | [store_connections](/docs/api/store_connections) | `orgs/{org}/projects/{project}/envs/{env}/store_connections/{store_connection}` |
| `money.sylphx.com/StorePurchase` | [store_purchases](/docs/api/store_purchases) | `orgs/{org}/projects/{project}/envs/{env}/store_purchases/{store_purchase}` |
| `network.sylphx.com/Certificate` | [certificates](/docs/api/certificates) | `orgs/{org}/projects/{project}/certificates/{certificate}` |
| `network.sylphx.com/Domain` | [domains](/docs/api/domains) | `orgs/{org}/projects/{project}/domains/{domain}` |
| `network.sylphx.com/EgressIdentity` | [egress_identities](/docs/api/egress_identities) | `orgs/{org}/projects/{project}/egress_identities/{egress_identity}` |
| `network.sylphx.com/PrivateLink` | [private_links](/docs/api/private_links) | `orgs/{org}/projects/{project}/envs/{env}/private_links/{private_link}` |
| `network.sylphx.com/Route` | [routes](/docs/api/routes) | `orgs/{org}/projects/{project}/envs/{env}/routes/{route}` |
| `notify.sylphx.com/Broadcast` | [broadcasts](/docs/api/broadcasts) | `orgs/{org}/projects/{project}/envs/{env}/broadcasts/{broadcast}` |
| `notify.sylphx.com/EmailDomain` | [mail_domains](/docs/api/mail_domains) | `orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}` |
| `notify.sylphx.com/InboundEmail` | [inbound_emails](/docs/api/inbound_emails) | `orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}/inbound_emails/{inbound_email}` |
| `notify.sylphx.com/InboxItem` | [inbox_items](/docs/api/inbox_items) | `orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/inbox_items/{inbox_item}` |
| `notify.sylphx.com/Mailbox` | [mailboxes](/docs/api/mailboxes) | `orgs/{org}/projects/{project}/envs/{env}/mailboxes/{mailbox}` |
| `notify.sylphx.com/Message` | [messages](/docs/api/messages) | `orgs/{org}/projects/{project}/envs/{env}/messages/{message}` |
| `notify.sylphx.com/Preference` | [preferences](/docs/api/preferences) | `orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}/preferences/{preference}` |
| `notify.sylphx.com/Recipient` | [recipients](/docs/api/recipients) | `orgs/{org}/projects/{project}/envs/{env}/recipients/{recipient}` |
| `notify.sylphx.com/Route` | [mail_routes](/docs/api/mail_routes) | `orgs/{org}/projects/{project}/envs/{env}/mail_domains/{mail_domain}/mail_routes/{mail_route}` |
| `notify.sylphx.com/Sender` | [senders](/docs/api/senders) | `orgs/{org}/projects/{project}/envs/{env}/senders/{sender}` |
| `notify.sylphx.com/Suppression` | [suppressions](/docs/api/suppressions) | `orgs/{org}/projects/{project}/envs/{env}/suppressions/{suppression}` |
| `notify.sylphx.com/Template` | [templates](/docs/api/templates) | `orgs/{org}/projects/{project}/envs/{env}/templates/{template}` |
| `observability.sylphx.com/ErrorEvent` | [error_events](/docs/api/error_events) | `orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}/error_events/{error_event}` |
| `observability.sylphx.com/ErrorGroup` | [error_groups](/docs/api/error_groups) | `orgs/{org}/projects/{project}/envs/{env}/error_groups/{error_group}` |
| `observability.sylphx.com/LogEntry` | [log_entries](/docs/api/log_entries) | `orgs/{org}/projects/{project}/envs/{env}/log_entries/{log_entry}` |
| `observability.sylphx.com/ScrubbingPolicy` | [scrubbing_policies](/docs/api/scrubbing_policies) | `orgs/{org}/projects/{project}/envs/{env}/scrubbing_policies/{scrubbing_policy}` |
| `observability.sylphx.com/SourceMap` | [source_maps](/docs/api/source_maps) | `orgs/{org}/projects/{project}/envs/{env}/source_maps/{source_map}` |
| `observability.sylphx.com/Trace` | [traces](/docs/api/traces) | `orgs/{org}/projects/{project}/envs/{env}/traces/{trace}` |
| `release.sylphx.com/Release` | [releases](/docs/api/releases) | `orgs/{org}/projects/{project}/envs/{env}/releases/{release}` |
| `release.sylphx.com/Rollout` | [rollouts](/docs/api/rollouts) | `orgs/{org}/projects/{project}/envs/{env}/rollouts/{rollout}` |
| `runners.sylphx.com/Runner` | [runners](/docs/api/runners) | `orgs/{org}/scale_sets/{scale_set}/runners/{runner}` |
| `runners.sylphx.com/ScaleSet` | [scale_sets](/docs/api/scale_sets) | `orgs/{org}/scale_sets/{scale_set}` |
| `sandboxes.sylphx.com/Lease` | [leases](/docs/api/leases) | `orgs/{org}/projects/{project}/envs/{env}/leases/{lease}` |
| `sandboxes.sylphx.com/LeaseEvent` | [lease_events](/docs/api/lease_events) | `orgs/{org}/projects/{project}/envs/{env}/leases/{lease}/lease_events/{lease_event}` |
| `sandboxes.sylphx.com/Pool` | [pools](/docs/api/pools) | `orgs/{org}/projects/{project}/envs/{env}/pools/{pool}` |
| `sandboxes.sylphx.com/Shape` | [sandbox_shapes](/docs/api/sandbox_shapes) | `sandbox_shapes/{shape}` |
| `sandboxes.sylphx.com/Snapshot` | [snapshots](/docs/api/snapshots) | `orgs/{org}/projects/{project}/envs/{env}/snapshots/{snapshot}` |
| `sandboxes.sylphx.com/Volume` | [volumes](/docs/api/volumes) | `orgs/{org}/projects/{project}/envs/{env}/volumes/{volume}` |
| `secrets.sylphx.com/Secret` | [secrets](/docs/api/secrets) | `orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}` |
| `secrets.sylphx.com/SecretBinding` | [secret_bindings](/docs/api/secret_bindings) | `orgs/{org}/projects/{project}/envs/{env}/secret_bindings/{secret_binding}` |
| `secrets.sylphx.com/SecretVersion` | [secret_versions](/docs/api/secret_versions) | `orgs/{org}/projects/{project}/envs/{env}/secrets/{secret}/secret_versions/{secret_version}` |
| `workflows.sylphx.com/DistributedJob` | [distributed_jobs](/docs/api/distributed_jobs) | `orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}` |
| `workflows.sylphx.com/DistributedRun` | [distributed_runs](/docs/api/distributed_runs) | `orgs/{org}/projects/{project}/envs/{env}/distributed_jobs/{distributed_job}/distributed_runs/{distributed_run}` |
| `workflows.sylphx.com/Job` | [jobs](/docs/api/jobs) | `orgs/{org}/projects/{project}/envs/{env}/jobs/{job}` |
| `workflows.sylphx.com/JobRun` | [job_runs](/docs/api/job_runs) | `orgs/{org}/projects/{project}/envs/{env}/jobs/{job}/job_runs/{job_run}` |
| `workflows.sylphx.com/Run` | [runs](/docs/api/runs) | `orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}/runs/{run}` |
| `workflows.sylphx.com/Schedule` | [schedules](/docs/api/schedules) | `orgs/{org}/projects/{project}/envs/{env}/schedules/{schedule}` |
| `workflows.sylphx.com/Workflow` | [workflows](/docs/api/workflows) | `orgs/{org}/projects/{project}/envs/{env}/workflows/{workflow}` |

## Pagination

List methods take `page_size` (50 by default, at most 1000) and an opaque
`page_token`; the answer carries the items and, when there is more,
`next_page_token`. A token is bound to the parent, the filter, the ordering and
the caller, and reusing it otherwise is `INVALID_ARGUMENT`
(`PAGE_TOKEN_MISMATCH`). The paginated collections:

| Collection | List | Answer carries |
| --- | --- | --- |
| [orgs](/docs/api/orgs) | [list](/docs/api/orgs/list) | `orgs`, `next_page_token` |
| [projects](/docs/api/projects) | [list](/docs/api/projects/list) | `projects`, `next_page_token` |
| [envs](/docs/api/envs) | [list](/docs/api/envs/list) | `envs`, `next_page_token` |
| [api_keys](/docs/api/api_keys) | [list](/docs/api/api_keys/list) | `api_keys`, `next_page_token` |
| [ai_models](/docs/api/ai_models) | [list](/docs/api/ai_models/list) | `ai_models`, `next_page_token` |
| [artifacts](/docs/api/artifacts) | [list](/docs/api/artifacts/list) | `artifacts`, `next_page_token` |
| [assets](/docs/api/assets) | [list](/docs/api/assets/list) | `assets`, `next_page_token` |
| [end_users](/docs/api/end_users) | [list](/docs/api/end_users/list) | `end_users`, `next_page_token` |
| [sessions](/docs/api/sessions) | [list](/docs/api/sessions/list) | `sessions`, `next_page_token` |
| [customer_organizations](/docs/api/customer_organizations) | [list](/docs/api/customer_organizations/list) | `customer_organizations`, `next_page_token` |
| [memberships](/docs/api/memberships) | [list](/docs/api/memberships/list) | `memberships`, `next_page_token` |
| [organization_roles](/docs/api/organization_roles) | [list](/docs/api/organization_roles/list) | `organization_roles`, `next_page_token` |
| [invitations](/docs/api/invitations) | [list](/docs/api/invitations/list) | `invitations`, `next_page_token` |
| [email_domains](/docs/api/email_domains) | [list](/docs/api/email_domains/list) | `email_domains`, `next_page_token` |
| [oauth_clients](/docs/api/oauth_clients) | [list](/docs/api/oauth_clients/list) | `oauth_clients`, `next_page_token` |
| [meters](/docs/api/meters) | [list](/docs/api/meters/list) | `meters`, `next_page_token` |
| [plans](/docs/api/plans) | [list](/docs/api/plans/list) | `plans`, `next_page_token` |
| [billing_accounts](/docs/api/billing_accounts) | [list](/docs/api/billing_accounts/list) | `billing_accounts`, `next_page_token` |
| [invoices](/docs/api/invoices) | [list](/docs/api/invoices/list) | `invoices`, `next_page_token` |
| [usage_reports](/docs/api/usage_reports) | [list](/docs/api/usage_reports/list) | `usage_reports`, `next_page_token` |
| [budget_leases](/docs/api/budget_leases) | [list](/docs/api/budget_leases/list) | `budget_leases`, `next_page_token` |
| [trust_policies](/docs/api/trust_policies) | [list](/docs/api/trust_policies/list) | `trust_policies`, `next_page_token` |
| [builds](/docs/api/builds) | [list](/docs/api/builds/list) | `builds`, `next_page_token` |
| [build_caches](/docs/api/build_caches) | [list](/docs/api/build_caches/list) | `build_caches`, `next_page_token` |
| [config_flags](/docs/api/config_flags) | [list](/docs/api/config_flags/list) | `config_flags`, `next_page_token` |
| [config_segments](/docs/api/config_segments) | [list](/docs/api/config_segments/list) | `config_segments`, `next_page_token` |
| [config_changes](/docs/api/config_changes) | [list](/docs/api/config_changes/list) | `config_changes`, `next_page_token` |
| [connection_providers](/docs/api/connection_providers) | [list](/docs/api/connection_providers/list) | `connection_providers`, `next_page_token` |
| [connections](/docs/api/connections) | [list](/docs/api/connections/list) | `connections`, `next_page_token` |
| [databases](/docs/api/databases) | [list](/docs/api/databases/list) | `databases`, `next_page_token` |
| [kv_namespaces](/docs/api/kv_namespaces) | [list](/docs/api/kv_namespaces/list) | `kv_namespaces`, `next_page_token` |
| [buckets](/docs/api/buckets) | [list](/docs/api/buckets/list) | `buckets`, `next_page_token` |
| [search_indexes](/docs/api/search_indexes) | [list](/docs/api/search_indexes/list) | `search_indexes`, `next_page_token` |
| [entitlements](/docs/api/entitlements) | [list](/docs/api/entitlements/list) | `entitlements`, `next_page_token` |
| [topics](/docs/api/topics) | [list](/docs/api/topics/list) | `topics`, `next_page_token` |
| [events](/docs/api/events) | [list](/docs/api/events/list) | `events`, `next_page_token` |
| [connectors](/docs/api/connectors) | [list](/docs/api/connectors/list) | `connectors`, `next_page_token` |
| [subscriptions](/docs/api/subscriptions) | [list](/docs/api/subscriptions/list) | `subscriptions`, `next_page_token` |
| [queues](/docs/api/queues) | [list](/docs/api/queues/list) | `queues`, `next_page_token` |
| [webhook_endpoints](/docs/api/webhook_endpoints) | [list](/docs/api/webhook_endpoints/list) | `webhook_endpoints`, `next_page_token` |
| [webhook_deliveries](/docs/api/webhook_deliveries) | [list](/docs/api/webhook_deliveries/list) | `webhook_deliveries`, `next_page_token` |
| [inbound_endpoints](/docs/api/inbound_endpoints) | [list](/docs/api/inbound_endpoints/list) | `inbound_endpoints`, `next_page_token` |
| [realtime_channels](/docs/api/realtime_channels) | [list](/docs/api/realtime_channels/list) | `realtime_channels`, `next_page_token` |
| [realtime_messages](/docs/api/realtime_messages) | [list](/docs/api/realtime_messages/list) | `realtime_messages`, `next_page_token` |
| [realtime_members](/docs/api/realtime_members) | [list](/docs/api/realtime_members/list) | `realtime_members`, `next_page_token` |
| [services](/docs/api/services) | [list](/docs/api/services/list) | `services`, `next_page_token` |
| [service_rollouts](/docs/api/service_rollouts) | [list](/docs/api/service_rollouts/list) | `service_rollouts`, `next_page_token` |
| [previews](/docs/api/previews) | [list](/docs/api/previews/list) | `previews`, `next_page_token` |
| [source_links](/docs/api/source_links) | [list](/docs/api/source_links/list) | `source_links`, `next_page_token` |
| [keys](/docs/api/keys) | [list](/docs/api/keys/list) | `keys`, `next_page_token` |
| [key_versions](/docs/api/key_versions) | [list](/docs/api/key_versions/list) | `key_versions`, `next_page_token` |
| [catalogs](/docs/api/catalogs) | [list](/docs/api/catalogs/list) | `catalogs`, `next_page_token` |
| [entries](/docs/api/entries) | [list](/docs/api/entries/list) | `catalog_entries`, `next_page_token` |
| [glossaries](/docs/api/glossaries) | [list](/docs/api/glossaries/list) | `glossaries`, `next_page_token` |
| [store_connections](/docs/api/store_connections) | [list](/docs/api/store_connections/list) | `store_connections`, `next_page_token` |
| [store_purchases](/docs/api/store_purchases) | [list](/docs/api/store_purchases/list) | `store_purchases`, `next_page_token` |
| [customer_subscriptions](/docs/api/customer_subscriptions) | [list](/docs/api/customer_subscriptions/list) | `customer_subscriptions`, `next_page_token` |
| [entitlement_grants](/docs/api/entitlement_grants) | [list](/docs/api/entitlement_grants/list) | `entitlement_grants`, `next_page_token` |
| [merchant_accounts](/docs/api/merchant_accounts) | [list](/docs/api/merchant_accounts/list) | `merchant_accounts`, `next_page_token` |
| [domains](/docs/api/domains) | [list](/docs/api/domains/list) | `domains`, `next_page_token` |
| [certificates](/docs/api/certificates) | [list](/docs/api/certificates/list) | `certificates`, `next_page_token` |
| [routes](/docs/api/routes) | [list](/docs/api/routes/list) | `routes`, `next_page_token` |
| [egress_identities](/docs/api/egress_identities) | [list](/docs/api/egress_identities/list) | `egress_identities`, `next_page_token` |
| [private_links](/docs/api/private_links) | [list](/docs/api/private_links/list) | `private_links`, `next_page_token` |
| [mail_domains](/docs/api/mail_domains) | [list](/docs/api/mail_domains/list) | `email_domains`, `next_page_token` |
| [mail_routes](/docs/api/mail_routes) | [list](/docs/api/mail_routes/list) | `routes`, `next_page_token` |
| [senders](/docs/api/senders) | [list](/docs/api/senders/list) | `senders`, `next_page_token` |
| [recipients](/docs/api/recipients) | [list](/docs/api/recipients/list) | `recipients`, `next_page_token` |
| [preferences](/docs/api/preferences) | [list](/docs/api/preferences/list) | `preferences`, `next_page_token` |
| [suppressions](/docs/api/suppressions) | [list](/docs/api/suppressions/list) | `suppressions`, `next_page_token` |
| [templates](/docs/api/templates) | [list](/docs/api/templates/list) | `templates`, `next_page_token` |
| [messages](/docs/api/messages) | [list](/docs/api/messages/list) | `messages`, `next_page_token` |
| [mailboxes](/docs/api/mailboxes) | [list](/docs/api/mailboxes/list) | `mailboxes`, `next_page_token` |
| [inbound_emails](/docs/api/inbound_emails) | [list](/docs/api/inbound_emails/list) | `inbound_emails`, `next_page_token` |
| [inbox_items](/docs/api/inbox_items) | [list](/docs/api/inbox_items/list) | `inbox_items`, `next_page_token` |
| [broadcasts](/docs/api/broadcasts) | [list](/docs/api/broadcasts/list) | `broadcasts`, `next_page_token` |
| [error_groups](/docs/api/error_groups) | [list](/docs/api/error_groups/list) | `error_groups`, `next_page_token` |
| [error_events](/docs/api/error_events) | [list](/docs/api/error_events/list) | `error_events`, `next_page_token` |
| [source_maps](/docs/api/source_maps) | [list](/docs/api/source_maps/list) | `source_maps`, `next_page_token` |
| [releases](/docs/api/releases) | [list](/docs/api/releases/list) | `releases`, `next_page_token` |
| [rollouts](/docs/api/rollouts) | [list](/docs/api/rollouts/list) | `rollouts`, `next_page_token` |
| [scale_sets](/docs/api/scale_sets) | [list](/docs/api/scale_sets/list) | `scale_sets`, `next_page_token` |
| [runners](/docs/api/runners) | [list](/docs/api/runners/list) | `runners`, `next_page_token` |
| [sandbox_shapes](/docs/api/sandbox_shapes) | [list](/docs/api/sandbox_shapes/list) | `sandbox_shapes`, `next_page_token` |
| [pools](/docs/api/pools) | [list](/docs/api/pools/list) | `pools`, `next_page_token` |
| [leases](/docs/api/leases) | [list](/docs/api/leases/list) | `leases`, `next_page_token` |
| [lease_events](/docs/api/lease_events) | [list](/docs/api/lease_events/list) | `lease_events`, `next_page_token` |
| [volumes](/docs/api/volumes) | [list](/docs/api/volumes/list) | `volumes`, `next_page_token` |
| [snapshots](/docs/api/snapshots) | [list](/docs/api/snapshots/list) | `snapshots`, `next_page_token` |
| [secrets](/docs/api/secrets) | [list](/docs/api/secrets/list) | `secrets`, `next_page_token` |
| [secret_versions](/docs/api/secret_versions) | [list](/docs/api/secret_versions/list) | `secret_versions`, `next_page_token` |
| [secret_bindings](/docs/api/secret_bindings) | [list](/docs/api/secret_bindings/list) | `secret_bindings`, `next_page_token` |
| [workflows](/docs/api/workflows) | [list](/docs/api/workflows/list) | `workflows`, `next_page_token` |
| [schedules](/docs/api/schedules) | [list](/docs/api/schedules/list) | `schedules`, `next_page_token` |
| [runs](/docs/api/runs) | [list](/docs/api/runs/list) | `runs`, `next_page_token` |
| [jobs](/docs/api/jobs) | [list](/docs/api/jobs/list) | `jobs`, `next_page_token` |
| [job_runs](/docs/api/job_runs) | [list](/docs/api/job_runs/list) | `job_runs`, `next_page_token` |
| [distributed_jobs](/docs/api/distributed_jobs) | [list](/docs/api/distributed_jobs/list) | `distributed_jobs`, `next_page_token` |
| [distributed_runs](/docs/api/distributed_runs) | [list](/docs/api/distributed_runs/list) | `distributed_runs`, `next_page_token` |

## Idempotency

Every mutating method accepts `Idempotency-Key` (1–255 printable ASCII). The
first call runs; a replay of the same request within 24 hours returns the stored
answer with `Sylphx-Idempotent-Replay: true`, a replay with a different body is
`IDEMPOTENCY_KEY_REUSED` (422), and a replay while the first call is still running
is `IDEMPOTENCY_IN_PROGRESS` (409), which is worth retrying.

287 of the 536 methods here have an effect other than `read`; 22 of them also take
`validate_only=true` ([AIP-163](https://google.aip.dev/163)), which runs every
check a write would run and then writes nothing.

Writes are also guarded by etags: Get answers with an `ETag` equal to
`meta.etag`, Update and Delete accept `If-Match` or `etag`
([AIP-154](https://google.aip.dev/154)), and a mismatch is `ETAG_MISMATCH`
(409) with the current etag in the error's details, so a client re-reads and
retries.

## Errors

A failed call answers with one RFC 9457 problem body carrying a stable
`code`, whether the failure is retryable, and what it did to your data. The body
and the retry rules are in [Errors](/docs/platform/errors); each method page here
lists the codes that method can return, and the 33 codes in the registry have a
page each in [the index below](#error-codes).

## Versions

A request may pin the behaviour it was written against with
`Sylphx-Version: YYYY-MM-DD`; the response echoes the version that was applied.
The version stream is in [API versions](/docs/platform/versioning).

## Watch

Long-running work — a deploy, a database creation — is followed through the
resource API's streaming surface: a list or a detail view watches
`GET /v1/{parent}/{collection}:watch` as Server-Sent Events, and a reconnect
resumes from the SSE `Last-Event-ID`. The contracts do not declare a watch method
yet, so it is not part of this generated reference; a page here documents the
request/response surface only.

## Services

| Service | Stage | What it is | Collections |
| --- | --- | --- | --- |
| Sylphx Access | `preview` | Sylphx Access: orgs, projects, environments, and API keys. Access is the only writer of these types. | [orgs](/docs/api/orgs), [projects](/docs/api/projects), [envs](/docs/api/envs), [api_keys](/docs/api/api_keys) |
| Sylphx AI | `preview` | the Resource side of Sylphx AI: the model catalog. | [ai_models](/docs/api/ai_models) |
| Sylphx Artifacts | `preview` · not available yet | Sylphx Artifacts: immutable content by digest, with its SBOM and provenance. Sylphx Build writes them; Release reads them. | [artifacts](/docs/api/artifacts) |
| Sylphx Generated Assets | `preview` · not available yet | Sylphx Generated Assets: declare images in code, generate them once, lock them, and serve them from a CDN by content hash. An Asset holds a recipe and its variants; `:generate` makes what is missing, and `:lock` returns the `assets.lock` text a build commits. Generation happens only in these calls, never at build or run time. | [assets](/docs/api/assets) |
| Sylphx Auth | `preview` | Sylphx Auth's management surface: sign-in for a customer's own users, their sessions, customer organizations, and OAuth clients. Sylphx orgs, members, principals, and keys are Sylphx Access, never Auth. End-user ceremonies (sign-in, recovery, OAuth authorize and token) are protocol endpoints, not Resource methods. | [auth_configs](/docs/api/auth_configs), [end_users](/docs/api/end_users), [sessions](/docs/api/sessions), [customer_organizations](/docs/api/customer_organizations), [memberships](/docs/api/memberships), [organization_roles](/docs/api/organization_roles), [invitations](/docs/api/invitations), [email_domains](/docs/api/email_domains), [oauth_clients](/docs/api/oauth_clients) |
| Sylphx Billing | `preview` · not available yet | Sylphx Billing: the meter and plan catalog, each org's billing account and plan, its invoices, usage, and budget leases. Usage arrives through each service's spool, never through this API; no request path calls Billing. | [meters](/docs/api/meters), [plans](/docs/api/plans), [billing_accounts](/docs/api/billing_accounts), [invoices](/docs/api/invoices), [usage_reports](/docs/api/usage_reports), [budget_leases](/docs/api/budget_leases) |
| Sylphx Broker | `preview` · not available yet | the credential service: workload identity in, short-lived scoped provider credential out. | [trust_policies](/docs/api/trust_policies) |
| Sylphx Build | `preview` · not available yet | Sylphx Build: given a repository and a commit, an image with an SBOM and signed SLSA provenance, all written to Sylphx Artifacts by digest. | [builds](/docs/api/builds), [build_caches](/docs/api/build_caches) |
| Sylphx Config | `preview` | Sylphx Config: dynamic configuration and feature flags evaluated in each cell from that cell's snapshot. | [config_flags](/docs/api/config_flags), [config_segments](/docs/api/config_segments), [config_changes](/docs/api/config_changes) |
| Sylphx Connections | `preview` · not available yet | Sylphx Connections: Connection Providers and their installations as Resources. | [connection_providers](/docs/api/connection_providers), [connections](/docs/api/connections) |
| Sylphx Data | `preview` | DataPlaneService is the data plane of Sylphx Data: object bytes, key-value entries (strings, counters, hashes, lists, and sorted sets), and search documents in an environment's buckets, KV namespaces, and search indexes. It is served by Data itself at its origin, not by the Resource API, and is called with the environment's secret key (`SYLPHX_API_KEY`); the key's org, project, and environment are the tenant. Every call carries a new `Sylphx-Effect-Id`, which the SDK sends and reuses on retries. | [objects](/docs/api/objects), [kv](/docs/api/kv), [documents](/docs/api/documents), [search](/docs/api/search), [databases](/docs/api/databases), [kv_namespaces](/docs/api/kv_namespaces), [buckets](/docs/api/buckets), [search_indexes](/docs/api/search_indexes) |
| Sylphx Entitlement | `preview` · not available yet | the read-only view of Sylphx Entitlement. Billing writes it through the Resource store; this service has no mutation. | [entitlements](/docs/api/entitlements) |
| Sylphx Events | `preview` | Sylphx Events: the event bus, queues, outbound and inbound webhooks, and realtime channels. Publish, lease, ack, and delivery run in each cell from that cell's snapshot. | [topics](/docs/api/topics), [events](/docs/api/events), [connectors](/docs/api/connectors), [subscriptions](/docs/api/subscriptions), [queues](/docs/api/queues), [webhook_endpoints](/docs/api/webhook_endpoints), [webhook_deliveries](/docs/api/webhook_deliveries), [inbound_endpoints](/docs/api/inbound_endpoints), [realtime_channels](/docs/api/realtime_channels), [realtime_messages](/docs/api/realtime_messages), [realtime_members](/docs/api/realtime_members) |
| Sylphx Hosting | `preview` · not available yet | Sylphx Hosting: Services that build from source or run an existing Artifact, ship as Releases in waves, get a Preview per pull request, and read their source through a SourceLink. | [services](/docs/api/services), [service_rollouts](/docs/api/service_rollouts), [previews](/docs/api/previews), [source_links](/docs/api/source_links) |
| Sylphx Keys | `preview` · not available yet | Sylphx Keys: non-exportable keys on the regional signer. Callers use a key; no method returns key material. | [keys](/docs/api/keys), [key_versions](/docs/api/key_versions) |
| Sylphx Localization | `preview` | Sylphx Localization: translate an app's strings in CI with AI, a translation memory, and a glossary. A Catalog holds the source messages and their translations; `:sync` translates what is new or changed, and `:export` returns the files per locale with a QA report. Translation happens only in these calls, never at build or run time. | [catalogs](/docs/api/catalogs), [entries](/docs/api/entries), [glossaries](/docs/api/glossaries) |
| Sylphx Money | `preview` | Sylphx Money's customer payments: an app sells to its own users through the stores and processors Money integrates once, and asks one question on its request path, "does this subject have this feature". | [price_catalogs](/docs/api/price_catalogs), [store_connections](/docs/api/store_connections), [store_purchases](/docs/api/store_purchases), [customer_subscriptions](/docs/api/customer_subscriptions), [entitlement_grants](/docs/api/entitlement_grants), [merchant_accounts](/docs/api/merchant_accounts), [checkout_sessions](/docs/api/checkout_sessions), [portal_sessions](/docs/api/portal_sessions) |
| Sylphx Network | `preview` · not available yet | Sylphx Network: verified domains, exact routes served by each cell's edge from its snapshot, certificates Sylphx terminates, declared egress addresses, and private links. | [domains](/docs/api/domains), [certificates](/docs/api/certificates), [routes](/docs/api/routes), [egress_identities](/docs/api/egress_identities), [private_links](/docs/api/private_links) |
| Sylphx Notify | `preview` | Sylphx Notify: messages to people over email, SMS, push, and in-app inbox, with preferences, suppression, templates, and broadcasts. Notify is built on Sylphx Events as an ordinary customer. | [mail_domains](/docs/api/mail_domains), [mail_routes](/docs/api/mail_routes), [senders](/docs/api/senders), [recipients](/docs/api/recipients), [preferences](/docs/api/preferences), [suppressions](/docs/api/suppressions), [templates](/docs/api/templates), [messages](/docs/api/messages), [mailboxes](/docs/api/mailboxes), [inbound_emails](/docs/api/inbound_emails), [inbox_items](/docs/api/inbox_items), [broadcasts](/docs/api/broadcasts) |
| Sylphx Observability | `preview` | Sylphx Observability's log, trace, and error surface: ingest through the emitter-side buffer, tenant-fenced bounded queries, and error-group triage. Observability is only ever a soft dependency. | [log_entries](/docs/api/log_entries), [traces](/docs/api/traces), [error_groups](/docs/api/error_groups), [error_events](/docs/api/error_events), [source_maps](/docs/api/source_maps), [scrubbing_policies](/docs/api/scrubbing_policies) |
| Sylphx Release | `preview` · not available yet | Sylphx Release: the only deployable unit and the progress of its rollouts. Releases are immutable; there is no Update or Delete. | [releases](/docs/api/releases), [rollouts](/docs/api/rollouts) |
| Sylphx Runners | `preview` · not available yet | Sylphx Runners: CI runners of a class `sylphx-<os>-<size>`, one clean Sandboxes lease per job, registered as scale sets on a Sylphx Runners installation. Runners are read-only: GitHub matches jobs to runners, and Runners reports them. | [scale_sets](/docs/api/scale_sets), [runners](/docs/api/runners) |
| Sylphx Sandboxes | `preview` | Sylphx Sandboxes: isolated machines leased for a bounded time, granted immediately or refused with a typed reason, and destroyed before anyone else can touch them. Every agent-computer surface is here: exec and files, computer actions that map one-to-one onto the Anthropic computer tool and OpenAI computer-use actions and return the post-action screenshot in the same call, CDP, live streams, and human takeover. The streaming guest protocol (E2B envd) is served at `status.endpoints.guest_uri`. | [sandbox_shapes](/docs/api/sandbox_shapes), [pools](/docs/api/pools), [leases](/docs/api/leases), [lease_events](/docs/api/lease_events), [volumes](/docs/api/volumes), [snapshots](/docs/api/snapshots) |
| Sylphx Secrets | `preview` | Sylphx Secrets: write-only, versioned values and the bindings that deliver them. Reading a value back is the separate break-glass permission `secrets:access`. | [secrets](/docs/api/secrets), [secret_versions](/docs/api/secret_versions), [secret_bindings](/docs/api/secret_bindings) |
| Sylphx Workflows | `preview` | Sylphx Workflows: durable execution, schedules, timers, and runs. Workflows is the one writer of these types. | [workflows](/docs/api/workflows), [schedules](/docs/api/schedules), [runs](/docs/api/runs), [jobs](/docs/api/jobs), [job_runs](/docs/api/job_runs), [distributed_jobs](/docs/api/distributed_jobs), [distributed_runs](/docs/api/distributed_runs) |

## Service-level methods

A few calls belong to a service rather than to one of its collections, and
have a page each:

| Method | HTTP | Scope | What it does |
| --- | --- | --- | --- |
| [`access.whoami`](/docs/api/access/whoami) | `GET` | `access:whoami` | Returns the caller: the principal and the scope of the key or token that authenticated this request. Clients fill their org, project, and env defaults from it; every valid key may call it, whatever its scopes. |

## Error codes

Every code the platform declares, with the HTTP status a caller sees and the
gRPC status the SDKs report.

| Code | HTTP | gRPC | What it means |
| --- | --- | --- | --- |
| [`UNKNOWN_FIELD`](/docs/api/errors/UNKNOWN_FIELD) | 400 | `INVALID_ARGUMENT` | The request has a field the schema does not know. |
| [`INVALID_FIELD`](/docs/api/errors/INVALID_FIELD) | 400 | `INVALID_ARGUMENT` | A field failed validation. |
| [`PAGE_TOKEN_MISMATCH`](/docs/api/errors/PAGE_TOKEN_MISMATCH) | 400 | `INVALID_ARGUMENT` | A page token was reused with different parameters. |
| [`IDEMPOTENCY_KEY_REUSED`](/docs/api/errors/IDEMPOTENCY_KEY_REUSED) | 422 | `INVALID_ARGUMENT` | An Idempotency-Key was reused with another body. |
| [`IDEMPOTENCY_IN_PROGRESS`](/docs/api/errors/IDEMPOTENCY_IN_PROGRESS) | 409 | `ABORTED` | The first call with this Idempotency-Key is still running. |
| [`ETAG_MISMATCH`](/docs/api/errors/ETAG_MISMATCH) | 409 | `ABORTED` | The etag sent does not match the Resource's current etag. |
| [`RESOURCE_NOT_FOUND`](/docs/api/errors/RESOURCE_NOT_FOUND) | 404 | `NOT_FOUND` | The named Resource does not exist or is not visible. |
| [`RESOURCE_ALREADY_EXISTS`](/docs/api/errors/RESOURCE_ALREADY_EXISTS) | 409 | `ALREADY_EXISTS` | A Resource with this name exists. |
| [`UNAUTHENTICATED`](/docs/api/errors/UNAUTHENTICATED) | 401 | `UNAUTHENTICATED` | No valid key or token was presented. |
| [`PERMISSION_DENIED`](/docs/api/errors/PERMISSION_DENIED) | 403 | `PERMISSION_DENIED` | The key lacks the method's permission. |
| [`DELETION_PROTECTED`](/docs/api/errors/DELETION_PROTECTED) | 400 | `FAILED_PRECONDITION` | `spec.deletion_protection` blocks the delete. |
| [`RECONCILE_FAILED`](/docs/api/errors/RECONCILE_FAILED) | 400 | `FAILED_PRECONDITION` | The controller reported Stalled or Ready=FALSE. |
| [`PLAN_LIMIT_REACHED`](/docs/api/errors/PLAN_LIMIT_REACHED) | 402 | `FAILED_PRECONDITION` | The plan's limit is reached. |
| [`SPEND_LIMIT_REACHED`](/docs/api/errors/SPEND_LIMIT_REACHED) | 402 | `FAILED_PRECONDITION` | The org's spend limit is reached. |
| [`RATE_LIMITED`](/docs/api/errors/RATE_LIMITED) | 429 | `RESOURCE_EXHAUSTED` | The rate limit is reached; see Retry-After. |
| [`INVALID_STATE`](/docs/api/errors/INVALID_STATE) | 400 | `FAILED_PRECONDITION` | The Resource is in a state that forbids the call. |
| [`INTERNAL`](/docs/api/errors/INTERNAL) | 500 | `INTERNAL` | An internal fault; the cause is in Observability by request id. |
| [`UNAVAILABLE`](/docs/api/errors/UNAVAILABLE) | 503 | `UNAVAILABLE` | The Resource store, the owning service's backend, or the key verifier's snapshot is unavailable; retry after Retry-After. |
| [`UNIMPLEMENTED`](/docs/api/errors/UNIMPLEMENTED) | 501 | `UNIMPLEMENTED` | The path or method is not served (yet) at this version. |
| [`NOT_YET_PROPAGATED`](/docs/api/errors/NOT_YET_PROPAGATED) | 401 | `UNAUTHENTICATED` | A key created seconds ago has not reached the cell serving this request yet; retry within `active_after_ms`. |
| [`DEADLINE_EXCEEDED`](/docs/api/errors/DEADLINE_EXCEEDED) | 504 | `DEADLINE_EXCEEDED` | The client deadline passed before the work committed. |
| [`NOT_FOUND`](/docs/api/errors/NOT_FOUND) | 404 | `NOT_FOUND` | No method is served at this path. |
| [`CONTRACT_SKEW`](/docs/api/errors/CONTRACT_SKEW) | 503 | `UNAVAILABLE` | The backend serves another contract image than the API endpoint for this service; the Release rolls them in order. |
| [`NO_CAPACITY`](/docs/api/errors/NO_CAPACITY) | 503 | `UNAVAILABLE` | No machine can be granted now (immediate-or-fail); retry after Retry-After. |
| [`SHAPE_NOT_OFFERED`](/docs/api/errors/SHAPE_NOT_OFFERED) | 422 | `FAILED_PRECONDITION` | The requested shape or kind is not sold. |
| [`STALE_GENERATION`](/docs/api/errors/STALE_GENERATION) | 409 | `ABORTED` | The call named a lease generation or control epoch that is no longer current. |
| [`RESOURCE_IN_USE`](/docs/api/errors/RESOURCE_IN_USE) | 409 | `FAILED_PRECONDITION` | The Resource is attached to or held by another Resource, for example a volume attached to a running lease. |
| [`CONTROL_HELD`](/docs/api/errors/CONTROL_HELD) | 409 | `FAILED_PRECONDITION` | Another holder has input control of the display. |
| [`CONTROL_HELD_BY_HUMAN`](/docs/api/errors/CONTROL_HELD_BY_HUMAN) | 409 | `FAILED_PRECONDITION` | A human has taken over the display; agent input and screenshots are refused until control is released or expires. |
| [`INVALID_ID`](/docs/api/errors/INVALID_ID) | 400 | `INVALID_ARGUMENT` | A name segment is not a current id, and no id map row moves it. |
| [`ETAG_CONFLICT`](/docs/api/errors/ETAG_CONFLICT) | 400 | `INVALID_ARGUMENT` | The `If-Match` header and the request's `etag` name different etags; send one, or the same. |
| [`VALIDATE_ONLY_NOT_SUPPORTED`](/docs/api/errors/VALIDATE_ONLY_NOT_SUPPORTED) | 400 | `INVALID_ARGUMENT` | The method has no dry run; a request with `validate_only` is refused before anything is written. |
| [`ID_MOVED`](/docs/api/errors/ID_MOVED) | 500 | `308 on GET/HEAD` | 308 on GET/HEAD: the id in the name moved in the identifiers cut; `Location` and `Sylphx-Moved-To` carry the new one, and the body is `{"error":"id_moved","old":…,"new":…}`, for the 14-day window of the owning service. The Resource-API moved-id resolver answers it in front of every service. |
