---
updatedAt: 2026-06-04T08:19:34.000Z
agentTools:
  projectIndex: https://developers.99minutos.com/llms.txt
---

# /api/v3/webhooks

Submit a new webhook configuration. You can set 2 settings at most.

### Eventos notificados por defecto

Al registrar un webhook, se notifican por defecto los eventos correspondientes a los siguientes 15 estados:

| StatusCode | StatusName |
| --- | --- |
| `2002` | `onRoadToPickup` |
| `2003` | `collected` |
| `2101` | `unsuccessfulPickup` |
| `3001` | `stored` |
| `3004` | `onLinehaul` |
| `4001` | `onRoadToDelivery` |
| `4002` | `delivered` |
| `4101` | `unsuccessfulDelivery` |
| `5001` | `onRoadToReturn` |
| `5002` | `returned` |
| `5101` | `unsuccessfulReturn` |
| `8001` | `stolen` |
| `8002` | `lost` |
| `8003` | `cancelled` |
| `8005` | `invalidAddress` |

`StatusCode` se envía como string y `StatusName` en camelCase.

**Nota:** El array de `Events` siempre envía todo el histórico de eventos del envío registrados hasta el momento. En flujos terminales completos (`delivered`, `returned`) se visualizan todos los estados del recorrido, mientras que en cancelaciones e incidencias se presentan los eventos acontecidos hasta el reporte.

1. Happy path con evento terminal 4002 (delivered):

```json
{
  "StatusName": "delivered", // Current status of the order, sent in camelCase.
  "TrackingId": "2139671481", // Identifier generated by 99minutos
  "InternalKey": "SOME_ID", // Identifier sent by the customer
  "Destination": {
    "zone": "MCH4"
  },
  "Driver": {
    "id": "6a0c99c0734104a5696a3381"
  },
  "Route": "MX0-MCH2-3381-5",
  "Events": [ // List of events through which the shipment has transited in ascending order
    {
      "StatusCode": "1002",
      "StatusName": "confirmed",
      "CreatedAt": "2023-01-02 23:55:39", // UTC Time
      "Data": {
        "comment": "NEW_ORDER_CONFIRMED", // Additional event information
        "evidence": [] // Evidence of transition
      }
    },
    {
      "StatusCode": "2003",
      "StatusName": "collected",
      "CreatedAt": "2023-01-03 20:12:43",
      "Data": {
        "comment": "Recolectada por el veloz Don Veloz N/A 99m B 2eeb2a6",
        "evidence": []
      }
    },
    {
      "StatusCode": "10000",
      "StatusName": "inUpdates",
      "Category": "ETA",
      "CreatedAt": "2023-01-03 20:15:00",
      "Data": {
        "comment": "ETA updated",
        "evidence": [],
        "eta": "2023-01-05 18:30:00"
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "CreatedAt": "2023-01-03 22:20:02",
      "Data": {
        "comment": "En estación MX5 por módulo de inducción",
        "evidence": []
      }
    },
    {
      "StatusCode": "3004",
      "StatusName": "onLinehaul",
      "CreatedAt": "2023-01-04 01:13:46",
      "Data": {
        "comment": "En camino a estación Tultitlán desde estación Pantaco por jhon.doe el número de orden 2139671481",
        "evidence": []
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "CreatedAt": "2023-01-04 04:17:42",
      "Data": {
        "comment": "En estación MX0 por módulo de inducción",
        "evidence": []
      }
    },
    {
      "StatusCode": "3002",
      "StatusName": "onContainer",
      "CreatedAt": "2023-01-04 06:28:12",
      "Data": {
        "comment": "Contenerizado en la estación MX0 en el contenedor VQA-319 en el finger F1",
        "evidence": []
      }
    },
    {
      "StatusCode": "3003",
      "StatusName": "chargedToVehicle",
      "CreatedAt": "2023-01-05 05:13:24",
      "Data": {
        "comment": "Subida al line haul del veloz Jhon Doe con las placas LA37321 en la estacion MX0 dentro del contenedor VQA-319",
        "evidence": []
      }
    },
    {
      "StatusCode": "3004",
      "StatusName": "onLinehaul",
      "CreatedAt": "2023-01-05 06:31:29",
      "Data": {
        "comment": "Despachado de la estación MX0 hacia la estación MCH2, en el line haul del veloz Jhon Doe con las placas LA37321 en el contenedor VQA-319",
        "evidence": []
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "CreatedAt": "2023-01-05 16:37:06",
      "Data": {
        "comment": "En estación final MCH2 por módulo de inducción",
        "evidence": []
      }
    },
    {
      "StatusCode": "4001",
      "StatusName": "onRoadToDelivery",
      "CreatedAt": "2023-01-05 16:01:40",
      "Data": {
        "comment": "Asignada a entrega en la estación al veloz Jhon. Ruta: 49b91331-2be0-2fd4-9b25-1accc772f937",
        "evidence": []
      }
    },
    {
      "StatusCode": "4002",
      "StatusName": "delivered",
      "CreatedAt": "2023-01-05 16:45:54",
      "Data": {
        "comment": "Titular - Carlos Ramirez | CP",
        "evidence": [
          "[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg)",
          "[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/63b1fec1b030b63f06db10a5.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/63b1fec1b030b63f06db10a5.jpeg)",
          "[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b1fab2b031b63d01da31b7.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b1fab2b031b63d01da31b7.jpeg)"
        ],
        "destination": {
          "zone": "MCH4"
        },
        "driver": {
          "id": "6a0c99c0734104a5696a3381"
        },
        "route": "MX0-MCH2-3381-5"
      }
    }
  ]
}
```

2. Ciclo con evento terminal 5002 (returned):

```json
{
  "StatusName": "returned",
  "TrackingId": "2139671481",
  "InternalKey": "SOME_ID",
  "Destination": {
    "zone": "MCH4"
  },
  "Driver": {
    "id": "6a0c99c0734104a5696a3381"
  },
  "Route": "MX0-MCH2-3381-5",
  "Events": [
    {
      "StatusCode": "1002",
      "StatusName": "confirmed",
      "CreatedAt": "2023-01-02 23:55:39",
      "Data": {
        "comment": "NEW_ORDER_CONFIRMED",
        "evidence": []
      }
    },
    {
      "StatusCode": "2003",
      "StatusName": "collected",
      "CreatedAt": "2023-01-03 20:12:43",
      "Data": {
        "comment": "Recolectada por el veloz Don Veloz N/A 99m B 2eeb2a6",
        "evidence": []
      }
    },
    {
      "StatusCode": "10000",
      "StatusName": "inUpdates",
      "Category": "ETA",
      "CreatedAt": "2023-01-03 20:15:00",
      "Data": {
        "comment": "ETA updated",
        "evidence": [],
        "eta": "2023-01-05 18:30:00"
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "CreatedAt": "2023-01-03 22:20:02",
      "Data": {
        "comment": "En estación MX5 por módulo de inducción",
        "evidence": []
      }
    },
    {
      "StatusCode": "3004",
      "StatusName": "onLinehaul",
      "CreatedAt": "2023-01-04 01:13:46",
      "Data": {
        "comment": "En camino a estación Tultitlán desde estación Pantaco por jhon.doe el número de orden 2139671481",
        "evidence": []
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "CreatedAt": "2023-01-04 04:17:42",
      "Data": {
        "comment": "En estación MX0 por módulo de inducción",
        "evidence": []
      }
    },
    {
      "StatusCode": "3002",
      "StatusName": "onContainer",
      "CreatedAt": "2023-01-04 06:28:12",
      "Data": {
        "comment": "Contenerizado en la estación MX0 en el contenedor VQA-319 en el finger F1",
        "evidence": []
      }
    },
    {
      "StatusCode": "3003",
      "StatusName": "chargedToVehicle",
      "CreatedAt": "2023-01-05 05:13:24",
      "Data": {
        "comment": "Subida al line haul del veloz Jhon Doe con las placas LA37321 en la estacion MX0 dentro del contenedor VQA-319",
        "evidence": []
      }
    },
    {
      "StatusCode": "3004",
      "StatusName": "onLinehaul",
      "CreatedAt": "2023-01-05 06:31:29",
      "Data": {
        "comment": "Despachado de la estación MX0 hacia la estación MCH2, en el line haul del veloz Jhon Doe con las placas LA37321 en el contenedor VQA-319",
        "evidence": []
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "CreatedAt": "2023-01-05 16:37:06",
      "Data": {
        "comment": "En estación final MCH2 por módulo de inducción",
        "evidence": []
      }
    },
    {
      "StatusCode": "4001",
      "StatusName": "onRoadToDelivery",
      "CreatedAt": "2023-01-05 16:01:40",
      "Data": {
        "comment": "Asignada a entrega en la estación al veloz Jhon. Ruta: 49b91331-2be0-2fd4-9b25-1accc772f937",
        "evidence": []
      }
    },
    {
      "StatusCode": "5002",
      "StatusName": "returned",
      "CreatedAt": "2023-01-05 17:10:20",
      "Data": {
        "comment": "Devolución confirmada en estación",
        "evidence": [
          "[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg)"
        ],
        "destination": {
          "zone": "MCH4"
        },
        "driver": {
          "id": "6a0c99c0734104a5696a3381"
        },
        "route": "MX0-MCH2-3381-5"
      }
    }
  ]
}
```

3. invalidAddress (8005):

```json
{
  "StatusName": "invalidAddress",
  "TrackingId": "2139671481",
  "InternalKey": "SOME_ID",
  "Events": [
    {
      "StatusCode": "8005",
      "StatusName": "invalidAddress",
      "CreatedAt": "2023-01-05 16:30:00",
      "Category": "TRANSITION",
      "Data": {
        "comment": "Dirección no localizada por falta de numeración o referencias",
        "evidence": []
      }
    }
  ]
}
```

4. cancelled (8003):

```json
{
  "StatusName": "cancelled",
  "TrackingId": "2139671481",
  "InternalKey": "SOME_ID",
  "Events": [
    {
      "StatusCode": "8003",
      "StatusName": "cancelled",
      "CreatedAt": "2023-01-03 11:20:15",
      "Category": "TRANSITION",
      "Data": {
        "comment": "Cancelación solicitada por el cliente",
        "evidence": []
      }
    }
  ]
}
```

5. stolen (8001):

```json
{
  "StatusName": "stolen",
  "TrackingId": "2139671481",
  "InternalKey": "SOME_ID",
  "Events": [
    {
      "StatusCode": "8001",
      "StatusName": "stolen",
      "CreatedAt": "2023-01-05 14:10:00",
      "Category": "TRANSITION",
      "Data": {
        "comment": "Incidencia reportada en ruta: robo de unidad",
        "evidence": []
      }
    }
  ]
}
```

6. lost (8002):

```json
{
  "StatusName": "lost",
  "TrackingId": "2139671481",
  "InternalKey": "SOME_ID",
  "Events": [
    {
      "StatusCode": "8002",
      "StatusName": "lost",
      "CreatedAt": "2023-01-05 18:00:00",
      "Category": "TRANSITION",
      "Data": {
        "comment": "Paquete declarado como extraviado tras proceso de investigación",
        "evidence": []
      }
    }
  ]
}
```

Los siguientes ejemplos de entrega fallida y retorno fallido son ficticios y corresponden al mismo envío. Las fechas están en UTC y las URLs de evidencia son ilustrativas. Para estos estados, el payload no incluye `Destination`, `Driver` ni `Route`; esos campos se generan para `delivered` y `returned` cuando la funcionalidad está habilitada y existen datos disponibles.

7. Entrega fallida (4101, unsuccessfulDelivery):

```json
{
  "StatusName": "unsuccessfulDelivery",
  "TrackingId": "9900000001",
  "InternalKey": "ORDER-EXAMPLE-001",
  "DeliveryType": "NXD",
  "Location": null,
  "Category": "",
  "Events": [
    {
      "StatusCode": "1002",
      "StatusName": "confirmed",
      "Category": "",
      "CreatedAt": "2023-01-02 23:55:00",
      "Data": {
        "comment": "NEW_ORDER_CONFIRMED",
        "evidence": []
      }
    },
    {
      "StatusCode": "2003",
      "StatusName": "collected",
      "Category": "",
      "CreatedAt": "2023-01-03 20:12:00",
      "Data": {
        "comment": "Paquete recolectado",
        "evidence": []
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "Category": "",
      "CreatedAt": "2023-01-05 15:30:00",
      "Data": {
        "comment": "En estación final MCH2",
        "evidence": []
      }
    },
    {
      "StatusCode": "4001",
      "StatusName": "onRoadToDelivery",
      "Category": "",
      "CreatedAt": "2023-01-05 16:00:00",
      "Data": {
        "comment": "Paquete asignado a ruta de entrega",
        "evidence": []
      }
    },
    {
      "StatusCode": "4101",
      "StatusName": "unsuccessfulDelivery",
      "Category": "",
      "CreatedAt": "2023-01-05 18:45:00",
      "Data": {
        "comment": "Intento de entrega no exitoso: destinatario ausente",
        "evidence": [
          "https://example.com/evidence/unsuccessful-delivery.jpg"
        ]
      }
    }
  ]
}
```

8. Retorno fallido (5101, unsuccessfulReturn):

```json
{
  "StatusName": "unsuccessfulReturn",
  "TrackingId": "9900000001",
  "InternalKey": "ORDER-EXAMPLE-001",
  "DeliveryType": "NXD",
  "Location": null,
  "Category": "",
  "Events": [
    {
      "StatusCode": "1002",
      "StatusName": "confirmed",
      "Category": "",
      "CreatedAt": "2023-01-02 23:55:00",
      "Data": {
        "comment": "NEW_ORDER_CONFIRMED",
        "evidence": []
      }
    },
    {
      "StatusCode": "2003",
      "StatusName": "collected",
      "Category": "",
      "CreatedAt": "2023-01-03 20:12:00",
      "Data": {
        "comment": "Paquete recolectado",
        "evidence": []
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "Category": "",
      "CreatedAt": "2023-01-05 15:30:00",
      "Data": {
        "comment": "En estación final MCH2",
        "evidence": []
      }
    },
    {
      "StatusCode": "4001",
      "StatusName": "onRoadToDelivery",
      "Category": "",
      "CreatedAt": "2023-01-05 16:00:00",
      "Data": {
        "comment": "Paquete asignado a ruta de entrega",
        "evidence": []
      }
    },
    {
      "StatusCode": "4101",
      "StatusName": "unsuccessfulDelivery",
      "Category": "",
      "CreatedAt": "2023-01-05 18:45:00",
      "Data": {
        "comment": "Intento de entrega no exitoso: destinatario ausente",
        "evidence": [
          "https://example.com/evidence/unsuccessful-delivery.jpg"
        ]
      }
    },
    {
      "StatusCode": "3001",
      "StatusName": "stored",
      "Category": "",
      "CreatedAt": "2023-01-05 22:00:00",
      "Data": {
        "comment": "Paquete recibido en estación después del intento de entrega",
        "evidence": []
      }
    },
    {
      "StatusCode": "5001",
      "StatusName": "onRoadToReturn",
      "Category": "",
      "CreatedAt": "2023-01-06 15:00:00",
      "Data": {
        "comment": "Paquete asignado a ruta de devolución al remitente",
        "evidence": []
      }
    },
    {
      "StatusCode": "5101",
      "StatusName": "unsuccessfulReturn",
      "Category": "",
      "CreatedAt": "2023-01-06 18:30:00",
      "Data": {
        "comment": "Intento de devolución no exitoso: establecimiento del remitente cerrado",
        "evidence": [
          "https://example.com/evidence/unsuccessful-return.jpg"
        ]
      }
    }
  ]
}
```

# OpenAPI definition

````json
{
  "openapi": "3.0.3",
  "x-stoplight": {
    "id": "tt90qxfs5i6qr"
  },
  "info": {
    "title": "API Version 3",
    "version": "3.0.0",
    "description": "This is the documentation for the public api *(version 3)* of 99minutos. [https://www.99minutos.com/.](https://www.99minutos.com/.EnvironmentAPI)\n\n# First Steps\n\n1.  Create an account in the sandbox website: [https://delivery-git-sandbox-99minutos.vercel.app/](https://delivery-git-sandbox-99minutos.vercel.app/)\n2.  Go to Developers section\n3.  On API Keys V3 section click on `Generar`\n4.  After this the `client_id` and `client_secret` will be displayed\n    \n\nUse the credentials to generate access tokens as shown below in the endpoint `create access token`\n\nFollow the same process in production.\n\n## Environments\n\n| **Environment** | **Website** | **API url** |\n| --- | --- | --- |\n| Sandbox | [https://delivery-git-sandbox-99minutos.vercel.app/](https://delivery-git-sandbox-99minutos.vercel.app/) | [https://sandbox.99minutos.com](https://sandbox.99minutos.com) |\n| Production | [https://envios.99minutos.com/developers](https://envios.99minutos.com/developers) | [https://delivery.99minutos.com](https://delivery.99minutos.com) |\n\n`Each environment has an independent set of credentials`"
  },
  "paths": {
    "/api/v3/webhooks": {
      "post": {
        "summary": "",
        "operationId": "post-api-v3-webhooks",
        "responses": {
          "200": {
            "$ref": "#/components/responses/ConfigResponse"
          }
        },
        "description": "Submit a new webhook configuration. You can set 2 settings at most.\n\n### Eventos notificados por defecto\n\nAl registrar un webhook, se notifican por defecto los eventos correspondientes a los siguientes 15 estados:\n\n| StatusCode | StatusName |\n| --- | --- |\n| `2002` | `onRoadToPickup` |\n| `2003` | `collected` |\n| `2101` | `unsuccessfulPickup` |\n| `3001` | `stored` |\n| `3004` | `onLinehaul` |\n| `4001` | `onRoadToDelivery` |\n| `4002` | `delivered` |\n| `4101` | `unsuccessfulDelivery` |\n| `5001` | `onRoadToReturn` |\n| `5002` | `returned` |\n| `5101` | `unsuccessfulReturn` |\n| `8001` | `stolen` |\n| `8002` | `lost` |\n| `8003` | `cancelled` |\n| `8005` | `invalidAddress` |\n\n`StatusCode` se envía como string y `StatusName` en camelCase.\n\n**Nota:** El array de `Events` siempre envía todo el histórico de eventos del envío registrados hasta el momento. En flujos terminales completos (`delivered`, `returned`) se visualizan todos los estados del recorrido, mientras que en cancelaciones e incidencias se presentan los eventos acontecidos hasta el reporte.\n\n1. Happy path con evento terminal 4002 (delivered):\n\n```json\n{\n  \"StatusName\": \"delivered\", // Current status of the order, sent in camelCase.\n  \"TrackingId\": \"2139671481\", // Identifier generated by 99minutos\n  \"InternalKey\": \"SOME_ID\", // Identifier sent by the customer\n  \"Destination\": {\n    \"zone\": \"MCH4\"\n  },\n  \"Driver\": {\n    \"id\": \"6a0c99c0734104a5696a3381\"\n  },\n  \"Route\": \"MX0-MCH2-3381-5\",\n  \"Events\": [ // List of events through which the shipment has transited in ascending order\n    {\n      \"StatusCode\": \"1002\",\n      \"StatusName\": \"confirmed\",\n      \"CreatedAt\": \"2023-01-02 23:55:39\", // UTC Time\n      \"Data\": {\n        \"comment\": \"NEW_ORDER_CONFIRMED\", // Additional event information\n        \"evidence\": [] // Evidence of transition\n      }\n    },\n    {\n      \"StatusCode\": \"2003\",\n      \"StatusName\": \"collected\",\n      \"CreatedAt\": \"2023-01-03 20:12:43\",\n      \"Data\": {\n        \"comment\": \"Recolectada por el veloz Don Veloz N/A 99m B 2eeb2a6\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"10000\",\n      \"StatusName\": \"inUpdates\",\n      \"Category\": \"ETA\",\n      \"CreatedAt\": \"2023-01-03 20:15:00\",\n      \"Data\": {\n        \"comment\": \"ETA updated\",\n        \"evidence\": [],\n        \"eta\": \"2023-01-05 18:30:00\"\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"CreatedAt\": \"2023-01-03 22:20:02\",\n      \"Data\": {\n        \"comment\": \"En estación MX5 por módulo de inducción\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3004\",\n      \"StatusName\": \"onLinehaul\",\n      \"CreatedAt\": \"2023-01-04 01:13:46\",\n      \"Data\": {\n        \"comment\": \"En camino a estación Tultitlán desde estación Pantaco por jhon.doe el número de orden 2139671481\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"CreatedAt\": \"2023-01-04 04:17:42\",\n      \"Data\": {\n        \"comment\": \"En estación MX0 por módulo de inducción\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3002\",\n      \"StatusName\": \"onContainer\",\n      \"CreatedAt\": \"2023-01-04 06:28:12\",\n      \"Data\": {\n        \"comment\": \"Contenerizado en la estación MX0 en el contenedor VQA-319 en el finger F1\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3003\",\n      \"StatusName\": \"chargedToVehicle\",\n      \"CreatedAt\": \"2023-01-05 05:13:24\",\n      \"Data\": {\n        \"comment\": \"Subida al line haul del veloz Jhon Doe con las placas LA37321 en la estacion MX0 dentro del contenedor VQA-319\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3004\",\n      \"StatusName\": \"onLinehaul\",\n      \"CreatedAt\": \"2023-01-05 06:31:29\",\n      \"Data\": {\n        \"comment\": \"Despachado de la estación MX0 hacia la estación MCH2, en el line haul del veloz Jhon Doe con las placas LA37321 en el contenedor VQA-319\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"CreatedAt\": \"2023-01-05 16:37:06\",\n      \"Data\": {\n        \"comment\": \"En estación final MCH2 por módulo de inducción\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"4001\",\n      \"StatusName\": \"onRoadToDelivery\",\n      \"CreatedAt\": \"2023-01-05 16:01:40\",\n      \"Data\": {\n        \"comment\": \"Asignada a entrega en la estación al veloz Jhon. Ruta: 49b91331-2be0-2fd4-9b25-1accc772f937\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"4002\",\n      \"StatusName\": \"delivered\",\n      \"CreatedAt\": \"2023-01-05 16:45:54\",\n      \"Data\": {\n        \"comment\": \"Titular - Carlos Ramirez | CP\",\n        \"evidence\": [\n          \"[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg)\",\n          \"[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/63b1fec1b030b63f06db10a5.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/63b1fec1b030b63f06db10a5.jpeg)\",\n          \"[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b1fab2b031b63d01da31b7.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b1fab2b031b63d01da31b7.jpeg)\"\n        ],\n        \"destination\": {\n          \"zone\": \"MCH4\"\n        },\n        \"driver\": {\n          \"id\": \"6a0c99c0734104a5696a3381\"\n        },\n        \"route\": \"MX0-MCH2-3381-5\"\n      }\n    }\n  ]\n}\n```\n\n2. Ciclo con evento terminal 5002 (returned):\n\n```json\n{\n  \"StatusName\": \"returned\",\n  \"TrackingId\": \"2139671481\",\n  \"InternalKey\": \"SOME_ID\",\n  \"Destination\": {\n    \"zone\": \"MCH4\"\n  },\n  \"Driver\": {\n    \"id\": \"6a0c99c0734104a5696a3381\"\n  },\n  \"Route\": \"MX0-MCH2-3381-5\",\n  \"Events\": [\n    {\n      \"StatusCode\": \"1002\",\n      \"StatusName\": \"confirmed\",\n      \"CreatedAt\": \"2023-01-02 23:55:39\",\n      \"Data\": {\n        \"comment\": \"NEW_ORDER_CONFIRMED\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"2003\",\n      \"StatusName\": \"collected\",\n      \"CreatedAt\": \"2023-01-03 20:12:43\",\n      \"Data\": {\n        \"comment\": \"Recolectada por el veloz Don Veloz N/A 99m B 2eeb2a6\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"10000\",\n      \"StatusName\": \"inUpdates\",\n      \"Category\": \"ETA\",\n      \"CreatedAt\": \"2023-01-03 20:15:00\",\n      \"Data\": {\n        \"comment\": \"ETA updated\",\n        \"evidence\": [],\n        \"eta\": \"2023-01-05 18:30:00\"\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"CreatedAt\": \"2023-01-03 22:20:02\",\n      \"Data\": {\n        \"comment\": \"En estación MX5 por módulo de inducción\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3004\",\n      \"StatusName\": \"onLinehaul\",\n      \"CreatedAt\": \"2023-01-04 01:13:46\",\n      \"Data\": {\n        \"comment\": \"En camino a estación Tultitlán desde estación Pantaco por jhon.doe el número de orden 2139671481\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"CreatedAt\": \"2023-01-04 04:17:42\",\n      \"Data\": {\n        \"comment\": \"En estación MX0 por módulo de inducción\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3002\",\n      \"StatusName\": \"onContainer\",\n      \"CreatedAt\": \"2023-01-04 06:28:12\",\n      \"Data\": {\n        \"comment\": \"Contenerizado en la estación MX0 en el contenedor VQA-319 en el finger F1\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3003\",\n      \"StatusName\": \"chargedToVehicle\",\n      \"CreatedAt\": \"2023-01-05 05:13:24\",\n      \"Data\": {\n        \"comment\": \"Subida al line haul del veloz Jhon Doe con las placas LA37321 en la estacion MX0 dentro del contenedor VQA-319\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3004\",\n      \"StatusName\": \"onLinehaul\",\n      \"CreatedAt\": \"2023-01-05 06:31:29\",\n      \"Data\": {\n        \"comment\": \"Despachado de la estación MX0 hacia la estación MCH2, en el line haul del veloz Jhon Doe con las placas LA37321 en el contenedor VQA-319\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"CreatedAt\": \"2023-01-05 16:37:06\",\n      \"Data\": {\n        \"comment\": \"En estación final MCH2 por módulo de inducción\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"4001\",\n      \"StatusName\": \"onRoadToDelivery\",\n      \"CreatedAt\": \"2023-01-05 16:01:40\",\n      \"Data\": {\n        \"comment\": \"Asignada a entrega en la estación al veloz Jhon. Ruta: 49b91331-2be0-2fd4-9b25-1accc772f937\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"5002\",\n      \"StatusName\": \"returned\",\n      \"CreatedAt\": \"2023-01-05 17:10:20\",\n      \"Data\": {\n        \"comment\": \"Devolución confirmada en estación\",\n        \"evidence\": [\n          \"[https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg](https://copilot-image-proxy-qndxoltwga-uc.a.run.app/view/62b6fec1836a6321a5ca5a4a.jpeg)\"\n        ],\n        \"destination\": {\n          \"zone\": \"MCH4\"\n        },\n        \"driver\": {\n          \"id\": \"6a0c99c0734104a5696a3381\"\n        },\n        \"route\": \"MX0-MCH2-3381-5\"\n      }\n    }\n  ]\n}\n```\n\n3. invalidAddress (8005):\n\n```json\n{\n  \"StatusName\": \"invalidAddress\",\n  \"TrackingId\": \"2139671481\",\n  \"InternalKey\": \"SOME_ID\",\n  \"Events\": [\n    {\n      \"StatusCode\": \"8005\",\n      \"StatusName\": \"invalidAddress\",\n      \"CreatedAt\": \"2023-01-05 16:30:00\",\n      \"Category\": \"TRANSITION\",\n      \"Data\": {\n        \"comment\": \"Dirección no localizada por falta de numeración o referencias\",\n        \"evidence\": []\n      }\n    }\n  ]\n}\n```\n\n4. cancelled (8003):\n\n```json\n{\n  \"StatusName\": \"cancelled\",\n  \"TrackingId\": \"2139671481\",\n  \"InternalKey\": \"SOME_ID\",\n  \"Events\": [\n    {\n      \"StatusCode\": \"8003\",\n      \"StatusName\": \"cancelled\",\n      \"CreatedAt\": \"2023-01-03 11:20:15\",\n      \"Category\": \"TRANSITION\",\n      \"Data\": {\n        \"comment\": \"Cancelación solicitada por el cliente\",\n        \"evidence\": []\n      }\n    }\n  ]\n}\n```\n\n5. stolen (8001):\n\n```json\n{\n  \"StatusName\": \"stolen\",\n  \"TrackingId\": \"2139671481\",\n  \"InternalKey\": \"SOME_ID\",\n  \"Events\": [\n    {\n      \"StatusCode\": \"8001\",\n      \"StatusName\": \"stolen\",\n      \"CreatedAt\": \"2023-01-05 14:10:00\",\n      \"Category\": \"TRANSITION\",\n      \"Data\": {\n        \"comment\": \"Incidencia reportada en ruta: robo de unidad\",\n        \"evidence\": []\n      }\n    }\n  ]\n}\n```\n\n6. lost (8002):\n\n```json\n{\n  \"StatusName\": \"lost\",\n  \"TrackingId\": \"2139671481\",\n  \"InternalKey\": \"SOME_ID\",\n  \"Events\": [\n    {\n      \"StatusCode\": \"8002\",\n      \"StatusName\": \"lost\",\n      \"CreatedAt\": \"2023-01-05 18:00:00\",\n      \"Category\": \"TRANSITION\",\n      \"Data\": {\n        \"comment\": \"Paquete declarado como extraviado tras proceso de investigación\",\n        \"evidence\": []\n      }\n    }\n  ]\n}\n```\n\nLos siguientes ejemplos de entrega fallida y retorno fallido son ficticios y corresponden al mismo envío. Las fechas están en UTC y las URLs de evidencia son ilustrativas. Para estos estados, el payload no incluye `Destination`, `Driver` ni `Route`; esos campos se generan para `delivered` y `returned` cuando la funcionalidad está habilitada y existen datos disponibles.\n\n7. Entrega fallida (4101, unsuccessfulDelivery):\n\n```json\n{\n  \"StatusName\": \"unsuccessfulDelivery\",\n  \"TrackingId\": \"9900000001\",\n  \"InternalKey\": \"ORDER-EXAMPLE-001\",\n  \"DeliveryType\": \"NXD\",\n  \"Location\": null,\n  \"Category\": \"\",\n  \"Events\": [\n    {\n      \"StatusCode\": \"1002\",\n      \"StatusName\": \"confirmed\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-02 23:55:00\",\n      \"Data\": {\n        \"comment\": \"NEW_ORDER_CONFIRMED\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"2003\",\n      \"StatusName\": \"collected\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-03 20:12:00\",\n      \"Data\": {\n        \"comment\": \"Paquete recolectado\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-05 15:30:00\",\n      \"Data\": {\n        \"comment\": \"En estación final MCH2\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"4001\",\n      \"StatusName\": \"onRoadToDelivery\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-05 16:00:00\",\n      \"Data\": {\n        \"comment\": \"Paquete asignado a ruta de entrega\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"4101\",\n      \"StatusName\": \"unsuccessfulDelivery\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-05 18:45:00\",\n      \"Data\": {\n        \"comment\": \"Intento de entrega no exitoso: destinatario ausente\",\n        \"evidence\": [\n          \"https://example.com/evidence/unsuccessful-delivery.jpg\"\n        ]\n      }\n    }\n  ]\n}\n```\n\n8. Retorno fallido (5101, unsuccessfulReturn):\n\n```json\n{\n  \"StatusName\": \"unsuccessfulReturn\",\n  \"TrackingId\": \"9900000001\",\n  \"InternalKey\": \"ORDER-EXAMPLE-001\",\n  \"DeliveryType\": \"NXD\",\n  \"Location\": null,\n  \"Category\": \"\",\n  \"Events\": [\n    {\n      \"StatusCode\": \"1002\",\n      \"StatusName\": \"confirmed\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-02 23:55:00\",\n      \"Data\": {\n        \"comment\": \"NEW_ORDER_CONFIRMED\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"2003\",\n      \"StatusName\": \"collected\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-03 20:12:00\",\n      \"Data\": {\n        \"comment\": \"Paquete recolectado\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-05 15:30:00\",\n      \"Data\": {\n        \"comment\": \"En estación final MCH2\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"4001\",\n      \"StatusName\": \"onRoadToDelivery\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-05 16:00:00\",\n      \"Data\": {\n        \"comment\": \"Paquete asignado a ruta de entrega\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"4101\",\n      \"StatusName\": \"unsuccessfulDelivery\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-05 18:45:00\",\n      \"Data\": {\n        \"comment\": \"Intento de entrega no exitoso: destinatario ausente\",\n        \"evidence\": [\n          \"https://example.com/evidence/unsuccessful-delivery.jpg\"\n        ]\n      }\n    },\n    {\n      \"StatusCode\": \"3001\",\n      \"StatusName\": \"stored\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-05 22:00:00\",\n      \"Data\": {\n        \"comment\": \"Paquete recibido en estación después del intento de entrega\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"5001\",\n      \"StatusName\": \"onRoadToReturn\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-06 15:00:00\",\n      \"Data\": {\n        \"comment\": \"Paquete asignado a ruta de devolución al remitente\",\n        \"evidence\": []\n      }\n    },\n    {\n      \"StatusCode\": \"5101\",\n      \"StatusName\": \"unsuccessfulReturn\",\n      \"Category\": \"\",\n      \"CreatedAt\": \"2023-01-06 18:30:00\",\n      \"Data\": {\n        \"comment\": \"Intento de devolución no exitoso: establecimiento del remitente cerrado\",\n        \"evidence\": [\n          \"https://example.com/evidence/unsuccessful-return.jpg\"\n        ]\n      }\n    }\n  ]\n}\n```",
        "security": [
          {
            "AuthJWT": []
          }
        ],
        "tags": [
          "webhooks"
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Config"
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "AuthJWT": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "responses": {
      "ConfigResponse": {
        "description": "Config Response",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "integer"
                },
                "message": {
                  "type": "string"
                },
                "data": {
                  "type": "object",
                  "properties": {
                    "status_rules": {
                      "type": "object",
                      "properties": {
                        "status_rules": {
                          "type": "integer"
                        },
                        "allowed_status_names": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "description": ""
                          }
                        }
                      }
                    },
                    "headers": {
                      "type": "object",
                      "properties": {
                        "Authorization": {
                          "type": "string"
                        },
                        "Content-Type": {
                          "type": "string"
                        },
                        "User-Agent": {
                          "type": "string"
                        }
                      }
                    },
                    "id": {
                      "type": "string"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "client_id": {
                          "type": "string"
                        }
                      }
                    },
                    "url": {
                      "type": "string"
                    }
                  }
                }
              },
              "x-examples": {
                "example-1": {
                  "status": 201,
                  "message": "configuration saved",
                  "data": {
                    "headers": {
                      "Authorization": "Basic KEY",
                      "Content-Type": "application/json",
                      "User-Agent": "99notifications"
                    },
                    "id": "01e1237d-d110-41d5-bd3a-9173b5391878",
                    "owner": {
                      "client_id": "000522b5-1954-0000-8f49-73aa0bc0956f"
                    },
                    "url": "https://43a9-186-30-89-21.ngrok.io"
                  }
                }
              }
            },
            "examples": {
              "Config Response": {
                "value": {
                  "status": 201,
                  "message": "configuration saved",
                  "data": {
                    "headers": {
                      "Authorization": "Basic KEY",
                      "Content-Type": "application/json",
                      "User-Agent": "99notifications"
                    },
                    "id": "01e1237d-d110-41d5-bd3a-9173b5391878",
                    "owner": {
                      "client_id": "000522b5-1954-0000-8f49-73aa0bc0956f"
                    },
                    "url": "https://43a9-186-30-89-21.ngrok.io"
                  }
                }
              }
            }
          }
        }
      }
    },
    "requestBodies": {
      "Config": {
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "x-examples": {
                "example-1": {
                  "url": "https://foo.com/bar",
                  "headers": {
                    "Authorization": "Basic KEY"
                  }
                }
              },
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Url of the webhook. Must start with https://"
                },
                "headers": {
                  "type": "object",
                  "description": "Map of custom headers. Max 3 headers"
                }
              },
              "required": [
                "url"
              ]
            },
            "examples": {
              "Config webhook": {
                "value": {
                  "url": "https://foo.com/bar",
                  "headers": {
                    "Authorization": "Basic KEY"
                  }
                }
              }
            }
          }
        },
        "description": "Submit a new webhook configuration"
      }
    }
  },
  "servers": [
    {
      "url": "https://delivery.99minutos.com",
      "description": "Produccion"
    },
    {
      "url": "https://sandbox.99minutos.com",
      "description": "Sandbox Environment"
    }
  ],
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true,
    "samples-enabled": true
  }
}
````

# Sibling pages

* [/api/v3/webhooks](https://developers.99minutos.com/reference/get-api-v3-webhooks.md)
* [/api/v3/webhooks/{webhook_id}](https://developers.99minutos.com/reference/patch-api-v3-webhooks-webhook_id.md)
* [/api/v3/webhooks/{webhook_id}](https://developers.99minutos.com/reference/delete-api-v3-webhooks-webhook_id.md)
* [/api/v3/webhooks/evidences/{tracking_id}](https://developers.99minutos.com/reference/get-api-v3-webhooks-evidences-by-tracking-id.md)