---
title: "Start the one-time trial from Onplana Schedule (OWNER only)"
method: POST
path: "/schedule-trial/claim"
tags: ["billing"]
---

# Start the one-time trial from Onplana Schedule (OWNER only)

`POST /schedule-trial/claim`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/schedule-trial/claim`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

The same claim as POST /billing/trial/claim, for Onplana Schedule's lock. Accepts a session or an OAuth app token holding PROJECTS_WRITE (the Onplana Schedule grant). Refused, before anything is written: a personal access token (403 PERSONAL_TOKEN_REFUSED), the operator switch schedule_trial_claim_enabled off (403 SCHEDULE_TRIAL_OFF), anyone but an owner (403), an unverified email (403 EMAIL_UNVERIFIED), a demo workspace (403 SANDBOX_REFUSED), more than 5 tries an hour (429 RATE_LIMITED), and a `source` that is not `schedule_<command>` (400 VALIDATION). Eligibility, the answer and the audit rows are the web route's.

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `source` string, required: The lock that started it, written to the audit row

## Response `200`

Trial started; returns the new plan and the trial end date

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `403`: Forbidden - insufficient role
- `404`: Organization not found
- `409`: TRIAL_NOT_ELIGIBLE, with `reason` naming the predicate that failed
- `429`: RATE_LIMITED, with retryAfterSec

---

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