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

# Criar

> Cadastre um novo produto no seu catálogo

## Visão geral

Use este endpoint para cadastrar um novo produto no seu catálogo. Produtos podem ser referenciados na criação de links de pagamento e assinaturas, simplificando a geração de cobranças recorrentes ou avulsas.

## Endpoint

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.avanttifinance.com/v1/products \
    -H "Authorization: Bearer {access_token}" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Plano Mensal Premium",
      "description": "Acesso completo à plataforma por 30 dias",
      "price": 9990,
      "currency": "BRL"
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://api.avanttifinance.com/v1/products", {
    method: "POST",
    headers: {
      "Authorization": \`Bearer \${accessToken}\`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      name: "Plano Mensal Premium",
      description: "Acesso completo à plataforma por 30 dias",
      price: 9990,
      currency: "BRL"
    })
  });

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.avanttifinance.com/v1/products"
  headers = {
      "Authorization": f"Bearer {access_token}",
      "Content-Type": "application/json"
  }
  payload = {
      "name": "Plano Mensal Premium",
      "description": "Acesso completo à plataforma por 30 dias",
      "price": 9990,
      "currency": "BRL"
  }

  response = requests.post(url, headers=headers, json=payload)
  print(response.json())
  ```
</CodeGroup>

## Parâmetros do corpo

<ParamField body="name" type="string" required>
  Nome do produto, exibido em links de pagamento e faturas.
</ParamField>

<ParamField body="description" type="string">
  Descrição detalhada do produto.
</ParamField>

<ParamField body="price" type="integer" required>
  Preço do produto em centavos (ex: `9990` representa R\$ 99,90).
</ParamField>

<ParamField body="currency" type="string" required>
  Código da moeda no formato ISO 4217. Atualmente, apenas `BRL` é suportado.
</ParamField>

<ParamField body="metadata" type="object">
  Conjunto de pares chave-valor para armazenar informações adicionais sobre o produto.
</ParamField>

## Resposta

<ResponseField name="id" type="string">
  Identificador único do produto, no formato `prod_xxxxxxxxxxxx`.
</ResponseField>

<ResponseField name="name" type="string">
  Nome do produto.
</ResponseField>

<ResponseField name="description" type="string">
  Descrição do produto.
</ResponseField>

<ResponseField name="price" type="integer">
  Preço do produto em centavos.
</ResponseField>

<ResponseField name="currency" type="string">
  Código da moeda do produto.
</ResponseField>

<ResponseField name="created_at" type="string">
  Data e hora de criação do produto, no formato ISO 8601.
</ResponseField>

### Exemplo de resposta

```json theme={null}
{
  "id": "prod_8f72a1b3c4d5",
  "name": "Plano Mensal Premium",
  "description": "Acesso completo à plataforma por 30 dias",
  "price": 9990,
  "currency": "BRL",
  "metadata": {},
  "created_at": "2025-01-15T10:30:00Z"
}
```

<Tip>
  Utilize o campo `metadata` para armazenar identificadores internos do seu sistema e facilitar a conciliação posterior.
</Tip>

## Erros comuns

| Código HTTP | Significado                                     |
| ----------- | ----------------------------------------------- |
| 400         | Dados inválidos ou campos obrigatórios ausentes |
| 401         | Token de autenticação inválido ou ausente       |
| 422         | Valor de `price` ou `currency` inválido         |

## Próximos passos

<CardGroup cols={2}>
  <Card title="Listar produtos" icon="package-2" href="/listar-1">
    Consulte todos os produtos cadastrados.
  </Card>

  <Card title="Editar produto" icon="package-search" href="/editar-2">
    Atualize os dados de um produto existente.
  </Card>
</CardGroup>
