Pular para o conteúdo

Cria ou executa products

POST/api/products

Auth
Exige token
Quem pode:
owner
admin
X-CommunityId
X-CommunityId Envie o X-CommunityId da comunidade em que a operação acontece.

Owner ou admin. Aceita, entre os demais campos, `directLinkEnabled` (boolean opcional, padrão `false`): com ele ligado, um produto avulso (`ONE_TIME` ou `INSTALLMENT`) pode ser comprado por link direto e aparece em `GET /checkout/products`. Desligado, só é comprável por quem enxerga um space Loja (`storefront`) que o mostra. Assinaturas ignoram a flag. `prerequisiteGroupIds` (array de UUID opcional) torna o produto um adicional: ele só aparece nas listagens públicas e só é vendido a quem tem assinatura ACTIVE ou TRIALING num desses grupos, e a assinatura do adicional acompanha a do plano. Os grupos precisam ser da comunidade (senão 400, `param = prerequisiteGroupIds`) e não podem incluir um grupo em `subscriptionGroupIds` (400). A resposta traz `prerequisiteGroupIds`. **Obsoleto na escrita (F-37):** a lista agora é escrita pelo plano (`addOnProductIds` em `POST`/`PUT /subscription-groups`), sobre a mesma relação. Este campo continua aceito e gravando, e continua nas respostas. `commitmentMonths` (inteiro de 1 a 36, ou `null`) é a duração do contrato (fidelidade, F-35): só vale para `SUBSCRIPTION` com `billingInterval` `MONTHLY` (senão 400, `param = commitmentMonths`); `null` ou ausente = sem contrato. A resposta traz `commitmentMonths`. `installmentInterestPayer` (`BUYER`, o padrão, ou `ORGANIZATION`; F-43) diz quem paga os juros de parcelamento da Memberfy no cartão: `BUYER` soma ao preço, `ORGANIZATION` cobra o preço e desconta da comunidade. A resposta traz o campo. **Rascunho sem aprovação (2026-10-06):** criar não exige mais informações comerciais aprovadas. O produto nasce sempre `DRAFT`, e a moeda (`currency` na resposta) sai do país das informações comerciais em qualquer status (`PENDING`, `IN_REVIEW`, `REJECTED` ou `APPROVED`); sem informações comerciais, `BRL`. O que exige aprovação é publicar (`POST .../publish` ou `PUT` com `status: ACTIVE`).

Headers

NomeTipoDescrição
X-CommunityIdopcionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corpo da requisição application/json

A especificação não declara os campos deste corpo (upload multipart, por exemplo). Consulte o guia do assunto.

Respostas

CódigoDescrição
201Operação realizada com sucesso.
400Requisição inválida — falha de validação.
401Token ausente, inválido ou expirado.
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
500Erro interno do servidor.

Exemplo com curl

curl -X POST "https://api.memberfy.net/api/products" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '"string"'