# Primeiros Passos

## O que é a API Dinie?

A API Dinie permite que parceiros integrem produtos de crédito diretamente em suas plataformas. Através de uma única API REST, você pode cadastrar clientes, apresentar ofertas de crédito, originar empréstimos e acompanhar pagamentos -- tudo sem precisar construir uma infraestrutura de crédito do zero.

A API segue um design orientado a recursos com URLs previsíveis, corpos de request e response em JSON, e métodos e códigos de status HTTP padrão.

## Pré-requisitos

Antes de fazer sua primeira chamada à API, você precisa de:

- **Credenciais de sandbox** -- um par de `client_id` e `client_secret` fornecido pelo seu gerente de conta Dinie
- Um cliente HTTP (cURL, Postman ou qualquer linguagem de programação com suporte a HTTP)
- Opcionalmente, um dos SDKs oficiais da Dinie (Node.js, Python ou Ruby)


> **Info:** Entre em contato com seu gerente de conta Dinie para solicitar credenciais de sandbox. As credenciais de sandbox e produção são separadas e não intercambiáveis.


## URLs Base

| Ambiente | URL Base |
|  --- | --- |
| Produção | `https://api.dinie.com.br/v3` |
| Sandbox | `https://sandbox.api.dinie.com.br/v3` |


Todos os exemplos neste guia usam a URL de sandbox. Substitua pela URL de produção quando estiver pronto para ir para produção.

## Sua Primeira Chamada à API

O exemplo abaixo inicializa o client com suas credenciais e cadastra uma empresa -- a operação mais comum para começar uma integração. Os SDKs trocam as credenciais por um access token automaticamente.


```typescript Node.js
import Dinie from "dinie";

const dinie = new Dinie({
  clientId: process.env.DINIE_CLIENT_ID,
  clientSecret: process.env.DINIE_CLIENT_SECRET,
  environment: "sandbox",
});

const customer = await dinie.customers.create({
  external_id: "user-42",
  cpf: "123.456.789-00",
  email: "joao@example.com",
  phone: "+5511999999999",
  cnpj: "12.345.678/0001-90",
});

console.log(customer.id);     // "cust_550e8400..."
console.log(customer.status); // "creating"
```


```ruby Ruby
require "dinie"

dinie = Dinie::Client.new(
  client_id: ENV["DINIE_CLIENT_ID"],
  client_secret: ENV["DINIE_CLIENT_SECRET"],
  environment: "sandbox"
)

customer = dinie.customers.create(
  external_id: "user-42",
  cpf: "123.456.789-00",
  email: "joao@example.com",
  phone: "+5511999999999",
  cnpj: "12.345.678/0001-90"
)

puts customer.id      # "cust_550e8400..."
puts customer.status  # "creating"
```


```python Python
import os
from dinie import Dinie

dinie = Dinie(
    client_id=os.environ["DINIE_CLIENT_ID"],
    client_secret=os.environ["DINIE_CLIENT_SECRET"],
    environment="sandbox",
)

customer = dinie.customers.create(
    external_id="user-42",
    cpf="123.456.789-00",
    email="joao@example.com",
    phone="+5511999999999",
    cnpj="12.345.678/0001-90",
)

print(customer.id)      # "cust_550e8400..."
print(customer.status)  # "creating"
```


```bash cURL
# 1. Obter um access token
curl -X POST https://sandbox.api.dinie.com.br/v3/auth/token \
  -u "$DINIE_CLIENT_ID:$DINIE_CLIENT_SECRET" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials"

# 2. Cadastrar uma empresa com o token
curl -X POST https://sandbox.api.dinie.com.br/v3/customers \
  -H "Authorization: Bearer dinie_at_..." \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "user-42",
    "cpf": "123.456.789-00",
    "email": "joao@example.com",
    "phone": "+5511999999999",
    "cnpj": "12.345.678/0001-90"
  }'
```

O cliente é criado com status `creating`. Quando o enriquecimento de sócios é concluído, o status muda para `pending_kyc` (via webhook `customer.created`) e a lista de documentos obrigatórios fica disponível em `customer.kyc`. O próximo passo é completar o cadastro e aguardar as ofertas de crédito.

## Próximos Passos

Agora que você fez sua primeira chamada à API, siga os guias de integração:

1. **[Cadastro e Ofertas](/guides/customer-registration)** -- cadastre clientes, complete o KYC e receba ofertas de crédito
2. **[Simulação e Contratação](/guides/credit-workflow)** -- simule parcelas, formalize empréstimos e acompanhe até o desembolso
3. **[Webhooks](/apis/concepts/webhooks)** -- configure endpoints para receber notificações em tempo real
4. **[Indo para Produção](/guides/going-to-production)** -- checklist para lançar sua integração