---
title: "Create experience"
method: POST
path: "/experiences"
tags: ["Experiences"]
---

# Create experience

`POST /experiences`

Required permissions:
 - `experience:create`

## Request body

- object — Parameters for CreateExperience
  - `app_id` string, required — The unique identifier of the app that powers this experience.
  - `company_id` string, required — The unique identifier of the company to create this experience for.
  - `is_public` boolean, nullable — Whether the experience is publicly accessible without a membership.
  - `logo` object, nullable — A logo image displayed alongside the experience name.
    - `id` string, required — The ID of an existing file object.
  - `name` string, nullable — The display name of the experience. Defaults to the app's name if not provided.
  - `notifications_enabled` boolean, nullable — Whether Whop app notifications are enabled for this experience. Webhooks still fire.
  - `section_id` string, nullable — The unique identifier of the section to place the experience in.

## Response `200`

A successful response

- Experience — An experience is a feature or content module within a product, such as a chat, course, or custom app.
  - `app` object, required — The app that powers this experience, defining its interface and behavior.
    - `icon` object, nullable, required — The icon image for this app, displayed on the app store, product pages, checkout, and as the default icon for experiences using this app.
      - `url` string, nullable, required — A pre-optimized URL for rendering this attachment on the client. This should be used for displaying attachments in apps.
    - `id` string, required — The unique identifier for the app.
    - `name` string, required — The display name of this app shown on the app store and in experience navigation. Maximum 30 characters.
  - `company` object, required — The company that owns this experience.
    - `id` string, required — The unique identifier for the company.
    - `route` string, required — URL slug for the account's store page, e.g. `pickaxe` in whop.com/pickaxe.
    - `title` string, required — The display name of the company shown to customers.
  - `created_at` string, date-time, required — The datetime the experience was created.
  - `id` string, required — The unique identifier for the experience.
  - `image` object, nullable, required — The custom logo image for this experience. Null if no custom logo has been uploaded.
    - `url` string, nullable, required — A pre-optimized URL for rendering this attachment on the client. This should be used for displaying attachments in apps.
  - `is_public` boolean, required — Whether this experience is publicly visible to all users, including those without a membership.
  - `name` string, required — The display name of this experience shown to users in the product navigation. Maximum 255 characters.
  - `order` string, nullable, required — The sort position of this experience within its section. Lower values appear first. Null if no position has been set.
  - `products` object[], required — The list of products this experience is attached to, which determines which customers have access. Empty if the experience is only visible to authorized company team members.
    - `id` string, required — The unique identifier for the product.
    - `route` string, required — URL slug in the product's public link, e.g. `pickaxe-analytics` in whop.com/company/pickaxe-analytics.
    - `title` string, required — The display name of the product shown to customers on the product page and in search results.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `422` — Verification required
- `429` — Too many requests
- `500` — Internal server error

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/versions/db0883548bc5/schema)
