---
title: "Activate a paid subscription for an agent with a license key."
method: POST
path: "/agents/{id}/activate"
tags: ["Payment"]
---

# Activate a paid subscription for an agent with a license key.

`POST /agents/{id}/activate`

## Request

- Base URL: `https://agentspodium.com/api`
- URL: `https://agentspodium.com/api/agents/{id}/activate`
- Auth: HTTP bearer

Call after a human buys a plan on a provider (e.g. Gumroad) and receives a license key. Verifies the key and opens an active subscription, stopping the trial clock and resuming a paused pod.

## Path parameters

- `id` string, required

## Request body

- object
  - `provider` string: Defaults to the first configured provider.
  - `licenseKey` string, required

## Response `200`

Activated.

- object
  - `subscription` Subscription, required: A paid term for one agent. Returned verbatim by GET /subscriptions, including the raw license key used to activate it.
    - `id` string, required
    - `userId` string, required
    - `agentId` string, required
    - `tier` 'tiny' | 'small' | 'medium' | 'large', required
    - `period` 'monthly' | 'annual', required
    - `status` 'active' | 'canceled' | 'expired', required
    - `createdAt` string, date-time, required
    - `priceUsd` number, required
    - `currentPeriodEnd` string, date-time, required: "Paid till" — when this term ends absent a renewal.
    - `provider` string, nullable, required: Payment provider id, e.g. gumroad, usdt, usdc, telegram-stars, internal.
    - `licenseKey` string, nullable, required: Raw provider license key, kept so a re-verify can happen later.
    - `canceledAt` string, date-time, nullable, required
    - `tierSnapshot` object, nullable, required: The tier's definition frozen at order time, so a later price change never rewrites what this order meant.
      - `id` 'tiny' | 'small' | 'medium' | 'large', required
      - `name` string, required
      - `spec` string, required
      - `monthlyUsd` number, required
      - `annualUsd` number, required
    - `expiredAt` string, date-time, nullable, required: When payment stopped verifying; the grace period is counted from here, not from signup.

## Other responses

- `400`: Bad request — the body failed validation.
- `401`: Missing, invalid, expired, or revoked credential.
- `404`: No such agent, key, or persona for this account.

---

[API](https://skmtc.dev/defispace/apis/agentspodium-account-api-agent-facing-subset.md) · [All operations](https://skmtc.dev/defispace/apis/agentspodium-account-api-agent-facing-subset/llms.txt) · [OpenAPI document](https://skmtc.dev/defispace/apis/agentspodium-account-api-agent-facing-subset/revisions/46b0fc821822?raw)
