---
title: "Admin Grant Plan"
method: POST
path: "/api/v1/admin/clients/{client_id}/grant-plan"
tags: ["admin"]
---

# Admin Grant Plan

`POST /api/v1/admin/clients/{client_id}/grant-plan`

## Request

- Base URL: `https://api.nudgelink.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nudgelink.co/api/v1/admin/clients/{client_id}/grant-plan`
- Auth: HTTP bearer

Grant a client any plan for free, with no expiry (comped plan).

Sets ``subscription_plan`` + ``plan_comped=True`` + ``guarantee_status=active``,
clears any pilot expiry (a comp supersedes a time-boxed pilot), starts a
fresh billing cycle, and refills the plan's monthly credits. Logged as an
``admin_grant`` BillingEvent (amount = credit COUNT, not dollars) + audit
row. Idempotent on ``Idempotency-Key``.

## Path parameters

- `client_id` string, uuid, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- GrantPlanRequest
  - `plan` 'solo' | 'starter' | 'growth' | 'scale', required
  - `reason` string, required

## Response `200`

Successful Response

- GrantPlanResponse
  - `client_id` string, uuid, required
  - `plan` string, required
  - `comped` boolean, required
  - `credits_granted` integer, required
  - `new_balance` integer, required
  - `billing_event_id` string, uuid, required
  - `sequences_resumed` integer

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/nudgelink/apis/nudgelink-api.md) · [All operations](https://skmtc.dev/nudgelink/apis/nudgelink-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nudgelink/apis/nudgelink-api/revisions/baa46e6db986?raw)
