---
# @generated by sylphx-gen 0.1.0 from contracts@e145cc7cf1bc9605f2b27439e5e17ed76a1a2fd7e7021906a013f7565e4a0cd5. Do not edit.
title: "ETAG_MISMATCH"
description: "ETAG_MISMATCH (ABORTED, HTTP 409): The etag sent does not match the Resource's current etag."
type: reference
product: platform
summary: "The etag sent does not match the Resource's current etag."
updated: 2026-09-28
nav: false
---

The etag sent does not match the Resource's current etag.

**HTTP** 409 · **gRPC** `ABORTED` · [the error body](/docs/platform/errors)

## Returned by

| Method | Scope | What it does |
| --- | --- | --- |
| [`access.orgs.update`](/docs/api/orgs/update) | `access:admin` | Updates an org. |
| [`access.orgs.delete`](/docs/api/orgs/delete) | `access:admin` | Deletes an org and everything in it. Deletion cascades through every service, so it returns an Operation. |
| [`access.projects.update`](/docs/api/projects/update) | `access:admin` | Updates a project. |
| [`access.projects.delete`](/docs/api/projects/delete) | `access:admin` | Deletes a project. |
| [`access.envs.update`](/docs/api/envs/update) | `access:admin` | Updates an environment. |
| [`access.envs.delete`](/docs/api/envs/delete) | `access:admin` | Deletes an environment. |
| [`access.api_keys.update`](/docs/api/api_keys/update) | `access:keys:write` | Updates an API key. |
| [`access.api_keys.delete`](/docs/api/api_keys/delete) | `access:keys:write` | Deletes an API key. |
| [`access.api_keys.revoke`](/docs/api/api_keys/revoke) | `access:keys:write` | Revokes an API key immediately; revocation propagates on its own fast path, ahead of the bulk key data. |
| [`access.api_keys.roll`](/docs/api/api_keys/roll) | `access:keys:write` | Rolls an API key: returns a new key with the same spec and revokes the old one after the grace period. |
| [`artifacts.artifacts.delete`](/docs/api/artifacts/delete) | `artifacts:write` | Deletes an artifact; fails while a Release references it or a legal hold is active. |
| [`auth.auth_configs.update`](/docs/api/auth_configs/update) | `auth:write` | Updates an auth config. |
| [`auth.end_users.update`](/docs/api/end_users/update) | `auth:write` | Updates an end user. |
| [`auth.end_users.delete`](/docs/api/end_users/delete) | `auth:write` | Deletes an end user. |
| [`auth.end_users.suspend`](/docs/api/end_users/suspend) | `auth:write` | Suspends an end user: sessions are revoked and sign-in is refused. |
| [`auth.end_users.reactivate`](/docs/api/end_users/reactivate) | `auth:write` | Reactivates a suspended end user. |
| [`auth.customer_organizations.update`](/docs/api/customer_organizations/update) | `auth:write` | Updates a customer organization. |
| [`auth.customer_organizations.delete`](/docs/api/customer_organizations/delete) | `auth:write` | Deletes a customer organization. |
| [`auth.memberships.update`](/docs/api/memberships/update) | `auth:write` | Updates a membership. |
| [`auth.memberships.delete`](/docs/api/memberships/delete) | `auth:write` | Deletes a membership. |
| [`auth.organization_roles.update`](/docs/api/organization_roles/update) | `auth:write` | Updates an organization role. |
| [`auth.organization_roles.delete`](/docs/api/organization_roles/delete) | `auth:write` | Deletes an organization role. |
| [`auth.email_domains.delete`](/docs/api/email_domains/delete) | `auth:write` | Deletes an email domain. |
| [`auth.oauth_clients.update`](/docs/api/oauth_clients/update) | `auth:write` | Updates an OAuth client. |
| [`auth.oauth_clients.delete`](/docs/api/oauth_clients/delete) | `auth:write` | Deletes an OAuth client. |
| [`auth.oauth_clients.roll_secret`](/docs/api/oauth_clients/roll_secret) | `auth:write` | Issues a new client secret, returned once; the old one verifies until `grace_period` ends. |
| [`billing.billing_accounts.update`](/docs/api/billing_accounts/update) | `billing:admin` | Updates a billing account: changes plan, spend limit, or billing email. |
| [`broker.trust_policies.update`](/docs/api/trust_policies/update) | `broker:admin` | Updates a trust policy. |
| [`broker.trust_policies.delete`](/docs/api/trust_policies/delete) | `broker:admin` | Deletes a trust policy. |
| [`build.builds.cancel`](/docs/api/builds/cancel) | `build:write` | Cancels a queued or running Build; its lease is released and nothing is published. |
| [`build.build_caches.update`](/docs/api/build_caches/update) | `build:write` | Updates a build cache. |
| [`build.build_caches.delete`](/docs/api/build_caches/delete) | `build:write` | Deletes a build cache. |
| [`config.config_flags.update`](/docs/api/config_flags/update) | `config:write` | Updates a config flag; the change rolls out in waves and the Operation is done when every cell serves it. |
| [`config.config_flags.delete`](/docs/api/config_flags/delete) | `config:write` | Deletes a config flag; evaluators then get their compiled-in fallback. |
| [`config.config_segments.update`](/docs/api/config_segments/update) | `config:write` | Updates a config segment; every flag naming it follows. |
| [`config.config_segments.delete`](/docs/api/config_segments/delete) | `config:write` | Deletes a config segment; refused while a flag names it. |
| [`connections.connection_providers.update`](/docs/api/connection_providers/update) | `connections:admin` | Updates a connection provider. |
| [`connections.connection_providers.delete`](/docs/api/connection_providers/delete) | `connections:admin` | Deletes a connection provider; it must have no connections. |
| [`connections.connections.update`](/docs/api/connections/update) | `connections:write` | Updates a connection's metadata. |
| [`connections.connections.delete`](/docs/api/connections/delete) | `connections:write` | Forgets a connection. The installation itself is removed at the provider. |
| [`data.objects.put`](/docs/api/objects/put) | `data:write` | Writes an object's bytes, replacing the current version. `body` is the base64 of the bytes. |
| [`data.objects.delete`](/docs/api/objects/delete) | `data:write` | Deletes an object's current version (history is kept). |
| [`data.kv.put`](/docs/api/kv/put) | `data:write` | Writes a value. Without `ttl_seconds` the namespace default applies; zero means no expiry. |
| [`data.kv.delete`](/docs/api/kv/delete) | `data:write` | Deletes a value. |
| [`data.documents.put`](/docs/api/documents/put) | `data:write` | Writes a document to a search index, replacing the current version. |
| [`data.documents.delete`](/docs/api/documents/delete) | `data:write` | Deletes a document. |
| [`data.databases.update`](/docs/api/databases/update) | `data:write` | Updates a database. |
| [`data.databases.delete`](/docs/api/databases/delete) | `data:write` | Deletes a database. Fails while `spec.deletion_protection` is set. |
| [`data.databases.rotate_credentials`](/docs/api/databases/rotate_credentials) | `data:write` | Replaces the database's engine credentials; the old ones stop working once the new ones are served. |
| [`data.databases.restore`](/docs/api/databases/restore) | `data:write` | Restores the database in place to a point in time inside its retention window; the database is unavailable while it restores. |
| [`data.kv_namespaces.update`](/docs/api/kv_namespaces/update) | `data:write` | Updates a kv namespace. |
| [`data.kv_namespaces.delete`](/docs/api/kv_namespaces/delete) | `data:write` | Deletes a kv namespace. Fails while `spec.deletion_protection` is set. |
| [`data.kv_namespaces.rotate_credentials`](/docs/api/kv_namespaces/rotate_credentials) | `data:write` | Replaces the KV namespace's engine credentials; the old ones stop working once the new ones are served. |
| [`data.buckets.update`](/docs/api/buckets/update) | `data:write` | Updates a bucket. |
| [`data.buckets.delete`](/docs/api/buckets/delete) | `data:write` | Deletes a bucket. Fails while `spec.deletion_protection` is set. |
| [`data.buckets.rotate_credentials`](/docs/api/buckets/rotate_credentials) | `data:write` | Replaces the bucket's engine credentials; the old ones stop working once the new ones are served. |
| [`data.search_indexes.update`](/docs/api/search_indexes/update) | `data:write` | Updates a search index. |
| [`data.search_indexes.delete`](/docs/api/search_indexes/delete) | `data:write` | Deletes a search index. Fails while `spec.deletion_protection` is set. |
| [`data.search_indexes.rotate_credentials`](/docs/api/search_indexes/rotate_credentials) | `data:write` | Replaces the search index's engine credentials; the old ones stop working once the new ones are served. |
| [`events.topics.update`](/docs/api/topics/update) | `events:write` | Updates a topic. |
| [`events.topics.delete`](/docs/api/topics/delete) | `events:write` | Deletes a topic. |
| [`events.subscriptions.update`](/docs/api/subscriptions/update) | `events:write` | Updates a subscription. |
| [`events.subscriptions.delete`](/docs/api/subscriptions/delete) | `events:write` | Deletes a subscription. |
| [`events.queues.update`](/docs/api/queues/update) | `events:write` | Updates a queue. |
| [`events.queues.delete`](/docs/api/queues/delete) | `events:write` | Deletes a queue. |
| [`events.webhook_endpoints.update`](/docs/api/webhook_endpoints/update) | `events:write` | Updates a webhook endpoint. |
| [`events.webhook_endpoints.delete`](/docs/api/webhook_endpoints/delete) | `events:write` | Deletes a webhook endpoint. |
| [`events.webhook_endpoints.rotate_secret`](/docs/api/webhook_endpoints/rotate_secret) | `events:write` | Replaces the endpoint's signing secret and returns the new one, once (`status.signing_secret`). For 24 hours deliveries carry a signature with each secret, so a receiver can switch without dropping one. |
| [`events.inbound_endpoints.update`](/docs/api/inbound_endpoints/update) | `events:write` | Updates an inbound endpoint. |
| [`events.inbound_endpoints.delete`](/docs/api/inbound_endpoints/delete) | `events:write` | Deletes an inbound endpoint. |
| [`events.realtime_channels.update`](/docs/api/realtime_channels/update) | `events:write` | Updates a realtime channel. |
| [`events.realtime_channels.delete`](/docs/api/realtime_channels/delete) | `events:write` | Deletes a realtime channel. |
| [`hosting.services.update`](/docs/api/services/update) | `hosting:write` | Updates a service. |
| [`hosting.services.delete`](/docs/api/services/delete) | `hosting:write` | Deletes a service. |
| [`hosting.service_rollouts.pause`](/docs/api/service_rollouts/pause) | `hosting:write` | Holds a Rollout at its current wave. |
| [`hosting.service_rollouts.resume`](/docs/api/service_rollouts/resume) | `hosting:write` | Resumes a paused Rollout. |
| [`hosting.service_rollouts.abort`](/docs/api/service_rollouts/abort) | `hosting:write` | Stops a Rollout; the cells it reached return to the previous Release. |
| [`hosting.previews.delete`](/docs/api/previews/delete) | `hosting:write` | Deletes a preview. |
| [`hosting.source_links.update`](/docs/api/source_links/update) | `hosting:write` | Updates a source link. |
| [`hosting.source_links.delete`](/docs/api/source_links/delete) | `hosting:write` | Deletes a source link. |
| [`keys.keys.update`](/docs/api/keys/update) | `keys:write` | Updates a key's rotation period, deletion protection, or metadata. |
| [`keys.keys.delete`](/docs/api/keys/delete) | `keys:write` | Deletes a key and schedules every version's destruction. |
| [`keys.keys.rotate`](/docs/api/keys/rotate) | `keys:write` | Rotates a key: adds a version and makes it primary. Older versions keep verifying and decrypting until destroyed. |
| [`keys.key_versions.destroy`](/docs/api/key_versions/destroy) | `keys:write` | Schedules a key version's destruction after a 24-hour grace; the primary version cannot be destroyed. |
| [`localization.catalogs.update`](/docs/api/catalogs/update) | `localization:write` | Updates a catalog. |
| [`localization.catalogs.delete`](/docs/api/catalogs/delete) | `localization:write` | Deletes a catalog. |
| [`localization.glossaries.update`](/docs/api/glossaries/update) | `localization:write` | Updates a glossary. |
| [`localization.glossaries.delete`](/docs/api/glossaries/delete) | `localization:write` | Deletes a glossary. |
| [`money.price_catalogs.update`](/docs/api/price_catalogs/update) | `billing:write` | Updates the environment's catalog: its features and products, whole. |
| [`money.store_connections.update`](/docs/api/store_connections/update) | `billing:write` | Updates a store connection; a new credential replaces the stored one. |
| [`money.store_connections.delete`](/docs/api/store_connections/delete) | `billing:write` | Deletes a store connection and its sealed credential. |
| [`network.domains.update`](/docs/api/domains/update) | `network:write` | Updates a domain. |
| [`network.domains.delete`](/docs/api/domains/delete) | `network:write` | Deletes a domain. |
| [`network.routes.update`](/docs/api/routes/update) | `network:write` | Updates a route. |
| [`network.routes.delete`](/docs/api/routes/delete) | `network:write` | Deletes a route. |
| [`network.egress_identities.update`](/docs/api/egress_identities/update) | `network:write` | Updates an egress identity. |
| [`network.egress_identities.delete`](/docs/api/egress_identities/delete) | `network:write` | Deletes an egress identity. |
| [`network.private_links.update`](/docs/api/private_links/update) | `network:write` | Updates a private link. |
| [`network.private_links.delete`](/docs/api/private_links/delete) | `network:write` | Deletes a private link. |
| [`notify.mail_domains.update`](/docs/api/mail_domains/update) | `notify:write` | Updates an email domain. |
| [`notify.mail_domains.delete`](/docs/api/mail_domains/delete) | `notify:write` | Deletes an email domain. |
| [`notify.mail_routes.update`](/docs/api/mail_routes/update) | `notify:write` | Updates a route. |
| [`notify.mail_routes.delete`](/docs/api/mail_routes/delete) | `notify:write` | Deletes a route. |
| [`notify.senders.update`](/docs/api/senders/update) | `notify:write` | Updates a sender. |
| [`notify.senders.delete`](/docs/api/senders/delete) | `notify:write` | Deletes a sender. |
| [`notify.recipients.update`](/docs/api/recipients/update) | `notify:write` | Updates a recipient. |
| [`notify.recipients.delete`](/docs/api/recipients/delete) | `notify:write` | Deletes a recipient. |
| [`notify.preferences.update`](/docs/api/preferences/update) | `notify:write` | Updates a preference. |
| [`notify.preferences.delete`](/docs/api/preferences/delete) | `notify:write` | Deletes a preference. |
| [`notify.suppressions.delete`](/docs/api/suppressions/delete) | `notify:write` | Deletes a suppression. |
| [`notify.templates.update`](/docs/api/templates/update) | `notify:write` | Updates a template. |
| [`notify.templates.delete`](/docs/api/templates/delete) | `notify:write` | Deletes a template. |
| [`notify.mailboxes.update`](/docs/api/mailboxes/update) | `notify:write` | Updates a mailbox. |
| [`notify.mailboxes.delete`](/docs/api/mailboxes/delete) | `notify:write` | Deletes a mailbox and its inbound email. |
| [`notify.broadcasts.update`](/docs/api/broadcasts/update) | `notify:write` | Updates a broadcast. |
| [`notify.broadcasts.delete`](/docs/api/broadcasts/delete) | `notify:write` | Deletes a broadcast. |
| [`notify.broadcasts.send`](/docs/api/broadcasts/send) | `notify:send` | Sends a Broadcast now. |
| [`notify.broadcasts.cancel`](/docs/api/broadcasts/cancel) | `notify:send` | Cancels a Broadcast; messages already admitted still deliver. |
| [`observability.error_groups.acknowledge`](/docs/api/error_groups/acknowledge) | `observability:write` | Acknowledges an error group. |
| [`observability.error_groups.resolve`](/docs/api/error_groups/resolve) | `observability:write` | Resolves an error group; a new occurrence reopens it. |
| [`observability.error_groups.reopen`](/docs/api/error_groups/reopen) | `observability:write` | Reopens a resolved or acknowledged error group. |
| [`observability.scrubbing_policies.update`](/docs/api/scrubbing_policies/update) | `observability:write` | Updates the environment's scrubbing policy. |
| [`runners.scale_sets.update`](/docs/api/scale_sets/update) | `runners:write` | Updates a scale set. |
| [`runners.scale_sets.delete`](/docs/api/scale_sets/delete) | `runners:write` | Deletes a scale set. |
| [`sandboxes.pools.update`](/docs/api/pools/update) | `sandboxes:write` | Updates a pool. |
| [`sandboxes.pools.delete`](/docs/api/pools/delete) | `sandboxes:write` | Deletes a pool. |
| [`sandboxes.leases.renew`](/docs/api/leases/renew) | `sandboxes:write` | Extends `expire_time`, never past the shape's longest lease. Does not change the generation. |
| [`sandboxes.leases.release`](/docs/api/leases/release) | `sandboxes:write` | Ends a lease with END_REASON_RELEASED; the machine is destroyed and never leased again, and attached volumes are detached. |
| [`sandboxes.leases.pause`](/docs/api/leases/pause) | `sandboxes:write` | Pauses a lease: its disk is kept and its machine destroyed; the generation increases. Process memory is not kept. |
| [`sandboxes.leases.resume`](/docs/api/leases/resume) | `sandboxes:write` | Resumes a paused lease on a machine granted now, or refuses it; the generation increases. |
| [`sandboxes.volumes.update`](/docs/api/volumes/update) | `sandboxes:write` | Updates a volume: grows `spec.size_gib` and edits metadata. |
| [`sandboxes.volumes.delete`](/docs/api/volumes/delete) | `sandboxes:write` | Deletes a volume and destroys its data. Refused RESOURCE_IN_USE while it is attached. |
| [`sandboxes.snapshots.delete`](/docs/api/snapshots/delete) | `sandboxes:write` | Deletes a snapshot. |
| [`secrets.secrets.update`](/docs/api/secrets/update) | `secrets:write` | Updates a secret. |
| [`secrets.secrets.delete`](/docs/api/secrets/delete) | `secrets:write` | Deletes a secret and destroys every version. |
| [`secrets.secret_versions.disable`](/docs/api/secret_versions/disable) | `secrets:write` | Disables a secret version: bindings stop delivering it. |
| [`secrets.secret_versions.enable`](/docs/api/secret_versions/enable) | `secrets:write` | Enables a disabled secret version. |
| [`secrets.secret_versions.destroy`](/docs/api/secret_versions/destroy) | `secrets:write` | Destroys a secret version's value irrecoverably. |
| [`secrets.secret_bindings.update`](/docs/api/secret_bindings/update) | `secrets:write` | Updates a secret binding. |
| [`secrets.secret_bindings.delete`](/docs/api/secret_bindings/delete) | `secrets:write` | Deletes a secret binding. |
| [`workflows.workflows.update`](/docs/api/workflows/update) | `workflows:write` | Updates a workflow. |
| [`workflows.workflows.delete`](/docs/api/workflows/delete) | `workflows:write` | Deletes a workflow. |
| [`workflows.schedules.update`](/docs/api/schedules/update) | `workflows:write` | Updates a schedule. |
| [`workflows.schedules.delete`](/docs/api/schedules/delete) | `workflows:write` | Deletes a schedule. |
| [`workflows.schedules.pause`](/docs/api/schedules/pause) | `workflows:write` | Pauses a Schedule: no fire starts a Run until it is resumed. |
| [`workflows.schedules.resume`](/docs/api/schedules/resume) | `workflows:write` | Resumes a paused Schedule; missed fires follow `catchup_window`. |
| [`workflows.jobs.update`](/docs/api/jobs/update) | `workflows:write` | Updates a job. Runs already started keep the generation they pinned. |
| [`workflows.jobs.delete`](/docs/api/jobs/delete) | `workflows:write` | Deletes a job. |
| [`workflows.distributed_jobs.update`](/docs/api/distributed_jobs/update) | `workflows:write` | Updates a distributed job. Runs already started keep the generation they pinned. |
| [`workflows.distributed_jobs.delete`](/docs/api/distributed_jobs/delete) | `workflows:write` | Deletes a distributed job. |
