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

# POST/Token

> Guía de API de registro seguro de tokens con modo privado y configuración de cifrado

Registre tokens de forma segura. Puede registrar hasta 100,000 tokens por proyecto, con un máximo de 500 tokens por solicitud.

<Info>
  Puede transmitir datos de forma segura a través de las funciones de seguridad de modo privado y cifrado.
</Info>

## Información Básica

<ParamField path="method" type="string" required>
  **POST**
</ParamField>

<ParamField path="url" type="string" required>
  [https://rest-api.argosidentity.com/v3/submission/tokens](https://rest-api.argosidentity.com/v3/submission/tokens)
</ParamField>

## Configuración de Seguridad

### Opción de Cifrado

<Warning>
  Cuando la opción **Secure Data Transmission** está habilitada, las solicitudes y respuestas se cifran con AES-256.
</Warning>

* Método de cifrado: **AES-256**
* Cobertura: Datos de solicitud y respuesta
* Compatibilidad: Mismo método de cifrado/descifrado que POST/submission, PATCH/submission, GET/submission
* [Opciones de Transferencia Segura de Datos](/es/idcheck/getting-started/encrypt-and-decrypt-data/overview#4-secure-data-transfer-options)

### Autenticación

<ParamField header="x-api-key" type="string" required>
  Establezca su clave API del proyecto.
</ParamField>

<ParamField header="Content-Type" type="string" required>
  Establezca el tipo MIME del cuerpo de la solicitud.
</ParamField>

<Warning>
  Cuando use `Content-Type: application/json` para solicitudes POST, si la solicitud falla, use `text/plain` en su lugar.
</Warning>

```bash theme={null}
x-api-key: {{YOUR_API_KEY}}
Content-Type: text/plain
```

## Parámetros de Solicitud

### Cuerpo de la Solicitud

<ParamField body="tokenId" type="Array<String>" required>
  Array de IDs de tokens a agregar (máximo 500 por solicitud)

  **Restricciones de formato del ID de token:**

  * **Longitud**: 8 Byte \~ 64 Byte
  * **Caracteres permitidos**: Letras (a-z, A-Z), números (0-9), guiones (-), guiones bajos (\_), puntos (.)
  * **Restricciones**: Sin espacios, tabulaciones ni caracteres de nueva línea
  * **Inicio/Fin**: Debe comenzar y terminar solo con letras o números
</ParamField>

<RequestExample>
  ```bash cURL Request Example theme={null}
  curl -X POST 'https://rest-api.argosidentity.com/v3/submission/tokens' \
    -H 'x-api-key: YOUR_API_KEY' \
    -H 'Content-Type: text/plain' \
    -d '{
    "tokenId": [
      "user001a",
      "api.key.01", 
      "token-123-abc",
      "session_data_01"
    ]
  }'
  ```

  ```json Request Body (JSON format but sent as text/plain) theme={null}
  {
    "tokenId": [
      "user001a",
      "api.key.01", 
      "token-123-abc",
      "session_data_01"
    ]
  }
  ```
</RequestExample>

## Respuesta

### Respuesta Exitosa (200)

<ResponseField name="success" type="Boolean">
  Estado de éxito de la operación
</ResponseField>

<ResponseField name="message" type="String">
  Mensaje de resultado de la operación
</ResponseField>

<ResponseField name="summary" type="Object">
  Información de resumen

  <Expandable title="summary properties">
    <ResponseField name="totalSubmitted" type="Number">
      Número total de tokens enviados
    </ResponseField>

    <ResponseField name="currentCount" type="Number">
      Número total de tokens actualmente registrados
    </ResponseField>

    <ResponseField name="processed" type="Number">
      Número de tokens procesados exitosamente
    </ResponseField>

    <ResponseField name="failed" type="Number">
      Número de tokens fallidos
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="details" type="Object">
  Información detallada (incluida solo cuando ocurren fallos)

  <Expandable title="details properties">
    <ResponseField name="failed" type="Array">
      Lista de tokens fallidos

      <Expandable title="failed array properties">
        <ResponseField name="tokenId" type="String">
          ID del token fallido
        </ResponseField>

        <ResponseField name="error" type="String">
          Código de fallo
        </ResponseField>

        <ResponseField name="message" type="String">
          Mensaje de fallo
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json Complete Success theme={null}
  {
    "success": true,
    "message": "All tokens are now in the pool",
    "summary": {
      "totalSubmitted": 4,
      "currentCount" : 3504,
      "processed": 4,
      "failed": 0
    }
  }
  ```

  ```json Partial Failure theme={null}
  {
    "success": false,
    "message": "Some tokens failed to process",
    "summary": {
      "totalSubmitted": 4,
      "currentCount" : 3504,
      "processed": 3,
      "failed": 1
    },
    "details": {
      "failed": [
        {
          "tokenId": "token-123-abc",
          "error": "Process_failed",
          "message": "Write operation failed"
        }
      ]
    }
  }
  ```
</ResponseExample>

### Respuesta de Error (400/500)

<ResponseField name="errorCode" type="String" required>
  Código de error
</ResponseField>

<ResponseField name="errorMessage" type="String" required>
  Mensaje de error
</ResponseField>

<ResponseField name="errorDetails" type="Object">
  Detalles del error (opcional)
</ResponseField>

<ResponseExample>
  ```json Token Format Error theme={null}
  {
    "errorCode": "invalid_token_id_format",
    "errorMessage": "One or more token IDs do not meet the required format specifications.",
    "errorDetails": {
      "invalidTokens": [
        {
          "tokenId": "short01",
          "errorCode": "invalid_token_id_length",
          "errorMessage": "Token ID length must be between 8 and 64 characters. Please adjust the token length."
        }
      ]
    }
  }
  ```
</ResponseExample>

## Política de Tokens

### Limitaciones

<Warning>
  **Pool de Tokens**: Máximo 100,000 por PID (ocurre un error cuando se excede)
  **Por Solicitud**: Máximo 500 IDs de tokens
</Warning>

<Warning>
  **Importante**: Ocurrirá un error cuando el pool de tokens supere 100,000. Para gestionar el conteo de tokens, puede utilizar los siguientes dos métodos:

  * Use la [API de Eliminación de Tokens DELETE](/es/idcheck/api-reference/api-reference-guide/delete-token) para limpiar tokens innecesarios con anticipación.
  * Habilite la configuración 'Token Id deletion condition setting' en la configuración de modo privado del dashboard para eliminación automática cuando los tokens expiren; los tokens usados se eliminan automáticamente.
</Warning>

### Manejo Parcial

<Info>
  Las solicitudes POST se procesan parcialmente para los IDs de tokens.
  Los IDs de tokens que ya existen en el pool se sobrescriben, y no se devuelve un error de duplicación separado.
</Info>

**Ejemplo:**

* IDs de tokens existentes en el pool: `tokenA`, `tokenB`, `tokenC`
* Solicitud POST: `tokenA`, `tokenC`, `tokenD`
* Pool después de completar la solicitud: `tokenA`, `tokenB`, `tokenC`, `tokenD`

## Códigos de Error

### Errores Comunes

| Error Code                 | HTTP Status | Descripción                                           |
| -------------------------- | ----------- | ----------------------------------------------------- |
| invalid\_payload           | 400         | Payload de solicitud faltante o error de formato      |
| invalid\_path              | 400         | Método HTTP no soportado                              |
| invalid\_project           | 400         | ID de proyecto faltante o clave API inválida          |
| invalid\_query\_parameters | 400         | Parámetros de consulta faltantes o error de formato   |
| invalid\_order             | 400         | Error de formato en el parámetro de orden de consulta |
| internal\_server\_error    | 500         | Error interno del servidor                            |

### Errores Relacionados con Tokens

| Error Code                      | HTTP Status | Descripción                                                                |
| ------------------------------- | ----------- | -------------------------------------------------------------------------- |
| invalid\_token\_id              | 400         | ID de token faltante, valor vacío o no es un array                         |
| invalid\_token\_id\_format      | 400         | Violación de regla de formato de ID de token                               |
| invalid\_token\_id\_type        | 400         | El ID de token no es una cadena                                            |
| invalid\_token\_id\_length      | 400         | Longitud del ID de token fuera del rango de 8-64 caracteres                |
| invalid\_token\_id\_whitespace  | 400         | El ID de token contiene caracteres de espacio en blanco                    |
| invalid\_token\_id\_characters  | 400         | El ID de token contiene caracteres no permitidos                           |
| invalid\_token\_id\_start       | 400         | El ID de token no comienza con letra/número                                |
| invalid\_token\_id\_end         | 400         | El ID de token no termina con letra/número                                 |
| request\_token\_limit\_exceeded | 400         | Límite de conteo de tokens por solicitud excedido (500)                    |
| token\_limit\_exceeded          | 400         | Limite total de tokens del proyecto excedido (100,000)                     |
| token\_id\_not\_found           | 400         | El token solicitado no existe en el pool                                   |
| token\_id\_details\_not\_found  | 400         | Fallo en la recuperación de detalles del token                             |
| delete\_token\_limit\_exceeded  | 400         | Conteo de solicitud de eliminación masiva basada en tiempo excedido (5000) |

<Tip>
  Puede transmitir de forma segura datos sensibles de tokens a través de la configuración de cifrado. Considere habilitar la opción de cifrado para seguridad en entornos de producción.
</Tip>

<Tip>
  **Uso de Liveform QueryString**: [https://form.argosidentity.com?pid=\{projectid}\&token=\{tokenid\_POSTed}](https://form.argosidentity.com?pid=\{projectid}\&token=\{tokenid_POSTed})
</Tip>

<Note>
  **Aviso de Content-Type**: Para solicitudes POST, cuando usar `Content-Type: application/json` causa un error, establezca el encabezado a `text/plain` en su lugar.
</Note>
