> ## Documentation Index
> Fetch the complete documentation index at: https://docs-platform.services-valid.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Iniciar autenticação no provedor de certificado

> Registra o provedor escolhido e retorna a URL de autenticação para o signatário.

Registra o provedor (PSC) escolhido pelo signatário e retorna a URL de autenticação no provedor. O signatário acessa essa URL no navegador, se autentica e autoriza o uso do certificado.

**Autenticação**: use apenas o `sessionToken` na URL — nenhum header de autenticação é necessário.

## Parâmetros

<ParamField path="sessionToken" type="string" required>
  Token único da sessão do signatário.
</ParamField>

<ParamField body="clearanceId" type="string" required>
  Identificador da opção devolvida por [`GET .../integraicp/clearances`](/plataforma/assinatura-digital/api/get-integraicp-clearances). Deve estar entre as opções oferecidas.
</ParamField>

## Respostas

<ResponseField name="redirectUrl" type="string">
  URL para onde levar o navegador do signatário. Ele se autentica e autoriza no provedor, que então redireciona de volta para o callback de sua aplicação.
</ResponseField>

<ResponseField name="providerName" type="string">
  Nome do provedor escolhido, ex.: `"Valid"`, `"Soluti"`.
</ResponseField>

<ResponseField name="productName" type="string">
  Produto do provedor, ex.: `"VIDaaS"`, `"BirdID"`.
</ResponseField>

## Erros

Veja [Autenticação e erros](/plataforma/assinatura-digital/api/erros-e-autenticacao).

* **400**: `clearanceId` não é válido ou não está entre as opções oferecidas.
* **410**: Session token expirado, ou as opções de autenticação venceram — liste de novo com [`GET .../integraicp/clearances`](/plataforma/assinatura-digital/api/get-integraicp-clearances).

<ResponseExample>
  ```json theme={"theme":"catppuccin-latte"}
  HTTP/1.1 200 OK
  Content-Type: application/json

  {
    "redirectUrl": "https://services.integraicp.com.br/c/your-channel/icp/v3/authentications/01HXYZCLEARANCE001?state=xyz&code_challenge=...",
    "providerName": "Valid",
    "productName": "VIDaaS"
  }
  ```

  ```json theme={"theme":"catppuccin-latte"}
  HTTP/1.1 400 Bad Request
  Content-Type: application/json

  {
    "statusCode": 400,
    "message": "Clearance not found in available options"
  }
  ```

  ```json theme={"theme":"catppuccin-latte"}
  HTTP/1.1 410 Gone
  Content-Type: application/json

  {
    "statusCode": 410,
    "message": "Session expired"
  }
  ```
</ResponseExample>

## Exemplo

```bash theme={"theme":"catppuccin-latte"}
curl -X POST "https://api.valid.com/signer/v1/sign/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.../integraicp/start" \
  -H "Content-Type: application/json" \
  -d '{
    "clearanceId": "01HXYZCLEARANCE001"
  }'
```

## Fluxo completo

1. Esta chamada registra qual provedor o signatário escolheu.
2. Abra `redirectUrl` no navegador (ou redirecione o signatário para lá).
3. O signatário se autentica no provedor e autoriza o uso do certificado.
4. O provedor redireciona o navegador de volta para `${SIGNER_APP_BASE_URL}/sign/{sessionToken}?integraicp=authorized` (ou `?integraicp=failed&message=...` em caso de erro).
5. Consulte [`GET .../integraicp/authorization`](/plataforma/assinatura-digital/api/get-integraicp-authorization-status) para confirmar que a autorização foi concluída.
6. Assine com [`POST /signer/v1/sign/:sessionToken/sign`](/plataforma/assinatura-digital/api/post-sign).

## Relacionado

* [`GET .../integraicp/clearances`](/plataforma/assinatura-digital/api/get-integraicp-clearances) — listar opções de provedor
* [`GET /signer/v1/integraicp/callback/:state`](/plataforma/assinatura-digital/api/get-integraicp-callback) — retorno do provedor (chamado automaticamente pelo navegador)
* [`GET .../integraicp/authorization`](/plataforma/assinatura-digital/api/get-integraicp-authorization-status) — verificar estado da autorização


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.