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

# Criando Usuários

> Guia passo a passo para criar e gerenciar usuários

## Visão Geral

Antes que os usuários possam realizar transações ramp, eles devem ser registrados na KillB com informações KYC apropriadas. Este guia cobre a criação de usuários individuais (PERSON) e empresariais (COMPANY).

<Info>
  Todos os usuários começam no nível KYC **L0** ou **L1** e podem ser atualizados enviando documentação adicional.
</Info>

## Pré-requisitos

* Token de acesso válido de `/api/v2/auth/login`
* Informações do usuário para enviar
* Detalhes de ID do governo

## Criando um Usuário Pessoa

### Exemplo Básico

```bash theme={null}
POST /api/v2/users
```

<CodeGroup>
  ```json Requisição theme={null}
  {
    "type": "PERSON",
    "externalId": "user-12345",
    "data": {
      "firstName": "João",
      "lastName": "Silva",
      "email": "joao.silva@example.com",
      "phone": "+5511987654321",
      "dateOfBirth": "1990-05-15",
      "address": {
        "street1": "Rua 123, 45",
        "city": "São Paulo",
        "state": "SP",
        "zipCode": "01234-567",
        "countryCode": "BR"
      },
      "document": {
        "type": "CPF",
        "number": "12345678900",
        "issuedCountryCode": "BR"
      }
    }
  }
  ```

  ```javascript Node.js theme={null}
  const createUser = async (userData) => {
    const response = await fetch('https://sandbox.killb.app/api/v2/users', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${accessToken}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        type: 'PERSON',
        externalId: userData.id,
        data: {
          firstName: userData.firstName,
          lastName: userData.lastName,
          email: userData.email,
          phone: userData.phone,
          dateOfBirth: userData.dateOfBirth,
          address: {
            street1: userData.address.street,
            city: userData.address.city,
            state: userData.address.state,
            zipCode: userData.address.zipCode,
            countryCode: userData.address.country
          },
          document: {
            type: userData.document.type,
            number: userData.document.number,
            issuedCountryCode: userData.document.country
          }
        }
      })
    });
    
    const user = await response.json();
    return user;
  };
  ```
</CodeGroup>

## Validação

Valide dados antes do envio:

```javascript theme={null}
const validateUserData = (data) => {
  const errors = [];
  
  // Formato de email
  if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email)) {
    errors.push('Formato de email inválido');
  }
  
  // Formato de telefone (E.164)
  if (!/^\+[1-9]\d{10,14}$/.test(data.phone)) {
    errors.push('Telefone deve estar no formato: +[código país][número]');
  }
  
  // Data de nascimento (18+ anos)
  const dob = new Date(data.dateOfBirth);
  const age = (Date.now() - dob.getTime()) / (365.25 * 24 * 60 * 60 * 1000);
  if (age < 18) {
    errors.push('Usuário deve ter 18 anos ou mais');
  }
  
  return errors;
};
```

## Próximos Passos Após Criação

<Steps>
  <Step title="Armazenar ID do Usuário">
    Salve o `id` retornado em seu banco de dados mapeado para seu `externalId`
  </Step>

  <Step title="Verificar Status KYC">
    Monitore o campo `status`
  </Step>

  <Step title="Iniciar/Continuar Verificação">
    Se o `status` for `PENDING`, redirecione o usuário para `complianceUrl` para completar a verificação
  </Step>

  <Step title="Criar Contas">
    Adicione contas bancárias ou carteiras para este usuário
  </Step>
</Steps>

<CardGroup cols={2}>
  <Card title="Enviar Documentos" icon="upload" href="/pt/guides/users/upload-documents">
    Enviar imagens de ID e documentos de prova
  </Card>

  <Card title="Gerenciar Usuários" icon="users-gear" href="/pt/guides/users/manage-users">
    Consultar, atualizar e excluir usuários
  </Card>

  <Card title="Referência da API" icon="code" href="/api-reference/endpoint/users-create">
    Documentação completa da API de Usuários
  </Card>
</CardGroup>
