---
title: "Give an email a plan for free, forever"
method: PUT
path: "/v1/admin/comp"
tags: ["Admin"]
---

# Give an email a plan for free, forever

`PUT /v1/admin/comp`

## Request

- Base URL: `http://api.technooptimist.io`
- URL: `http://api.technooptimist.io/v1/admin/comp`
- Auth: HTTP bearer

Requires the ADMIN_TOKEN. `plan: null` takes it away. Works before the person signs up (linked by email on first sign-in); takes effect at once, no deploy.

## Request body

- object
  - `email` string, email, required
  - `plan` 'site' | 'api' | 'api_commercial', nullable, required

## Response `200`

Set

- object
  - `ok` true, required
  - `email` string, required
  - `plan` string, nullable, required
  - `userId` string, required
  - `signedUp` boolean, required

## Other responses

- `401`: Missing or invalid credentials
- `403`: Credential lacks the required scope
- `404`: Not found
- `409`: Conflict
- `422`: Validation failed

---

[API](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api.md) · [All operations](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/llms.txt) · [OpenAPI document](https://skmtc.dev/technooptimist/apis/the-techno-optimist-api/revisions/b7bcde6a0f30?raw)
