Troubleshoot an order
/orders/{id}/troubleshootCosts 1 rate-limit point · Rate limits
Why a buyer got no files, as the Orders page's troubleshooter shows: whether Shopify has the order, whether Filemonk stored it, and for every Shopify line item whether its product or variant has files in Filemonk (with counts) or is a custom product. Ends with a diagnosis and the request that fixes each finding. :id is the order name (#1042), the Shopify order gid or id, or Filemonk's order id.
Read-only; asks Shopify for the order. Start here for a 'no files' complaint, then send the next_steps request it names (each previews before it changes anything). 404 when neither Shopify nor Filemonk has the order; 502 when Shopify did not answer.
Also searched ascustomer got no filescustomer did not receive downloadwhy was this order not deliveredtroubleshoot orderorder missing in filemonkdiagnose order
Path parameters
idstringRequired
Returns
querystring, nullableExample:#1042shopifyobjectShow 9 child attributesHide child attributes
foundboolean, nullableExample:trueidstring, nullableExample:gid://shopify/Order/7555375595815namestring, nullableExample:#1042created_atstring, nullableExample:2026-10-28T14:02:11Zemailstring, nullableExample:buyer@example.comfinancial_statusstring, nullableExample:paidfulfillment_statusanycancelled_atanytestboolean, nullableExample:false
filemonkobjectShow 8 child attributesHide child attributes
storedboolean, nullableExample:truedeletedboolean, nullableExample:falseidstring, nullableExample:3f1c2b8e-5a7d-4e19-9c61-2b8d0f4a7c55namestring, nullableExample:#1042accessobjectShow 3 child attributesHide child attributes
statestring, nullableExample:activerevokedboolean, nullableExample:falseexpires_atany
delivery_conditions_metboolean, nullableExample:trueemail_sent_atanyfiles_countinteger, nullableExample:0
line_itemsarray of objectsShow 9 child attributesHide child attributes
titlestring, nullableExample:Watercolour Coursevariant_titleanyskuanyquantityinteger, nullableExample:1shopify_product_idstring, nullableExample:gid://shopify/Product/9642107044135shopify_variant_idstring, nullableExample:gid://shopify/ProductVariant/49718237560103productobjectShow 3 child attributesHide child attributes
digital_product_idsarray of stringsfiles_countinteger, nullableExample:2customboolean, nullableExample:false
variantanydelivers_filesboolean, nullableExample:true
diagnosisarray of objectsShow 4 child attributesHide child attributes
codestring, nullableExample:stored_without_filesfindingstring, nullableExample:Filemonk stored the order before its products had files, …next_stepstring, nullableExample:Re-sync it from Shopify to link the files now on its prod…requeststring, nullableExample:POST /orders/3f1c2b8e-5a7d-4e19-9c61-2b8d0f4a7c55/resync
Errors
Missing or invalid API key.
The resource does not exist for this shop, or the action path is not registered.
The request failed validation, or sent a key the action does not take (code: "unknown_parameters" with unknown and accepted). Nothing was saved.
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.
Shopify (or the email service) did not complete the request. Nothing was changed; try again shortly.
Every error has the same shape: see Errors.
curl "https://app.filemonk.io/api/v2/external/orders/3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f/troubleshoot" \
-H "X-Auth-Token: $FILEMONK_API_KEY"const res = await fetch("https://app.filemonk.io/api/v2/external/orders/3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f/troubleshoot", {
headers: {
"X-Auth-Token": process.env.FILEMONK_API_KEY,
},
});
const data = await res.json();import os
import requests
res = requests.get(
"https://app.filemonk.io/api/v2/external/orders/3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f/troubleshoot",
headers={"X-Auth-Token": os.environ["FILEMONK_API_KEY"]},
)
data = res.json()require "net/http"
require "json"
uri = URI("https://app.filemonk.io/api/v2/external/orders/3e84eb8d-e1d9-4e92-a4b2-a419c7f1122f/troubleshoot")
req = Net::HTTP::Get.new(uri, "X-Auth-Token" => ENV["FILEMONK_API_KEY"])
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body){
"query": "#1042",
"shopify": {
"found": true,
"id": "gid://shopify/Order/7555375595815",
"name": "#1042",
"created_at": "2026-10-28T14:02:11Z",
"email": "buyer@example.com",
"financial_status": "paid",
"fulfillment_status": null,
"cancelled_at": null,
"test": false
},
"filemonk": {
"stored": true,
"deleted": false,
"id": "3f1c2b8e-5a7d-4e19-9c61-2b8d0f4a7c55",
"name": "#1042",
"access": {
"state": "active",
"revoked": false,
"expires_at": null
},
"delivery_conditions_met": true,
"email_sent_at": null,
"files_count": 0
},
"line_items": [
{
"title": "Watercolour Course",
"variant_title": null,
"sku": null,
"quantity": 1,
"shopify_product_id": "gid://shopify/Product/9642107044135",
"shopify_variant_id": "gid://shopify/ProductVariant/49718237560103",
"product": {
"digital_product_ids": [
"7ea3c05d-6f29-42b6-b24f-43260caeaa32"
],
"files_count": 2,
"custom": false
},
"variant": null,
"delivers_files": true
}
],
"diagnosis": [
{
"code": "stored_without_files",
"finding": "Filemonk stored the order before its products had files, so it holds none.",
"next_step": "Re-sync it from Shopify to link the files now on its products. It previews first.",
"request": "POST /orders/3f1c2b8e-5a7d-4e19-9c61-2b8d0f4a7c55/resync"
}
]
}{
"errors": [
"Invalid API key"
]
}{
"errors": [
"Order not found: c3d4e5f6-7a8b-4c9d-8e0f-1a2b3c4d5e6f"
]
}{
"errors": [
"access.download_limit_count must be an integer of at least 0"
],
"field_errors": {
"access.download_limit_count": [
"must be an integer of at least 0"
]
}
}{
"errors": [
"You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
],
"code": "rate_limited",
"retry_after": 12,
"error": "Rate limit exceeded",
"message": "You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
}{
"errors": [
"Shopify did not complete the request. Nothing was changed; try again shortly."
],
"code": "shopify_error"
}