---
title: Gestión de empresas y credenciales
description: Da de alta o actualiza empresas y distingue la API key del intermediario de la credencial de cada empresa.
---

La integración utiliza dos credenciales con ámbitos diferentes. La API key
del usuario identifica al **intermediario que administra las empresas**, mientras
que cada **empresa o profesional** recibe su propia API key para operar con la
API de KubiBAI y realizar operaciones de índole propia como emitir facturas.

## Dos credenciales, dos responsabilidades

| Credencial | Encabezado HTTP | Finalidad |
| --- | --- | --- |
| API key del usuario | `X-Qbikode-UserApiKey` | Consultar datos de configuración y crear o actualizar las empresas gestionadas por el intermediario. |
| API key de la empresa | `X-Qbikode-ClientApiKey` | Identificar a la empresa o profesional en las operaciones de facturación y demás endpoints asociados a ella. |

## Flujo de alta

1. Consulta los [territorios TicketBAI
   disponibles](/api#tag/ticketbai/GET/ticketbai/territories) para obtener el
   identificador que corresponde a la empresa.
2. Envía los datos mediante [`POST
   /clientcompanies`](/api#tag/empresas/POST/clientcompanies), autenticando la
   petición con `X-Qbikode-UserApiKey`.
3. Conserva el `id` y el valor `api_key` de la respuesta.
4. Usa ese `api_key` como `X-Qbikode-ClientApiKey` en las operaciones que se
   realicen en nombre de la empresa o profesional.

La respuesta incluye los datos guardados, el objeto
`ticketbai_territory_data` y la API key generada para la nueva empresa.

:::warning
Trata `api_key` como un secreto. No la incluyas en repositorios, registros de
aplicación, capturas ni ejemplos públicos.
:::

## Datos de la empresa o profesional

Los siguientes campos son obligatorios tanto al crear como al actualizar:

- `is_individual`: `true` para una persona física y `false` para una persona
  jurídica.
- `full_name`: nombre completo o razón social.
- `tax_id_number`: NIF o CIF.
- `ticketbai_territory_id`: identificador de uno de los territorios
  disponibles.

Cuando `is_individual` es `true`, también son obligatorios `first_name` y
`last_name_1`; `last_name_2` es opcional y puede enviarse como `null`. Para una
persona jurídica, omite los tres campos de nombre y apellidos.

Al crear una empresa, `tax_id_number` debe ser único entre las empresas del
mismo intermediario.

## Actualización

Para modificar una empresa existente utiliza [`POST
/clientcompanies/{clientCompany}`](/api#tag/empresas/POST/clientcompanies/{clientCompany}),
donde `{clientCompany}` es el `id` recibido durante el alta.

La respuesta vuelve a incluir `api_key`, pero la actualización no genera una
credencial nueva: la empresa conserva su `X-Qbikode-ClientApiKey`.

## Información del Software Garante

El endpoint [Información de licencia del Software
Garante](/api#tag/ticketbai/GET/ticketbai/license) permite consultar los datos
del desarrollador, el software y su versión. Esta consulta también se
autentica con `X-Qbikode-UserApiKey` y no sustituye la API key propia de cada
empresa.
