{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Endpoint Retry and Completion Matrix"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"endpoint-retry-and-completion-matrix","__idx":0},"children":["Endpoint Retry and Completion Matrix"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every one of the 212 documented operations has a retry, idempotency, and completion policy. Policies are generated conservatively from the OpenAPI contract. Endpoint-specific business error codes are listed only where the operation description documents them; they are never invented. Every operation also uses the common error contract."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For state-changing operations, an HTTP timeout is an unknown outcome—not proof that the operation failed. Query current state before retrying."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The machine-readable source is the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/assets/operation-behavior.c7be57979902d535863b8d6a0eef0e3fb4768f96d388fa815ab123af6ce6038f.ec0bf2e0.yaml"},"children":["Operation Behavior Manifest"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"per-product-matrices","__idx":1},"children":["Per-product matrices"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Product"},"children":["Product"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Operations"},"children":["Operations"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"With endpoint-specific error codes"},"children":["With endpoint-specific error codes"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Matrix"},"children":["Matrix"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Browser"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["53"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["19"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-reference/browser/endpoint-behavior"},"children":["Browser"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Cloud Phone"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["109"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["50"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-reference/cloud-phone/endpoint-behavior"},"children":["Cloud Phone"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Cloud Storage"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["24"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["12"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-reference/cloud-storage/endpoint-behavior"},"children":["Cloud Storage"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Shared Resources"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["26"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["12"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/api-reference/shared-resources/endpoint-behavior"},"children":["Shared Resources"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-to-read-a-policy","__idx":2},"children":["How to read a policy"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Policy"},"children":["Policy"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Safe with bounded exponential backoff and jitter."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read-only operation. Repeating it does not change resource state."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Query current state before retrying after a timeout or transport failure."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The operation may already have been applied. Read the resource before sending it again."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Do not retry automatically; first query whether the resource, upload, or task was created."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The operation creates something and has no idempotency key, so a blind retry can duplicate it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Do not retry automatically unless endpoint-specific documentation says it is safe."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The contract does not say enough to classify the operation. Treat it as unsafe."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Generated coverage: 212 operations; 93 have endpoint-specific documented business codes and 119 currently rely on the common error contract."]}]}]},"headings":[{"value":"Endpoint Retry and Completion Matrix","id":"endpoint-retry-and-completion-matrix","depth":1},{"value":"Per-product matrices","id":"per-product-matrices","depth":2},{"value":"How to read a policy","id":"how-to-read-a-policy","depth":2}],"frontmatter":{"seo":{"title":"Endpoint Retry and Completion Matrix"}},"lastModified":"2026-09-05T06:38:55.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/api-reference/getting-started/endpoint-behavior","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}