> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cashea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Obtener job por ID

> Devuelve el estado de un job de creación / actualización masiva de productos

Devuelve el estado de un job de creación / actualización masiva de productos y, si hubo, la lista de errores por ítem. Responde `404` si el job no existe.

## Authorization

**Authorization** `string` *required*

Formato: `ApiKey TU_API_KEY`

## Path Parameters

**jobId** `string` *required*

uuid del job devuelto por [`POST /v2/inventory/products/bulk/async`](https://docs.cashea.app/apis/inventory/create-products-async) o [`POST /v2/inventory/products/bulk-update/async`](https://docs.cashea.app/apis/inventory/update-products-async).

## Estados del job

`PENDING` y `PROCESSING` son transitorios: hay que seguir consultando. `COMPLETED` y `FAILED` son finales.

| `status` | Significado |
| - | - |
| `PENDING` | El job fue encolado y todavía no empezó a procesarse. |
| `PROCESSING` | El job se está procesando. |
| `COMPLETED` | El procesamiento terminó. **No implica que todos los ítems se hayan aplicado:** hay que revisar `errors`. Si viene vacío, se aplicaron todos; si trae elementos, esos ítems fallaron y el resto sí se aplicó. |
| `FAILED` | El job no pudo completarse. |

## Errores del job

Cuando un ítem del batch falla, aparece en `errors` con su posición en el array enviado. El resto del batch se procesa igual, así que un job `COMPLETED` puede traer errores.

Cada elemento de `errors` tiene `index` (posición del producto en el array enviado, empezando en 0), `sku`, `code` y `message`. El `code` es estable; el `message` es informativo.

| `code` | Significado |
| - | - |
| `DUPLICATE_SKU` | El SKU ya existe para el aliado. |
| `PRODUCT_NOT_FOUND` | El SKU no existe para el aliado. |
| `INVALID_CATEGORY` | El `categoryUuid` no existe, no está habilitado o no es hoja. |
| `INVALID_COMMERCIAL_BRAND` | Alguna marca comercial enviada no existe. |
| `INVALID_ATTRIBUTE` | Un par `attributeId` / `valueId` no corresponde a la categoría del producto. |
| `INVALID_DISCOUNT` | El descuento es incoherente. |
| `INVALID_INSTALLMENT_PLAN` | `bestInstallmentPlan` fuera de los valores permitidos. |

## Response

**data** `object`

**job**

**jobId** `string`

**status** `string`

`PENDING`, `PROCESSING`, `COMPLETED` o `FAILED`.

**errors** `array`

Presente cuando `status` es `COMPLETED` o `FAILED`.

**error**

**index** `integer`

**sku** `string`

**code** `string`

**message** `string`

## Errors

| Código | Descripción |
| - | - |
| `404` | El job no existe (`JOB_NOT_FOUND`). |

```bash cURL theme={null}
curl --request GET \
  --url https://sandbox.external.cashea.app/v2/inventory/jobs/b2f6e8a0-c5d3-4f0a-9c8d-1e2f3a4b5c6d \
  --header 'Authorization: ApiKey TU_API_KEY'
```

```json Ejemplo 200 sin errores theme={null}
{
  "data": {
    "jobId": "b2f6e8a0-c5d3-4f0a-9c8d-1e2f3a4b5c6d",
    "status": "COMPLETED",
    "errors": []
  }
}
```

```json Ejemplo 200 con errores por ítem theme={null}
{
  "data": {
    "jobId": "b2f6e8a0-c5d3-4f0a-9c8d-1e2f3a4b5c6d",
    "status": "COMPLETED",
    "errors": [
      { "index": 2, "sku": "ABC-789", "code": "DUPLICATE_SKU", "message": "sku \"ABC-789\" already exists" },
      { "index": 5, "sku": "XYZ-111", "code": "INVALID_INSTALLMENT_PLAN", "message": "bestInstallmentPlan must be one of: 3, 6, 9, 12" }
    ]
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.