POST/api/v1/subscriptions

Criar assinatura

Bearer tokenescopo create:subscriptions

Cria uma order de assinatura (PerfectPay) e devolve a URL de checkout + o ID da transação. Responde 201 Created.

Escopo necessário: create:subscriptions.

Utilize o checkoutUrl recebido para realizar o pagamento manualmente.

Este endpoint não emite renovação e só deve ser utilizado se o usuário não possuir assinatura ativa. Upgrade, migração de plano e cancelamento ainda não estão disponíveis via API: contante o suporte para tratar para tratar destes assuntos.

Body

CampoTipoObrigatório?Valores / restrições
planIdstringsimid de um dos nossos planos. Consulte os planos via GET /api/v1/plans
billingCyclestringsimmonthly | annual
couponCodestringnãocódigo de cupom

Exemplo de request

cURL
curl -X POST https://avatrix.io/api/v1/subscriptions \
  -H "Authorization: Bearer av_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9f1c-sub-001" \
  -d '{
    "planId": "pro",
    "billingCycle": "monthly",
    "couponCode": "PROMO10"
  }'

Resposta — 201

JSON
{ "success": true, "data": {
  "orderId": "ord_...",
  "paymentMethod": "perfectpay",
  "status": "pending",
  "planId": "pro",
  "billingCycle": "monthly",
  "checkoutUrl": "https://..."
}}

Redirecione o usuário para checkoutUrl para concluir o pagamento. A assinatura é ativada quando o webhook PerfectPay confirma. Acompanhe por GET /api/v1/subscriptions (escopo read:subscriptions).

Idempotência

Envie o header Idempotency-Key (opcional, ≤128 chars, TTL 24h). Repetir a mesma chave retorna a resposta original, sem criar nova order. Ver Idempotência.

Erros relevantes

CódigoHTTPQuando
VALIDATION_ERROR400body inválido, planId/billingCycle ausentes
FORBIDDEN403token sem create:subscriptions
NOT_FOUND404plano indisponível
SUBSCRIPTION_ALREADY_ACTIVE409já possui assinatura ativa → contate o suporte
RATE_LIMITED429rate limit
INTERNAL_ERROR500erro interno

Ver Códigos de erro e Escopos.