# Idempotency

For designers and integrators.

Networks fail. Send an `Idempotency-Key` header with a write, and you can retry it without doing anything twice.

## The header

Any unique string, for example a UUID. Sending the same request again with the same key within 24 hours returns the first response without doing anything twice. Reusing a key with a different body is refused with `idempotency_key_reused`. A refused request (4xx) frees the key so you can correct and resend it; a server error (5xx) is kept and returned again, because the write may already have happened: check the resource before retrying with a new key.

**Shell**

```bash
curl -X POST "$DAPI_API_URL/v2/orders/ord_123/cancel" \
  -H "x-api-key: $DAPI_API_KEY" \
  -H "Idempotency-Key: 8e7c6c1e-2f0a-4f7b-9d3e-5b1f0c2a9e41"
```

## Endpoints that accept it

-   [POST Quote a model file `/v2/quotes`](https://public-api.dapi.digital/docs/reference/quotes.md#create_quote)
-   [POST Submit sample files for review `/v2/integrator/approval-requests`](https://public-api.dapi.digital/docs/reference/integrator-onboarding.md#create_approval_request)
-   [POST Create a product `/v2/products`](https://public-api.dapi.digital/docs/reference/products.md#create_product)
-   [POST Publish a product `/v2/products/{id}/publish`](https://public-api.dapi.digital/docs/reference/products.md#publish_product)
-   [POST Unpublish a product `/v2/products/{id}/unpublish`](https://public-api.dapi.digital/docs/reference/products.md#unpublish_product)
-   [POST Add a design to a product `/v2/products/{id}/designs`](https://public-api.dapi.digital/docs/reference/designs.md#add_design)
-   [POST Add a variant `/v2/products/{id}/variants`](https://public-api.dapi.digital/docs/reference/products.md#create_variant)
-   [POST Upload a compliance document `/v2/products/{id}/compliance/documents`](https://public-api.dapi.digital/docs/reference/products.md#upload_compliance_document)
-   [POST Create an order `/v2/orders`](https://public-api.dapi.digital/docs/reference/orders.md#create_order)
-   [POST Cancel an order `/v2/orders/{id}/cancel`](https://public-api.dapi.digital/docs/reference/orders.md#cancel_order)
-   [POST Order prints of your quotes `/v2/integrator/orders`](https://public-api.dapi.digital/docs/reference/integrator-orders.md#create_integrator_order)
-   [POST Estimate the shipping of an order `/v2/integrator/orders/shipping-estimate`](https://public-api.dapi.digital/docs/reference/integrator-orders.md#estimate_integrator_order_shipping)
-   [POST Cancel an order `/v2/integrator/orders/{id}/cancel`](https://public-api.dapi.digital/docs/reference/integrator-orders.md#cancel_integrator_order)
-   [POST Review a quality check `/v2/qc-tickets/{id}/review`](https://public-api.dapi.digital/docs/reference/quality-control.md#review_qc_ticket)
-   [POST Reply on a QC conversation `/v2/qc-tickets/{id}/messages`](https://public-api.dapi.digital/docs/reference/quality-control.md#send_qc_message)
-   [POST Report an issue with a delivered order `/v2/qc-tickets`](https://public-api.dapi.digital/docs/reference/quality-control.md#create_qc_ticket)
-   [POST Create a stock `/v2/stocks`](https://public-api.dapi.digital/docs/reference/stocks.md#create_stock)
-   [POST Add a design to a stock `/v2/stocks/{id}/designs`](https://public-api.dapi.digital/docs/reference/stocks.md#add_stock_design)
-   [POST Buy stock batches `/v2/stock-purchases`](https://public-api.dapi.digital/docs/reference/stocks.md#create_stock_purchase)
-   [POST Create an extra part `/v2/extras`](https://public-api.dapi.digital/docs/reference/extras.md#create_extra)
-   [POST Start a file upload `/v2/uploads`](https://public-api.dapi.digital/docs/reference/uploads.md#create_upload)

---

3DAPI API Docs. This page on the web: https://public-api.dapi.digital/docs/guides/idempotency. Index of every page: https://public-api.dapi.digital/docs/llms.txt.
