---
title: "Create demo request"
method: POST
path: "/api/v1/verify/try-it"
tags: ["Verify"]
---

# Create demo request

`POST /api/v1/verify/try-it`

## Request

- Base URL: `https://api.proof.holdings`
- URL: `https://api.proof.holdings/api/v1/verify/try-it`
- Auth: none declared

Create a demo verification request for the "Try It Yourself" flow. Rate limited: 15 per hour per IP.

## Request body

- TryItRequest: Request body for creating a demo verification request
  - `type` 'phone' | 'email' | 'domain', required
  - `identifier` string, required

## Response `201`

Demo request created

- TryItResponse: The 201 of the public demo create. `success` is always true (a failure answers with an error envelope) and `request_id` is the id every subsequent public read takes — `GET /api/v1/verify/request/{id}` and the per-asset status poll. Deliberately NOT the shared `VerificationRequest` component: this path is public, and that component carries the authenticated-owner-only `computed_state` envelope, which must not be advertised here. It names `request_id` rather than `id` — the field the controller has always sent.
  - `success` boolean, required
  - `verification_url` string, required: Where to send the person to complete the demo verification
  - `request_id` string, required: MongoDB ObjectId
  - `expires_at` string, date-time, required: Demo requests are short-lived — far shorter than an ordinary request TTL.

## Other responses

- `400`: Validation error
- `429`: Rate limit exceeded

---

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