Remover item
curl --request DELETE \
--url https://api.upag.io/v1/subscriptions/{subscriptionId}/items/{itemId} \
--header 'Authorization: Bearer <token>'const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.upag.io/v1/subscriptions/{subscriptionId}/items/{itemId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.upag.io/v1/subscriptions/{subscriptionId}/items/{itemId}';
const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));Assinaturas
Remover item
Remove um item da assinatura, agora ou na próxima renovação
DELETE
https://api.upag.io
/
v1
/
subscriptions
/
{subscriptionId}
/
items
/
{itemId}
Remover item
curl --request DELETE \
--url https://api.upag.io/v1/subscriptions/{subscriptionId}/items/{itemId} \
--header 'Authorization: Bearer <token>'const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.upag.io/v1/subscriptions/{subscriptionId}/items/{itemId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.upag.io/v1/subscriptions/{subscriptionId}/items/{itemId}';
const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));Remove um item da assinatura. Com
applyAt=now (padrão) o item sai na hora e a resposta é 204 sem corpo; com applyAt=period_end a remoção vira uma mudança agendada e a resposta é 200 com ela.
Uma assinatura precisa ter pelo menos um item. Para encerrá-la, use Cancelar assinatura.
Permissão: subscription.write. Apenas chave secreta (sk_…).
Os exemplos usam o sandbox (
https://api.upag.dev/v1). Em produção use https://api.upag.io/v1 com sk_live_….Endpoint
curl -X DELETE "https://api.upag.dev/v1/subscriptions/9a3c6e1f-0d58-4b72-a4e9-7c2f8b5d1e36/items/d4a8c1e6-2f90-4b57-9e13-8a6c0b7d5f24?applyAt=period_end" \
-H "Authorization: Bearer sk_test_your_api_key"
import { Upag } from 'upag';
const upag = new Upag('sk_test_your_api_key');
// Devolve a mudança agendada com period_end, ou undefined com now
const change = await upag.subscriptions.deleteItem(
'9a3c6e1f-0d58-4b72-a4e9-7c2f8b5d1e36',
'd4a8c1e6-2f90-4b57-9e13-8a6c0b7d5f24',
{ applyAt: 'period_end' },
);
Parâmetros
string (uuid)
required
ID da assinatura.
string (uuid)
required
ID do item (
items[].id da assinatura).string
default:"now"
now ou period_end.Resposta
ComapplyAt=now: 204 No Content, sem corpo.
Com applyAt=period_end: 200 OK com a mudança agendada.
Response (applyAt=period_end)
{
"id": "8f1c5a73-4d02-4e96-b7a9-3c6e0d2b9f15",
"subscription": "9a3c6e1f-0d58-4b72-a4e9-7c2f8b5d1e36",
"operation": "remove",
"item": "d4a8c1e6-2f90-4b57-9e13-8a6c0b7d5f24",
"price": null,
"quantity": null,
"createdAt": "2026-10-12T14:20:00.000Z"
}
Erros
| Status | Código | Quando |
|---|---|---|
404 | SUBSCRIPTION_NOT_FOUND | A assinatura não existe ou é de outra conta |
404 | SUBSCRIPTION_ITEM_NOT_FOUND | O item não pertence à assinatura |
400 | SUBSCRIPTION_NOT_EDITABLE | A assinatura está canceled ou void |
400 | SUBSCRIPTION_LAST_ITEM | É o único item da assinatura |