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

# Admin Grant Pilot

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

## 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-pilot`
- Auth: HTTP bearer

Grant a free pilot plan to a client (no Stripe charge).

Sets ``subscription_plan`` + ``guarantee_status=pilot`` + ``pilot_start_at`` +
``pilot_expires_at`` (= now + ``free_days``), refills the plan's monthly
credit allowance, and logs an ``admin_grant`` BillingEvent (amount = the
credit count granted, so the admin overview's granted-credits total reflects
it) plus an AuditLog row. Idempotent on ``Idempotency-Key``.

## Path parameters

- `client_id` string, uuid, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- GrantPilotRequest
  - `plan` 'solo' | 'starter' | 'growth' | 'scale', required
  - `reason` string, required
  - `free_days` integer

## Response `200`

Successful Response

- GrantPilotResponse
  - `client_id` string, uuid, required
  - `plan` string, required
  - `credits_granted` integer, required
  - `new_balance` integer, required
  - `pilot_expires_at` string, date-time, 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)
