Skip to content

Update a digital product

PATCH/digital_products/{id}

Costs 2 rate-limit points · Rate limits

Change a digital product's files or settings, as the product page does. Deep partial: delivery.message, delivery.attach_to_every_order, preorder., update_email. change only when sent; files: [{id, folder}] replaces the whole file list and folders (add or remove single files with POST /digital_products/:id/files/attach and /detach instead). Enabling a pre-order needs preorder.launch_at and a delivery.message, sent now or already saved.

preorder.launch_at must be at least two hours ahead (422 naming the field otherwise). The Shopify product or variant cannot be changed; make a new digital product.

Also searched asedit digital productchange delivery messageenable pre-orderset launch datemove file into folderupdate the product's files

Path parameters

  • idstringRequired

Request body

  • filesany
  • deliveryobject
    Show 1 child attributeHide child attributes
    • messagestring
      Example: Thanks for your order! Your files are below.
  • preorderobject
    Show 2 child attributesHide child attributes
    • enabledboolean
      Example: true
    • launch_atstring
      Example: 2026-12-01T09:00:00Z
  • update_emailany

Returns

The digital product object.

Errors

401

Missing or invalid API key.

404

The resource does not exist for this shop, or the action path is not registered.

422

The request failed validation, or sent a key the action does not take (code: "unknown_parameters" with unknown and accepted). Nothing was saved.

429

Rate limited. Cost-weighted per API key, shared with API v1: a read costs 1 point, a write 2, 40 points per fixed 60-second window. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix time the window ends); a 429 adds Retry-After (seconds), retry_after, retryable: true and a next_step in the body. A 429 did nothing: wait retry_after seconds, then send the same request again. The budget is per key, so every tool or script using the key shares it; prefer one list call with per_page over many single reads.

Every error has the same shape: see Errors.

PATCH/digital_products/{id}
curl -X PATCH "https://app.filemonk.io/api/v2/external/digital_products/7ea3c05d-6f29-42b6-b24f-43260caeaa32" \
  -H "X-Auth-Token: $FILEMONK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "delivery": {
      "message": "Thanks for your order! Your files are below."
    },
    "preorder": {
      "enabled": true,
      "launch_at": "2026-12-01T09:00:00Z"
    }
  }'
Response
{
  "id": "7ea3c05d-6f29-42b6-b24f-43260caeaa32",
  "scope": "product",
  "shopify_product_id": "gid://shopify/Product/9642107044135",
  "shopify_variant_id": null,
  "title": "Watercolour Course",
  "variant_title": null,
  "sku": null,
  "exists_on_shopify": null,
  "files": [
    {
      "id": "7ea42f2a-6dbe-459c-b8a4-27b0eb823e52",
      "name": "price-list.csv",
      "type": "file",
      "byte_size": 100634,
      "folder": null
    },
    {
      "id": "96fbe30b-c819-4cb8-9666-814c0c8853f1",
      "name": "Beginner's Guide.pdf",
      "type": "file",
      "byte_size": 116711,
      "folder": null
    }
  ],
  "folders": [],
  "delivery": {
    "message": null,
    "attach_to_every_order": false
  },
  "preorder": {
    "enabled": false,
    "launch_at": null,
    "released": true,
    "email": {
      "subject": null,
      "heading": null,
      "description": null
    }
  },
  "update_email": {
    "subject": null,
    "body": null
  },
  "orders_count": 46,
  "created_at": "2025-05-31T13:37:52Z",
  "updated_at": "2025-05-31T13:37:52Z"
}