# Listar (/docs/developers/api-reference/contracts/list)

## Descripcion general [#descripcion-general]

Este endpoint permite obtener un listado paginado de los contratos pertenecientes a tu organización. Los resultados se devuelven en formato JSON e incluyen metadatos de paginación. Cada contrato es propiedad de la organización y se comparte entre varias razones sociales mediante un puente (relación M:N), por lo que expone el arreglo `legal_entity_numbers` con las RS vinculadas y el arreglo `concept_numbers` con los conceptos de nómina extralegales que adjunta. El campo `contract_type` corresponde a un código SAT c\_TipoContrato (p. ej. `"01"` para indeterminado). Los contratos eliminados se excluyen automáticamente.

## Endpoint [#endpoint]

`GET https://app.integranom.com/api/v1/contracts`

## Consulta multiples contratos [#consulta-multiples-contratos]

***

## Query params [#query-params]

| Parametro | Tipo                  | Requerido | Default | Descripcion                                           |
| --------- | --------------------- | --------- | ------- | ----------------------------------------------------- |
| `page`    | integer ≥ 1           | No        | 1       | Página solicitada. El tamaño de página es fijo en 20. |
| `active`  | `"true"` \| `"false"` | No        | -       | Filtra por el flag `is_active`.                       |

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/contracts" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"count": 4,
"page": 1,
"page_size": 20,
"total_pages": 1,
"next": null,
"previous": null,
"results": [
  {
    "contract_number": 4,
    "name": "Indeterminado tiempo completo",
    "contract_type": "01",
    "description": null,
    "is_active": true,
    "sort_order": 0,
    "legal_entity_numbers": [1, 2],
    "concept_numbers": [7, 9],
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
]
}
```

## Consulta contratos filtrados [#consulta-contratos-filtrados]

***

Se pueden acotar los resultados por número de contrato, por tipo de contrato SAT o por razón social. Todos los filtros hacen coincidencia exacta y se pueden combinar; `legal_entity_number` devuelve los contratos vinculados a esa RS.

## Query params [#query-params-1]

| Parametro             | Tipo    | Requerido | Default | Descripcion                                                  |
| --------------------- | ------- | --------- | ------- | ------------------------------------------------------------ |
| `contract_number`     | integer | No        | -       | Filtra por número de contrato exacto.                        |
| `contract_type`       | string  | No        | -       | Filtra por código SAT c\_TipoContrato (coincidencia exacta). |
| `legal_entity_number` | integer | No        | -       | Devuelve los contratos vinculados a esa razón social.        |

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/contracts?legal_entity_number=1&contract_type=01" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"count": 1,
"page": 1,
"page_size": 20,
"total_pages": 1,
"next": null,
"previous": null,
"results": [
  {
    "contract_number": 4,
    "name": "Indeterminado tiempo completo",
    "contract_type": "01",
    "description": null,
    "is_active": true,
    "sort_order": 0,
    "legal_entity_numbers": [1, 2],
    "concept_numbers": [7, 9],
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
]
}
```

Cada contrato de la respuesta incluye además `template_key`, `is_legal_default`, `concept_calculations`, `concept_values` (los montos fijos y las fórmulas de fracción del salario, en el formato anterior) y todas las [prestaciones](/docs/developers/api-reference/contracts/create#prestaciones), más `year_end_bonus_discounts_absences` y `year_end_bonus_days`, que es `null` cuando la tabla de aguinaldo cambia con la antigüedad.

## Errores [#errores]

| Status | Causa                                                                                                                   |
| ------ | ----------------------------------------------------------------------------------------------------------------------- |
| `400`  | Valor inválido en alguno de los filtros (`page`, `contract_number`, `contract_type`, `legal_entity_number` o `active`). |
| `401`  | API key ausente o inválida.                                                                                             |