> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer-stage.shipbob.dev/2026-07/api/orders/assign-fulfillment-center/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-stage.shipbob.dev/_mcp/server. # Assign Fulfillment Center POST https://sandbox-api.shipbob.com/2026-07/shipment/{shipmentId}:assignFulfillmentCenter Content-Type: application/json Assigns a specific fulfillment center to a shipment, overriding the automatically selected one. The caller must have access to the target fulfillment center. **Important — asynchronous inventory re-evaluation:** This action does NOT pre-check inventory availability at the target fulfillment center. The assignment succeeds immediately and inventory allocation re-evaluates the shipment asynchronously; if stock is missing at the target FC the shipment may land in an exception state. It also does not revalidate that the target fulfillment center supports the shipment's current shipping service. Both behaviors mirror the merchant dashboard. **Validation:** The action is rejected when the shipment is already picked, being picked, or sorted by the warehouse; cancelled; shipped or completed; a Kitting shipment; an Automated Amazon FBA shipment; or when the target fulfillment center is inactive or not accessible to the caller. **Note on error handling:** This endpoint returns HTTP 200 for both successful and failed operations. Always check the `is_success` field in the response body; when `is_success` is `false`, the `error` object contains the code and message. HTTP 400 is only returned when the request body itself is missing (null); a missing or non-positive `fulfillment_center_id` is returned as HTTP 200 with `is_success: false`. Reference: https://developer-stage.shipbob.dev/api/orders/assign-fulfillment-center ## Authentication - `Authorization` header (bearer token, required) — Authentication using Personal Access Token (PAT) token - `Authorization` header (bearer token, required) — OAuth2 authentication using JWT tokens ## Request ### Path parameters - `shipmentId` (integer, required) — Unique identifier of the shipment ### Body (application/json) This endpoint expects an Orders.AssignFulfillmentCenterRequest. - `fulfillment_center_id` (integer, required) — Unique identifier of the fulfillment center to assign to the shipment. The caller must have access to it and it must be active. ## Response ### 200 OK - `error` (Orders.ErrorResponse, optional, nullable) — Error details if the update was not successful - `id` (long, optional) — Unique identifier of the shipment - `is_success` (boolean, optional) — Indicates whether the update was successful ## Errors ### 400 Bad Request Error Bad Request - `code` (enum, optional) — Error code identifying the type of error - Allowed values: `INVALID_PARAMETER`, `VALIDATION_ERROR`, `DATABASE_UPDATE_ERROR`, `REPROCESSING_ERROR`, `DEALLOCATE_ERROR`, `NOT_FOUND`, `CONFLICT` - `message` (string, optional, nullable) — Human-readable description of the error ## Types ### Orders.ErrorResponse - `code` (enum, optional) — Error code identifying the type of error - Allowed values: `INVALID_PARAMETER`, `VALIDATION_ERROR`, `DATABASE_UPDATE_ERROR`, `REPROCESSING_ERROR`, `DEALLOCATE_ERROR`, `NOT_FOUND`, `CONFLICT` - `message` (string, optional, nullable) — Human-readable description of the error ## Examples **Request** ```json { "fulfillment_center_id": 10 } ``` **Response** ```json { "error": {}, "id": 123456, "is_success": true } ``` **SDK Code** ```python default import requests url = "https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter" payload = { "fulfillment_center_id": 10 } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript default const url = 'https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"fulfillment_center_id":10}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go default package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter" payload := strings.NewReader("{\n \"fulfillment_center_id\": 10\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby default require 'uri' require 'net/http' url = URI("https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{\n \"fulfillment_center_id\": 10\n}" response = http.request(request) puts response.read_body ``` ```java default import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"fulfillment_center_id\": 10\n}") .asString(); ``` ```php default request('POST', 'https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter', [ 'body' => '{ "fulfillment_center_id": 10 }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp default using RestSharp; var client = new RestClient("https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"fulfillment_center_id\": 10\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift default import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = ["fulfillment_center_id": 10] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/2026-07/shipment/1:assignFulfillmentCenter")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```