---
title: "Create experience (course, digital download, forum, event, link, etc.)"
method: POST
path: "/experiences"
tags: ["Experiences"]
---

# Create experience (course, digital download, forum, event, link, etc.)

`POST /experiences`

## Request

- Base URL: `https://api.crevio.co/v1`
- URL: `https://api.crevio.co/v1/experiences`
- Auth: API key in header `Authorization`

Creates an experience of the given `type` — the entry point for selling a course, community/forum, live event, digital download, bookable session, or link-in-bio. Each `type` builds its own type-specific item with its own nested content endpoints (e.g. a `course` gets chapters → lessons; a `forum` gets topics/posts; an `event` gets sessions). A new experience starts empty — add content via the nested endpoints, set type-specific fields with PATCH /experiences/{id} via `details`, and make it sellable by linking it to a price variant with POST /price_variants/{id}/experiences. See the `type` field for the full list and per-type content model.

## Headers

- `Idempotency-Key` string

## Request body

- ExperienceCreateRequest
  - `type` 'digital_download' | 'course' | 'written_content' | 'website_embed' | 'link' | 'forum' | 'discord_server' | 'telegram' | 'event' | 'event_type', required: The kind of experience (sellable content/access) to create. Each type builds a different content model managed through its own nested endpoints: - `course` — online course; add modules via POST /experiences/{id}/chapters, lessons via POST /chapters/{id}/lessons - `digital_download` — downloadable files; upload via POST /experiences/{id}/files - `forum` — community; add topics/posts via POST /experiences/{id}/topics and /posts - `event` — live event; add sessions via POST /experiences/{id}/event_sessions - `event_type` — bookable 1:1 session (Cal.com-style); set schedule/form via PATCH details - `link` — link-in-bio; add links via POST /experiences/{id}/link_items - `written_content` — rich-text article (set body via PATCH details) - `website_embed`, `discord_server`, `telegram` — embed / external community access Make an experience sellable by linking it to a price variant: POST /price_variants/{id}/experiences.
  - `name` string: Display name for the experience

## Response `201`

Experience created

- Experience
  - `id` string, required
  - `object` string, required
  - `name` string, required
  - `slug` string, required
  - `description` string, nullable, required
  - `access_type` 'secret' | 'open', required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `type` string, required
  - `active_grants_count` integer, required
  - `details` object, required: Type-specific fields, shaped by the experience's `type`. Mirrors what PATCH accepts under `details` (see the per-type *DetailsRequest schemas), plus read-only collections (e.g. a course's `chapters`).

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `422`: Validation error
- `429`: Rate limit exceeded — 600 requests per minute per credential. Retry after the number of seconds in `Retry-After`.
- `500`: Internal server error

---

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