# Criar links em lote

> POST /v1/links/bulk: até 1.000 links por chamada com resultado por item, ou até 50.000 em segundo plano.

Fonte: https://curtei.com/docs/api/links-em-lote

Endpoint: `POST https://api.curtei.com/v1/links/bulk`
Escopo: `links:write`

Mande `{ "links": [ {...}, {...} ] }`; cada item aceita os mesmos campos do [`POST /links`](https://curtei.com/docs/api/links). Um item com erro não impede os outros.

## Até 1.000 itens: resposta na hora

Resposta `207 Multi-Status` com um resultado por item, na mesma ordem (`index`):

```json
{
  "summary": {
    "total": 2,
    "created": 1,
    "failed": 1
  },
  "results": [
    {
      "index": 0,
      "status": 201,
      "link": {
        "id": "...",
        "short_url": "https://l.curtei.com/aB3xK9"
      }
    },
    {
      "index": 1,
      "status": 400,
      "error": {
        "code": "invalid_url",
        "message": "...",
        "details": {
          "reason": "scheme_not_allowed"
        }
      }
    }
  ]
}
```

## De 1.001 a 50.000 itens: em segundo plano

- A resposta é `202` com `{ "id", "status": "pending", "total", "status_url" }`.
- Consulte `GET /links/bulk/{id}` (`processed`, `created`, `failed`) até `status` ser `done`.
- Aí `results_url` é um endereço assinado, válido por 24 h e sem token, com um resultado por linha (NDJSON).

> Cada destino passa pela checagem de segurança, então o lote tem um teto de URLs de destino (contando regras e variantes): 3.000 na resposta imediata e 75.000 em segundo plano. Acima disso, `400` com `details.destinations` e `details.max`.
