---
title: "Start a subscription signup and receive a hosted checkout URL"
method: POST
path: "/v1/signup"
---

# Start a subscription signup and receive a hosted checkout URL

`POST /v1/signup`

## Request

- Base URL: `https://actiondock.app`
- URL: `https://actiondock.app/v1/signup`
- Auth: none required

## Request body

- SignupRequest
  - `name` string, required
  - `email` string, email, required
  - `plan` 'launch' | 'growth' | 'scale', required
  - `cycle` 'monthly' | 'annual', required
  - `termsAccepted` true, required
  - `legalVersion` '2026-08-22', required

## Response `201`

Signup created

- SignupResult
  - `checkoutUrl` string, uri, required: Hosted checkout page for the selected plan.
  - `checkout` object: Paddle checkout configuration consumed by the hosted checkout page.
  - `claimToken` string, required: Single-use token for GET /v1/signup/{claimToken} and the claim call.
  - `statusUrl` string, uri, required: Signup status endpoint for this claim token.
  - `expiresAt` string, date-time, required: Claim token expiry.

## Other responses

- `400`: Request body is invalid.
- `429`: Rate limit exceeded (rate_limit_exceeded).

---

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