---
title: "Request My Tokens"
method: POST
path: "/users/me/token-purchase-requests"
tags: ["users"]
---

# Request My Tokens

`POST /users/me/token-purchase-requests`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/users/me/token-purchase-requests`
- Auth: none declared

Ask for extra tokens on the caller's own account (jwt). **The buy path, v1.**

Payer-keyed: `company_id` is NULL and `requested_by` is the payer, because a billing
user need not be a member of the companies they pay for — and a wizard user who has
run out may have no company at all, which is exactly when they need to ask. An admin
sees it on the worklist and records the purchase, which grants the tokens and releases
the held work.

`TokenPurchaseRequest` stays TENANT-classified for the company-keyed route beside it
(one client of a fiduciary must never read another's requests), so a row with no
company has no owner for Ring 3 to check and is refused under a restricted principal.
`PayerScopedDep` is the sanctioned elevation for exactly that shape — and it is the
caller's own account either way.

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- PurchaseRequestIn: A customer asking to buy, ahead of any payment provider (decision 4). **Bounded in both dimensions**, because the payer-keyed route beside it is reachable by any signed-in user: `units` unbounded against a BigInteger meant an int8 overflow at COMMIT — outside `Scoped.tx()`'s rollback arm, so an opaque 500 on a deactivated session rather than a 422 — and `note` unbounded against a Text column is an append-anything surface on an unpaginated admin worklist.
  - `units` integer, required
  - `note` string, nullable

## Response `201`

Successful Response

- PurchaseRequestOut
  - `id` string, required
  - `company_id` string, nullable
  - `requested_by` string, required
  - `units` integer, required
  - `note` string, nullable
  - `status` string, required
  - `created_at` string, date-time, required
  - `resolved_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

---

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