Skip to main content
POST
/
api
/
products
Criar Produto
curl --request POST \
  --url https://garu.com.br/api/products \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "description": "<string>",
  "value": 123,
  "pix": true,
  "creditCard": true,
  "boleto": true,
  "installments": 123,
  "image": "<string>",
  "tags": [
    "<string>"
  ],
  "returnUrl": "<string>",
  "returnUrlButtonText": "<string>",
  "pixelFB": "<string>",
  "isSubscription": true
}
'
{
  "id": 123,
  "uuid": "<string>",
  "name": "<string>",
  "description": "<string>",
  "value": 123,
  "pix": true,
  "creditCard": true,
  "boleto": true,
  "installments": [
    {}
  ],
  "isActive": true,
  "isSubscription": true,
  "createdAt": "<string>",
  "updatedAt": "<string>"
}

Visão Geral

O endpoint de criação de produtos permite que você crie produtos para vendas avulsas (one-time purchases) ou assinaturas (recurring billing). Cada produto criado recebe um uuid único que é usado para gerar o link de pagamento.

Requisição

Campo Obrigatório

name
string
required
Nome do produto. Será exibido na página de pagamento.

Campos Opcionais

Todos os campos abaixo possuem valores padrão e não precisam ser enviados:
description
string
default:""
Descrição do produto. Ajuda o cliente a entender o que está comprando.
value
number
default:"0"
Preço do produto em Reais (BRL). Use 0 para produtos de assinatura.
pix
boolean
default:"true"
Habilita pagamento via PIX.
creditCard
boolean
default:"true"
Habilita pagamento via cartão de crédito.
boleto
boolean
default:"true"
Habilita pagamento via boleto bancário.
installments
number
default:"1"
Número máximo de parcelas permitidas (1-12).
image
string
URL da imagem do produto.
tags
string[]
Tags para categorizar o produto.
returnUrl
string
URL para redirecionar o cliente após o pagamento.
returnUrlButtonText
string
Texto do botão de redirecionamento (máximo 100 caracteres).
pixelFB
string
ID do Facebook Pixel para rastreamento.
isSubscription
boolean
default:"false"
Define se o produto é de assinatura (cobrança recorrente). Para produtos de assinatura, o preço é definido nos preços de assinatura, não no campo value.
Com a API simplificada, você pode criar um produto enviando apenas o campo name. Todos os métodos de pagamento serão habilitados por padrão.

Exemplo de Requisição

Exemplo Mínimo

Crie um produto enviando apenas o nome. Todos os métodos de pagamento serão habilitados automaticamente:
curl -X POST https://garu.com.br/api/products \
  -H "Authorization: Bearer sk_test_sua_chave_api" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Meu Produto"
  }'

Exemplo Completo

Personalize todas as opções do produto:
curl -X POST https://garu.com.br/api/products \
  -H "Authorization: Bearer sk_test_sua_chave_api" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Curso de Marketing Digital",
    "description": "Aprenda marketing digital do zero ao avançado",
    "value": 297.00,
    "pix": true,
    "creditCard": true,
    "boleto": true,
    "installments": 12
  }'

Exemplo para Assinatura

Para produtos com cobrança recorrente, defina isSubscription: true. O preço será configurado posteriormente nos preços de assinatura:
curl -X POST https://garu.com.br/api/products \
  -H "Authorization: Bearer sk_test_sua_chave_api" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Plano Premium",
    "description": "Acesso completo a todos os recursos",
    "isSubscription": true
  }'
Após criar um produto de assinatura, você precisa criar preços de assinatura para definir os planos (mensal, anual, etc.) e seus valores.

Resposta de Sucesso

id
number
ID interno do produto.
uuid
string
Identificador único usado para o link de pagamento.
name
string
Nome do produto.
description
string
Descrição do produto.
value
number
Preço do produto.
pix
boolean
Se PIX está habilitado.
creditCard
boolean
Se cartão de crédito está habilitado.
boleto
boolean
Se boleto está habilitado.
installments
array
Lista de parcelas com valores calculados.
isActive
boolean
Status do produto.
isSubscription
boolean
Se o produto é de assinatura (cobrança recorrente).
createdAt
string
Data de criação (ISO 8601).
updatedAt
string
Data da última atualização (ISO 8601).

Exemplo de Resposta (201 Created)

{
  "id": 123,
  "name": "Curso de Marketing Digital",
  "description": "Aprenda marketing digital do zero ao avançado",
  "value": 297.00,
  "uuid": "prod_a1b2c3d4e5f6",
  "pix": true,
  "creditCard": true,
  "boleto": true,
  "installments": [
    { "quantity": 1, "value": 297.00 },
    { "quantity": 2, "value": 153.45 },
    { "quantity": 3, "value": 104.94 },
    { "quantity": 4, "value": 80.69 },
    { "quantity": 5, "value": 66.15 },
    { "quantity": 6, "value": 56.52 },
    { "quantity": 7, "value": 49.68 },
    { "quantity": 8, "value": 44.55 },
    { "quantity": 9, "value": 40.59 },
    { "quantity": 10, "value": 37.42 },
    { "quantity": 11, "value": 34.85 },
    { "quantity": 12, "value": 32.72 }
  ],
  "isActive": true,
  "isSubscription": false,
  "createdAt": "2024-12-24T10:30:00.000Z",
  "updatedAt": "2024-12-24T10:30:00.000Z"
}

Erros Comuns

{
  "statusCode": 400,
  "message": ["value must be at least 5"]
}
Solução: O preço mínimo é R$ 5,00.
{
  "statusCode": 400,
  "message": ["name should not be empty"]
}
Solução: O campo name é o único campo obrigatório. Verifique se está preenchido.
{
  "statusCode": 401,
  "message": "API key is required"
}
Solução: Verifique se o header Authorization está correto.

Próximos Passos

Link de Pagamento

Aprenda a usar e compartilhar o link de pagamento

Listar Produtos

Consulte seus produtos existentes

Criar Preço de Assinatura

Configure planos de preço para produtos de assinatura

Guia de Assinaturas

Aprenda a configurar cobrança recorrente