***
title: Simulations
last-updated: 'February 24, 2026'
---------------------------------
## What Are Sandbox Simulations?
Sandbox Simulations let you:
* Test your integration with realistic, production-like data.
* Simulate actions that happen in a ShipBob facility (e.g., shipping or delivering an order).
* Spot and fix issues before they happen in real life.
Think of it as a practice run—everything works like the real thing, but no actual shipments are made.
If you haven't created a sandbox account or made your first API request, start with our [Sandbox Setup guide](/sandbox/setup).
***
## Step 1: Set Up Your Sandbox Environment
Before running simulations, make sure your sandbox account is ready. Follow our [Sandbox Setup guide](/sandbox/setup) to:
* Sign up for a sandbox account
* Generate an API access token
* Use the correct base URLs
* Add payment methods and inventory (if needed)
Once setup is complete, continue with the steps below to simulate fulfillment events.
***
## Step 2: Understand How Simulations Work
Here’s the basic flow:
1. Send a request to a Simulation API endpoint.
2. Get a **simulation ID** in response.
3. The simulation runs in the background (it might take a little time to complete).
***
## Step 3: Pick an Action to Simulate
You can simulate the following:
* **Mark a Shipment/Order as Shipped**
* **Mark a Shipment/Order as Delivered**
To simulate other actions (e.g., returns, inventory changes), email [`techspecialists@shipbob.com`](mailto:techspecialists@shipbob.com).
***
## Step 4: Prepare Your Shipment
Ensure your shipment is eligible:
* **Inventory:** Product must have stock in Cicero (IL) or Moreno Valley (CA).
* **Packaging Preferences:** Set in Merchant App → Products → \[Your Product] → Packaging Preferences.
* **Customs Info:** Required for international shipments (set under Customs Information).
* **Shipment Status:** Must not be On-Hold, Exception, or Cancelled.
* **Fulfillment Center:** Inventory must exist in the selected location.
* **Test Payment Method:** Add dummy card in Dashboard → Payment Details using:
* `4111 1111 1111 1111`, any name, email, expiration, and CVC.
***
## Step 5: Run a Simulation
**Endpoint**
```http
POST https://sandbox-api.shipbob.com/2025-07/simulate/shipment
```
**Authorization:** Bearer \{token}\
**Header:** `shipbob_channel_id` (integer)
**Request Body Schema**
```json
{
"shipment_id": 11471145,
"simulation": {
"action": "ShipOrder",
"delay": null,
"next": {
"action": "DeliverOrder",
"delay": 10
}
}
}
```
| Field | Description |
| ------------- | -------------------------------------------------------------------------- |
| `shipment_id` | Required. The ID of the shipment to simulate. |
| `action` | Required. `"ShipOrder"` or `"DeliverOrder"`. |
| `delay` | Optional. Time in minutes (1–2880) to wait before running the action. |
| `next` | Optional. A nested object for the next simulation action (up to 5 levels). |
***
**Example Requests**
**Mark as Shipped:**
```json
{
"shipment_id": 11471145,
"simulation": {
"action": "ShipOrder"
}
}
```
**Mark as Delivered:**
```json
{
"shipment_id": 11471145,
"simulation": {
"action": "DeliverOrder"
}
}
```
**Ship then Deliver with Delay:**
```json
{
"shipment_id": 11471145,
"simulation": {
"action": "ShipOrder",
"delay": 5,
"next": {
"action": "DeliverOrder",
"delay": 10
}
}
}
```
***
## Step 6: Check Simulation Status
Use the `simulation_id` returned from your request to check its progress.
**Endpoint**
```http
GET https://sandbox-api.shipbob.com/2025-07/simulate/status/{simulation_id}
```
**Authorization:** Bearer \{token}
**Response (200 OK)**
```json
{
"simulation_id": "d1cdb...ef3",
"entity_id": "11471145",
"entity_type": "shipment",
"simulation": {
"action": "ShipOrder",
"status": "Success",
"message": "ShipOrder",
"schedule_time": "2025-06-01T14:00:00Z",
"next": {
"action": "DeliverOrder",
"status": "Pending",
"message": "DeliverOrder",
"schedule_time": "2025-06-01T14:10:00Z"
}
}
}
```
| Field | Description |
| --------------- | ---------------------------------------------------------- |
| `status` | One of `Success`, `Failed`, `Pending`, or `Skipped`. |
| `schedule_time` | Time the action is scheduled for (if delay was set). |
| `next` | Nested action status (if multiple actions were simulated). |
***
## Simulation API Reference
| Endpoint | Method | Description |
| ------------------------------- | ------ | ------------------------------------- |
| `/2025-07/simulate/shipment` | POST | Register a simulation for a shipment. |
| `/2025-07/simulate/status/{id}` | GET | Get the status of a simulation. |
***
## FAQ
* Shipped
* Delivered
No. The order cannot be On-Hold, Exception, or Cancelled.
Yes, up to 5 nested actions.
The delay will be capped at 2880 minutes (2 days).
No. Simulations are only supported in the Sandbox.
Yes. Inventory must be available in a supported fulfillment center.