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

# Importar e exportar usuários: operações em massa via CSV

> Importe usuários da Didit em massa via CSV e exporte a tabela completa para ferramentas de conformidade externas. Disponível no Business Console.



Prompt para importar e exportar usuários em massa
        Copiar o prompt para a área de transferência



      
      

\<pre>

\````# Goal — bulk-load (or extract) Didit User entities programmatically

CSV import / export is a console-only UI feature. For programmatic bulk operations, loop `POST /v3/users/create/` for imports, optionally upload trusted profile faces with `POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`, and paginate `GET /v3/users/` for exports. There is no public CSV API endpoint.

\## Bulk import — loop the create endpoint

\```bash
\# users.json — array of records you want to seed into Didit
\# [{"vendor_data":"user-1","display_name":"Alice"}, ...]

jq -c '.[]' users.json | while read user; do
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d "$user"
sleep 0.1   # respect rate limits — see /integration/rate-limiting
done
\```

Record shape (matches `POST /v3/users/create/`):

\```json
\{
"vendor_data": "user-42",          // required, unique per app
"display_name": "Jane Doe",        // optional
"metadata": {"tier": "premium"},   // free-form JSON
"tags": ["promo-2026"]             // optional array of strings
}
\```

\`create` is **not** idempotent — a duplicate `vendor_data` returns conflict. Branch on existence:

\```bash
\# Idempotent upsert pattern
if curl -s -o /dev/null -w "%{http_code}" \
 https://verification.didit.me/v3/users/$VD/ \
 -H "x-api-key: $DIDIT_API_KEY" | grep -q 200; then
curl -X PATCH https://verification.didit.me/v3/users/$VD/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
else
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
fi
\```

\## Import faces from another provider

If each imported user has a trusted face image, upload it after the User exists:

\```bash
\# GET /v3/users/{vendor_data}/ or POST /v3/users/create/ first.
\# Use the returned didit_internal_id for the profile attachment endpoint.
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "<base64-encoded-jpg-or-png>", "comment": "Imported from previous KYC provider"}'
\```

This stores the face on the User profile and enrolls it for duplicate detection and face search. It does not blocklist the face; use /management-api/lists/upload-face for blocklists.

\## Bulk export — paginate the list endpoint

\```bash
PAGE=1
while :; do
RESP=$(curl -sG https://verification.didit.me/v3/users/ \
-H "x-api-key: $DIDIT_API_KEY" \
\--data-urlencode "page=$PAGE" \
\--data-urlencode "page_size=100")
echo "$RESP" | jq -c '.results[]' >> users.ndjson
HAS_NEXT=$(echo "$RESP" | jq -r '.next // empty')
\[ -z "$HAS_NEXT" ] && break
PAGE=$((PAGE+1))
done
\```

Filter with the same query params as `GET /v3/users/` (`status`, `search`, date ranges, etc).

\## What survives on update vs what stays

\| Field | Behaviour |
\|---|---|
\| `display_name`, `metadata`, `tags` | Overwritten by PATCH |
\| `full_name`, `date_of_birth`, `portrait_image` | Read-only after a verified session (you can override via PATCH but it's logged as a manual override) |
\| Aggregate counters (`session_count`, `approved_count`, etc.) | Computed by Didit — never accept writes |
\| `features` map | Computed — never accept writes |

\## Failure modes

\- `409` on create — `vendor_data` exists; switch to PATCH.
\- `429` — rate limit; back off using `Retry-After`. Don't slam the API; insert 100ms+ between calls.
\- `400` — bad JSON or invalid country/status enum. Log the row and continue.
\- Partial failures: track `vendor_data` → status per row and retry only failures.

\## Console fallback

For one-off migrations bigger than 100K rows, the Business Console CSV import/export (Users → Import / Export) is fast and skips writing your own loop. The console runs the same validations and produces an error report.

\## Sources of truth

\- /management-api/users/create — POST /v3/users/create/ schema
\- /management-api/users/list — GET /v3/users/ pagination + filters
\- /entities/users/data-model — mutable vs read-only fields
\- /integration/rate-limiting — rate limits and Retry-After
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

Colar em

O Business Console permite que sua equipe gerencie entidades User em massa sem escrever código. Há dois fluxos disponíveis: **importação de CSV** (criar ou atualizar usuários em grande escala) e **exportação para CSV** (extrair a tabela de usuários para ferramentas externas).> [!NOTE]
>
> A importação e a exportação em massa descritas aqui apenas criam ou atualizam perfis de User. Elas não recriam sessões de KYC históricas, avisos de documentos, evidências de prova de vida nem decisões de provedores. Para uma migração completa a partir de Sumsub, MetaMap, Veriff, Onfido, Persona ou outro provedor, consulte [Importar dados de outro provedor](https://docs.didit.me/pt-br/sessions-api/import-verifications.md).## Importar usuários de um CSV### Quando usar- **Migração inicial** a partir de outro fornecedor de KYC: traga sua base de usuários existente.
- **Migração de faces do provedor**: anexe imagens faciais confiáveis aos perfis de User importados depois que os registros forem criados.
- **Onboarding em massa** da lista de clientes de um parceiro.
- **Preenchimento retroativo de metadados**: atualize tags, nível ou identificadores internos de muitos usuários de uma só vez.### Colunas do modeloBaixe o modelo em *Users → Import → Download template*. Colunas:| Coluna | Obrigatória | Descrição |
| - | - | - |
| `vendor_data` | Sim | Seu identificador para o usuário. Deve ser único por aplicação. |
| `display_name` | Não | Nome legível exibido no console. |
| `full_name` | Não | Nome completo oficial. Será sobrescrito pelos dados de sessões verificadas. |
| `email` | Não | E-mail de contato conhecido. |
| `phone` | Não | Telefone de contato conhecido (formato E.164). |
| `country` | Não | Código de país ISO 3166-1 alpha-3. |
| `status` | Não | `ACTIVE`, `FLAGGED` ou `BLOCKED`. O padrão é `ACTIVE`. |
| `tags` | Não | Tags separadas por vírgula. |
| `metadata_json` | Não | JSON serializado como string para metadados personalizados. |### Executar a importação**1. Envie o CSV**Acesse *Users → Import → Upload CSV* e selecione seu arquivo.**2. Revise a pré-visualização**O console valida cada linha. As linhas inválidas são destacadas com o motivo do erro (por exemplo, `vendor_data` duplicado ou código de país inválido).**3. Inicie a importação**A Didit processa as linhas de forma assíncrona. Você pode fechar a aba: o progresso é acompanhado em *Users → Import history*.**4. Revise os resultados**Quando a importação termina, a visualização do histórico mostra a contagem de linhas criadas, atualizadas e ignoradas, além de um relatório de erros para download.### Atualizar ou criar- Se um `vendor_data` não existir, um novo User é criado.
- Se um `vendor_data` já existir, a linha atualiza o User existente (campos do perfil e metadados).
- Contadores agregados e campos verificados (`full_name`, `date_of_birth` de sessões aprovadas) **nunca são sobrescritos** por importações.### Importar faces depois da criação do usuárioA importação de CSV cria ou atualiza o registro do User. Ela não inclui imagens faciais no CSV. Para trazer biometria facial de outro provedor, envie cada face depois que o User de destino existir:**1. Crie ou importe o User**Use a importação de CSV do console ou chame [`POST /v3/users/create/`](https://docs.didit.me/pt-br/management-api/users/create) em um loop.**2. Leia o didit\_internal\_id**Obtenha o User com [`GET /v3/users/{vendor_data}/`](https://docs.didit.me/pt-br/management-api/users/get). A resposta inclui `didit_internal_id`.**3. Envie a face**Chame [`POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`](https://docs.didit.me/pt-br/management-api/users/upload-face) com uma imagem facial em base64 puro.```bash theme={null}
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<base64-encoded-jpg-or-png>",
    "comment": "Imported from previous KYC provider"
  }'
```A face deve ser uma imagem válida, com no máximo 2 MB depois de decodificada, e conter um rosto detectável. A Didit a armazena no perfil e a indexa para detecção de duplicatas e busca facial. Ela não é adicionada a uma lista de bloqueio de faces, a menos que você use separadamente o endpoint [Enviar face para a lista](https://docs.didit.me/pt-br/management-api/lists/upload-face.md).## Exportar usuários para CSV### Quando usar- **Auditorias de conformidade**: entregue a tabela completa de usuários aos auditores.
- **Sincronização com data warehouse**: extração periódica para suas ferramentas de BI.
- **Solicitações de SAR ou de reguladores**: extraia subconjuntos filtrados de usuários.### Executar uma exportação1. Acesse *Users → Export*.
2. Aplique filtros (status, país, intervalo de datas, busca).
3. Escolha as colunas (o padrão é todos os campos; você pode remover as colunas de que não precisa).
4. Envie. A Didit gera a exportação de forma assíncrona e envia por e-mail um link de download assinado ao operador que fez a solicitação.> [!NOTE]
>
> As exportações incluem apenas os dados que sua função tem permissão para ler. COMPLIANCE\_OFFICER e funções superiores podem exportar a tabela completa; as funções DEVELOPER e READER têm exportações restritas.## Características de desempenho| Operação | Escala típica | Observações |
| - | - | - |
| Importação | Até 100.000 linhas | Arquivos maiores são divididos em partes no servidor; a interface consulta o progresso periodicamente |
| Exportação | Até 1.000.000 linhas | Exportações maiores são transmitidas para o S3 e entregues por meio de uma URL assinada |## Trilha de auditoriaCada importação e exportação é registrada no [registro de auditoria](https://docs.didit.me/pt-br/console/audit-logs.md):- O operador que a iniciou.
- Contagem de linhas (importações) / snapshot dos filtros (exportações).
- Datas e horas e o status de sucesso ou falha.## Próximos passos> [card] [API de criação de usuários](https://docs.didit.me/pt-br/management-api/users/create.md)
>
> Criação programática para importações por script.> [card] [Enviar face do usuário](https://docs.didit.me/pt-br/management-api/users/upload-face.md)
>
> Anexe imagens faciais importadas aos perfis de usuário.> [card] [Retenção de dados](https://docs.didit.me/pt-br/console/data-retention.md)
>
> Por quanto tempo os dados importados são mantidos.> [card] [Registros de auditoria](https://docs.didit.me/pt-br/console/audit-logs.md)
>
> Revise o histórico de importações e exportações.


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