Consultar uma assinatura
Recupera o estado completo e atual de uma assinatura pelo seu id, incluindo o ciclo de cobrança vigente, o cliente, os itens, o desconto, os splits e os links de ações disponíveis. Use sempre que prec
Recupera o estado completo e atual de uma assinatura pelo seu id, incluindo o ciclo de cobrança vigente, o cliente, os itens, o desconto, os splits e os links de ações disponíveis. Use sempre que precisar da "fonte da verdade" sobre uma recorrência — antes de cobrar, cancelar ou exibir o status para o cliente.
GET /v1/subscriptions/{subscriptionId}
Como funciona
Uma assinatura (subscription) é o objeto que representa uma cobrança recorrente: um cliente, um plano (derivado das variantes de produto) e uma cadência de cobrança (frequency, frequencyCount). A cada renovação a Selectwin abre um novo ciclo (cycle) e tenta gerar a cobrança correspondente.
Este endpoint é uma leitura síncrona e não destrutiva: não cria ciclos, não dispara cobranças e não altera estado. Ele apenas devolve o retrato atual do objeto no momento da consulta.
Pontos-chave do que você recebe:
status— o estado atual da assinatura no ciclo de vida (active,pending,trialing,paused,pastdue,unpaid,canceled). É o campo que governa se a recorrência continua cobrando.currentCycle— o ciclo de cobrança vigente (número sequencial emcycle, janelastartDate/endDate, vencimentodueDatee quando foi faturado embilledAt). É o "período atual" da assinatura.items— versão completa das linhas da assinatura, comname,unitPrice(centavos),pricingSchema,currencyeimages. Mais rico do que a projeção que aparece na listagem._links— links HATEOAS para as próximas ações possíveis a partir deste objeto (ler novamente, criar outra, cancelar, listar).
Read vs. Create
A resposta de leitura não inclui o bloco currentCharge (detalhe da transação da cobrança), que aparece apenas na resposta de criação. Por outro lado, a leitura traz o campo geolocation. Os items da leitura são a versão completa (com name, unitPrice, etc.), não a projeção mínima do create.
Quando usar
- Para exibir o status de uma assinatura ao cliente (área "Minha assinatura", painel de suporte).
- Para confirmar o estado real antes de uma ação (ex.: verificar
statusecurrentCycleantes de cancelar ou renovar um ciclo). - Para reconciliar seu sistema com a Selectwin após receber um evento de webhook (o evento traz o
id; você lê o objeto completo).
Quando não usar:
- Para monitorar mudanças de estado, não fique consultando este endpoint em laço (polling). Receba os eventos por webhook — veja Proibição de polling.
- Para buscar várias assinaturas (por cliente, status ou período), use Listar assinaturas.
- Para detalhar um ciclo específico ou os itens isoladamente, use Ciclos e Itens.
Requisição
Headers
| Cabeçalho | Obrigatório | Descrição |
|---|---|---|
SelectKey | sim | Sua chave de API. Em produção começa com sl_live_; em sandbox, sl_test_. Veja Autenticação. |
Por ser uma leitura, não envie corpo nem Content-Type, e não há necessidade de X-Idempotency-Key (idempotência se aplica a escritas — veja Idempotência).
Parâmetros de caminho
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
subscriptionId | string | sim | ID público da assinatura, no formato subs_.... Trate como opaco — armazene a string inteira sem fazer parsing. |
Este endpoint não aceita parâmetros de query.
Exemplo curl
curl -X GET "https://api.selectwin.io/v1/subscriptions/subs_01hqzvabc" \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"Resposta
200 OK — o corpo é o objeto completo da assinatura.
{
"id": "subs_01hqzvabc",
"status": "active",
"currency": "BRL",
"method": "credit",
"type": "prepaid",
"currentCycle": {
"id": "cyc_01hqzvabc",
"cycle": 3,
"status": "billed",
"startDate": "2026-04-01T00:00:00.000Z",
"endDate": "2026-04-30T23:59:59.000Z",
"dueDate": "2026-04-01T00:00:00.000Z",
"billedAt": "2026-04-01T10:15:00.000Z",
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-01T00:00:00.000Z"
},
"customer": {
"id": "cus_01hqzvabc",
"firstName": "João",
"lastName": "Silva",
"email": "[email protected]",
"document": { "type": "cpf", "number": "12345678901" },
"telephone": { "countryCode": "55", "areaCode": "11", "number": "999999999", "line": "5511999999999" },
"available": true,
"delinquent": false,
"externalReference": "CRM-USER-001",
"additionalEmails": ["[email protected]"],
"metadata": { "crmId": "lead-42" },
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-10T09:15:25.000Z"
},
"billing": {
"frequency": "monthly",
"frequencyCount": 1,
"endDate": null,
"exactDay": null,
"freeTrialDays": 0,
"address": {
"street": "Av. Paulista",
"number": "1000",
"complement": "Apt 42",
"district": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"country": "BR",
"postcode": "01310-100"
}
},
"discount": { "value": 500, "type": "flat", "percentageOfAmount": null },
"shippable": false,
"shipping": null,
"spplited": true,
"splits": [
{
"id": "split_01hqzvabc",
"recipient": "bus_9876543210",
"type": "percentage",
"value": 10,
"chargeProcessingFee": false,
"liable": true,
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z"
}
],
"items": [
{
"id": "item_01hqzvabc",
"quantity": 1,
"unitPrice": 9900,
"pricingSchema": "unit",
"name": "Premium Plan",
"description": "Plano Premium mensal",
"enabled": true,
"currency": "BRL",
"metadata": null,
"images": ["https://cdn.example.com/product.png"],
"externalReference": null,
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z"
}
],
"callback": { "webhookUrl": "https://example.com/webhook", "active": true },
"geolocation": null,
"externalReference": "SUB-1001",
"metadata": { "campaign": "launch" },
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z",
"merchant": { "name": "Seller Name", "merchantId": "bus_1234567890", "isSubAccount": false },
"_links": {
"self": { "href": "https://api.selectwin.io/v1/subscriptions/subs_01hqzvabc", "method": "GET", "description": "Read a subscription." },
"create": { "href": "https://api.selectwin.io/v1/subscriptions", "method": "POST", "description": "Create a new subscription." },
"cancel": { "href": "https://api.selectwin.io/v1/subscriptions/subs_01hqzvabc", "method": "DELETE", "description": "Cancel the subscription." },
"list": { "href": "https://api.selectwin.io/v1/subscriptions", "method": "GET", "description": "List all subscriptions." }
}
}Campos-chave da resposta
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID da assinatura (subs_...). |
status | string | Estado atual: active, pending, trialing, paused, pastdue, unpaid ou canceled. |
currency | string | Moeda ISO 4217 (BRL). |
method | string | Método de cobrança das renovações (credit, billet, pix). |
type | string | Modelo de cobrança da assinatura (ex.: prepaid). |
currentCycle | object | Ciclo vigente. Veja a tabela abaixo. |
customer | object | Dados completos do cliente (nome, e-mail, documento, telefone, delinquent, etc.). |
billing | object | Cadência (frequency, frequencyCount, freeTrialDays, endDate, exactDay) e endereço de cobrança. |
discount | object | null | Desconto aplicado: type (flat em centavos ou percentage), value e percentageOfAmount. |
shippable / shipping | boolean / object | Se a assinatura envolve entrega física e os dados de envio (null quando não aplicável). |
spplited / splits | boolean / array | Se a receita é repartida e as regras de split (type percentage/flat, value, recipient, liable). |
items | array | Linhas completas da assinatura: name, unitPrice (centavos), quantity, pricingSchema, currency, images. |
callback | object | webhookUrl de notificações da assinatura/ciclo e active (se está ligado). |
geolocation | object | null | Geolocalização capturada na criação (presente na leitura; ausente no create). |
externalReference | string | null | Sua referência externa para correlacionar com seu sistema. |
metadata | object | Chaves/valores livres que você anexou. |
merchant | object | Conta vendedora (name, merchantId, isSubAccount). |
_links | object | Ações HATEOAS: self, create, cancel, list. |
Campos do currentCycle:
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do ciclo (cyc_...). |
cycle | integer | Número sequencial do ciclo (1, 2, 3, …). |
status | string | Estado do ciclo (ex.: billed, paid, canceled). |
startDate / endDate | date-time | Janela coberta pelo ciclo (ISO 8601 UTC). |
dueDate | date-time | Vencimento da cobrança do ciclo. |
billedAt | date-time | null | Quando o ciclo foi faturado (null se ainda não). |
Dinheiro e datas
Valores monetários (unitPrice, discount.value) são inteiros em centavos (9900 = R$ 99,00) e timestamps são ISO 8601 em UTC (2026-04-12T17:56:33.000Z). Veja Convenções.
Erros
error.code | HTTP | Quando ocorre |
|---|---|---|
invalidParameters | 400 | subscriptionId malformado (não bate com o padrão prefixo_valor). |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | Chave sem permissão para ler esta assinatura, ou ela pertence a outra conta. |
notFound | 404 | Nenhuma assinatura com esse id na sua conta. |
unprocessableEntity | 422 | A requisição não pôde ser processada por regra de negócio. |
tooManyRequests | 429 | Limite de requisições excedido — respeite error.retryAfterMinutes e use backoff. |
serverError | 500 | Erro interno — repita com backoff; se persistir, contate o suporte. |
Atenção
Trate sempre pelo error.code, nunca pela message (que pode mudar). Para um 404, confirme que está usando o id correto e a chave da conta certa (uma chave de sandbox não enxerga objetos de produção). Veja o Catálogo de Códigos de Erro e Tratamento de Erros.
Boas práticas
- Não use polling. Para saber quando o status muda (ciclo pago, cobrança recusada, cancelamento), assine os eventos por webhook e leia o objeto só quando notificado.
- Leia após cada evento relevante para reconciliar: o webhook entrega o
id; este endpoint entrega o estado completo e atual. - Confie em
status+currentCycle.status, não em campos derivados, para decidir o que mostrar ao cliente (em dia, em atraso, cancelada). - Trate o
idcomo opaco e armazene a string inteira; não construa nem deduza IDs. - Use os
_linkspara descobrir as ações disponíveis (cancelar, listar) em vez de montar URLs à mão — assim seu código acompanha mudanças no contrato. - Não confunda os
itemsda leitura com os da criação: aqui eles vêm completos (comname,unitPrice,currency); para inspecionar/alterar itens isoladamente use Itens.
Veja também
- Visão geral de Assinaturas — modelo do objeto e ciclo de vida completo.
- Criar assinatura — como abrir uma recorrência (e como a resposta difere desta leitura).
- Listar assinaturas — buscar várias por cliente, status ou período.
- Cancelar assinatura — encerrar a recorrência.
- Ciclos e Itens — detalhar e gerenciar ciclos e linhas.
- Splits — repartição de receita.
- Convenções e Proibição de polling.
How is this guide?