# fulfillmentOrderReleaseHold - admin-graphql - MUTATION
Version: 2025-01
## Description
Releases the fulfillment hold on a fulfillment order.
### Access Scopes
`write_merchant_managed_fulfillment_orders` access scope, `write_third_party_fulfillment_orders` access scope or `write_marketplace_fulfillment_orders` access scope. Also: The user must have fulfill_and_ship_orders permission.
## Arguments
* [externalId](/docs/api/admin-graphql/2025-01/scalars/String): String - A configurable ID used to track the automation system releasing this hold.
* [holdIds](/docs/api/admin-graphql/2025-01/scalars/ID): ID - The IDs of the fulfillment holds to release.
Holds will only be released if they belong to the fulfillment order specified by the `id` argument.
NOTE: If not supplied, all holds for the fulfillment order will be released.
It is highly recommended that apps supply the ids of the holds that they intend to release.
Releasing all holds on a fulfillment order will result in the fulfillment order being released prematurely
and items being incorrectly fulfilled.
* [id](/docs/api/admin-graphql/2025-01/scalars/ID): ID! - The ID of the fulfillment order for which to release the fulfillment hold.
## Returns
* [fulfillmentOrder](/docs/api/admin-graphql/2025-01/objects/FulfillmentOrder): FulfillmentOrder The fulfillment order on which the hold was released.
* [userErrors](/docs/api/admin-graphql/2025-01/objects/FulfillmentOrderReleaseHoldUserError): FulfillmentOrderReleaseHoldUserError! The list of errors that occurred from executing the mutation.
## Examples
### Release all holds on a fulfillment order
Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2025-01/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation fulfillmentOrderReleaseHold($id: ID!) { fulfillmentOrderReleaseHold(id: $id) { fulfillmentOrder { id status requestStatus } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/FulfillmentOrder/564786110\"\n }\n}'\n"
Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation fulfillmentOrderReleaseHold($id: ID!) {\n fulfillmentOrderReleaseHold(id: $id) {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/FulfillmentOrder/564786110\"\n },\n },\n});\n"
Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation fulfillmentOrderReleaseHold($id: ID!) {\n fulfillmentOrderReleaseHold(id: $id) {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/FulfillmentOrder/564786110\"\n}\n\nresponse = client.query(query: query, variables: variables)\n"
Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation fulfillmentOrderReleaseHold($id: ID!) {\n fulfillmentOrderReleaseHold(id: $id) {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/FulfillmentOrder/564786110\"\n },\n },\n);\n\nconst data = await response.json();\n"
Graphql query: "mutation fulfillmentOrderReleaseHold($id: ID!) {\n fulfillmentOrderReleaseHold(id: $id) {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n }\n }\n}"
#### Graphql Input
{
"id": "gid://shopify/FulfillmentOrder/564786110"
}
#### Graphql Response
{
"data": {
"fulfillmentOrderReleaseHold": {
"fulfillmentOrder": {
"id": "gid://shopify/FulfillmentOrder/564786110",
"status": "OPEN",
"requestStatus": "UNSUBMITTED"
},
"userErrors": []
}
}
}
### Releases the fulfillment hold on a fulfillment order
Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2025-01/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation { fulfillmentOrderReleaseHold(holdIds: [\\\"gid://shopify/FulfillmentHold/172\\\"], id: \\\"gid://shopify/FulfillmentOrder/564786110\\\") { fulfillmentOrder { id status requestStatus } userErrors { field message code } } }\"\n}'\n"
Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: `mutation {\n fulfillmentOrderReleaseHold(holdIds: [\"gid://shopify/FulfillmentHold/172\"], id: \"gid://shopify/FulfillmentOrder/564786110\") {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n code\n }\n }\n }`,\n});\n"
Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation {\n fulfillmentOrderReleaseHold(holdIds: [\"gid://shopify/FulfillmentHold/172\"], id: \"gid://shopify/FulfillmentOrder/564786110\") {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n code\n }\n }\n }\nQUERY\n\nresponse = client.query(query: query)\n"
Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation {\n fulfillmentOrderReleaseHold(holdIds: [\"gid://shopify/FulfillmentHold/172\"], id: \"gid://shopify/FulfillmentOrder/564786110\") {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n code\n }\n }\n }`,\n);\n\nconst data = await response.json();\n"
Graphql query: "mutation {\n fulfillmentOrderReleaseHold(holdIds: [\"gid://shopify/FulfillmentHold/172\"], id: \"gid://shopify/FulfillmentOrder/564786110\") {\n fulfillmentOrder {\n id\n status\n requestStatus\n }\n userErrors {\n field\n message\n code\n }\n }\n}"
#### Graphql Input
null
#### Graphql Response
{
"data": {
"fulfillmentOrderReleaseHold": {
"fulfillmentOrder": {
"id": "gid://shopify/FulfillmentOrder/564786110",
"status": "OPEN",
"requestStatus": "UNSUBMITTED"
},
"userErrors": []
}
}
}