---
title: "Bootstrap the default series of a company"
method: POST
path: "/companies/{company}/series/bootstrap"
tags: ["Series"]
---

# Bootstrap the default series of a company

`POST /companies/{company}/series/bootstrap`

## Request

- Base URL: `https://api.factuarea.com/v1`
- URL: `https://api.factuarea.com/v1/companies/{company}/series/bootstrap`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Creates the default series for each document type that has no active series. No request body.
- Returns one entry per type: `created`, `existing` or `no_default`.
- `no_default` is pending: pick from `candidates` with `POST /v1/companies/{company}/series/{series}/default`.
- Repeat calls change nothing; a repeated `Idempotency-Key` replays the original body.

## Path parameters

- `company` string, uuid, required

## Headers

- `Idempotency-Key` string
- `Factuarea-Version` string, date

## Response `200`

- object
  - `data` SeriesBootstrapResult, required: Result of bootstrapping the numbering of a company: one entry per document type of the public surface, always in the same order (`invoice`, `quote`, `delivery_note`, `proforma`).
    - `results` SeriesBootstrapEntry[], required: One entry per document type evaluated.
      - `document_type` 'invoice' | 'quote' | 'delivery_note' | 'proforma', required: Document type this entry reports on. The `contract` type is outside the public surface and is never bootstrapped.
      - `status` 'created' | 'existing' | 'no_default', required: `created`: the type had no active series and its default one was created. `existing`: it already had a default series and nothing was touched. `no_default`: it has active series but none marked as default — nothing was created and nothing was promoted.
      - `series_id` string, uuid, nullable, required: Opaque identifier (UUID v7) of the resulting default series. `null` only on `no_default`, where there is no default series to point at.
      - `code` string, nullable, required: Code of the resulting default series (`F` invoices, `P` quotes, `ALB` delivery notes, `PRF` pro formas). `null` only on `no_default`.
      - `candidates` SeriesBootstrapCandidate[], required: Active series you can promote to default. Always present; empty except on `no_default`.
        - `id` string, uuid, required: Opaque identifier (UUID v7) of the series. Pass it to `POST /v1/companies/{company}/series/{series}/default` to promote it.
        - `code` string, required: Code of the series, so the choice is informed rather than blind.

## Other responses

- `400`: `parameter_unknown` with `subcode` `retired_active_profile_header`: the retired `X-Active-Profile` header was sent; the company goes in the path. `parameter_invalid_format` on `Factuarea-Version`: the header is not a `YYYY-MM-DD` date. `unsupported_api_version`: the `Factuarea-Version` date is not a supported version.
- `401`: Missing or invalid API key.
- `403`: The request is authenticated but not allowed: the API key lacks the required scope (`insufficient_scope`), the plan does not include the public API or this feature (`addon_not_active`, `feature_not_available_in_plan`), or the module is not available with a test key (`module_not_available_in_sandbox`).
- `404`: The requested resource does not exist or belongs to another company. `profile_not_found`: the company in the path does not exist, is not in the API key scope or belongs to the other environment (live or test).
- `409`: The request conflicts with data that already exists or with a request running at the same time. `resource_conflict`: another request was reserving identifiers for the same kind of record at that moment and this one could not complete its reservation. Nothing was written; send the request again after a few seconds.
- `422`: `idempotency_key_reused`: the `Idempotency-Key` was already used with a different body; send a new key or the same body. `invalid_param_format` on `Idempotency-Key`: the key must be 1 to 255 printable ASCII characters.
- `429`: Rate limit exceeded. Retry after the duration in `Retry-After`.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/factuarea/apis/factuarea-public-api.md) · [All operations](https://skmtc.dev/factuarea/apis/factuarea-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/factuarea/apis/factuarea-public-api/revisions/718e77934422?raw)
