Bearer pela sua API Key real (vk_live_* produção, vk_test_* sandbox). Crie a chave em https://app.dotfy.com.br/dashboard/chaves-api. Sem o header → 401. Com chave inválida/revogada → 401. Com chave sem o escopo necessário → 403 insufficient_scope.products:write.| Campo | Tipo | Obrigatório | Regras |
|---|---|---|---|
title | string | sim | 3–100 chars. |
price | number | sim | Em REAIS, > 0, ≤ 100000. |
slug | string | sim | 3–50 chars, regex ^[a-z0-9-]+$. URL final: /checkout/{slug}. |
description | string | não | Máx 2000 chars. |
imageUrl | string | não | URL HTTPS válida. |
contentUrl | string | não | URL para entrega pós-pagamento. |
isActive | boolean | não | Default true. |
checkoutTheme | enum | não | LIGHT |
requireCustomerData | boolean | não | Default true (exige nome+email+CPF). |
sellerName | string | não | Override do nome no checkout. |
acceptCardPayment | boolean | não | Default false. Só é aceito true se o admin habilitou cartão para esta conta (User.cardPaymentEnabled); senão retorna 403. Cartão atualmente processado internamente pela plataforma. |
A resposta inclui checkoutUrl— o link público do checkout do produto, pronto para compartilhar.
Cartão (opt-in por conta): por padrão nenhuma conta aceita cartão. Enviar acceptCardPayment: truesem o recurso habilitado na conta retorna403(Pagamento com cartão não est á habilitado para esta conta). O cartão só aparece no checkout quando a conta está habilitada e o produto temacceptCardPayment: true.
curl --location '/api/products' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"title": "Curso de Marketing Digital",
"description": "Acesso vitalício, 40 horas de conteúdo.",
"price": 297.00,
"slug": "curso-marketing-digital",
"isActive": true,
"checkoutTheme": "DARK",
"requireCustomerData": true,
"contentUrl": "https://seu-dominio.com/area-do-aluno",
"acceptCardPayment": false
}'{
"id": "clprodNew",
"userId": "cluser0001",
"title": "Curso de Marketing Digital",
"description": "Acesso vitalício, 40 horas de conteúdo.",
"price": 29700,
"imageUrl": null,
"slug": "curso-marketing-digital",
"checkoutUrl": "https://app.dotfy.com.br/checkout/curso-marketing-digital",
"contentUrl": "https://seu-dominio.com/area-do-aluno",
"isActive": true,
"checkoutTheme": "DARK",
"requireCustomerData": true,
"sellerName": null,
"acceptCardPayment": false,
"type": "PRODUCT",
"viewCount": 0,
"orderCount": 0,
"paidCount": 0,
"totalRevenue": 0,
"createdAt": "2026-05-07T10:30:00.000Z",
"updatedAt": "2026-05-07T10:30:00.000Z"
}