---
title: "Create Project"
method: POST
path: "/management/v1/projects"
tags: ["Management"]
---

# Create Project

`POST /management/v1/projects`

Creates a new project. You can add users, specify the cluster, timezone, currency, and other details.

All owners are added to the project by default.

## Request body

- ManagementProjectsCreateRequestBody — Request body schema for **POST** `/management/v1/projects`.
  - `case_sensitive_codes` boolean, required — Determines if the vouchers in the project will be case sensitive (if `true`, `C0dE-cfV` is not equal to `c0de-cfv`) or case insensitive (if false, `C0dE-cfV` is equal to `c0de-cfv`).
  - `name` string, required — The name of the project.
  - `description` string — A user-defined description of the project, e.g. its purpose, scope, region.
  - `timezone` string, required — The time zone in which the project is established. It can be in the GMT format or in accordance with IANA time zone database.
  - `currency` string, required — The currency used in the project. It is equal to a 3-letter ISO 4217 code.
  - `dial_code` string, nullable — The country dial code for the project. It is equal to an ITU country code.
  - `webhook_version` 'v2024-01-01' — The webhook version used in the project.
  - `client_trusted_domains` string[] — An array of URL addresses that allow client requests.
  - `client_redeem_enabled` boolean — Enables client-side redemption.
  - `client_publish_enabled` boolean — Enables client-side publication.
  - `client_list_vouchers_enabled` boolean — Enables client-side listing of vouchers.
  - `client_create_customer_enabled` boolean — Enables client-side creation of customers.
  - `client_loyalty_events_enabled` boolean — Enables client-side events for loyalty and referral programs.
  - `client_set_voucher_expiration_date_enabled` boolean — Enables client-side setting of voucher expiration date.
  - `webhooks_callout_notifications` object — Determines the notification settings for webhook callouts configured in Distributions and Project settings.
    - `distributions` object, required — Determines the notification settings for webhooks sent through Distributions.
      - `email` boolean, required — Enables the notification through an email.
      - `in_app` boolean, required — Enables the notification through an email.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `webhooks` object, required — Determines the notification settings for webhooks sent as set out in the Project settings.
      - `email` boolean, required — Enables the notification through an email.
      - `in_app` boolean, required — Enables the notification through an email.
      - `emails` string[], required — An array of email addresses which will receive the notification.
  - `api_usage_notifications` object — Determines the notification settings.
    - `messages` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `api_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `bulk_api_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `webhook_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `cycle_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
  - `cluster_id` string — The identifier of the cluster where the project will be created. The default cluster is `eu1` unless otherwise configured.
  - `api_version` 'v2018-08-01' — The API version used in the project. Currently, the default and only value is `v2018-08-01`.
  - `users` object[] — The users (their identifiers, logins, and roles) who will be assigned to the project. You can assign only existing Voucherify users. It must be used either in the following combinations: - `id` and `role`, or - `login` and `role`.
    - `id` string — The unique identifier of the user who will be assigned to the project. It can be found in Team Settings > Team > Edit member. **Required** with the `role` string. Do **not** use with the `login` string.
    - `login` string — The login data of the user who will be assigned to the project. **Required** with the `role` string. Do **not** use with the `id` string.
    - `role` string, required — The role of the user to be added. It can be one of the following predefined roles: `ADMIN`, `USER`, `VIEWER`, `MERCHANT` or an ID of a custom role.

## Response `200`

Returns the details of a created project.

- ManagementProjectsCreateResponseBody — Returns `app_id` and `app_token` for the server-side and client-side authentication.
  - `id` string, required — Unique identifier of the project.
  - `name` string, required — The name of the project.
  - `description` string, required — A user-defined description of the project, e.g. its purpose, scope, region.
  - `timezone` string, required — The time zone in which the project is established. It can be in the GMT format or in accordance with IANA time zone database.
  - `currency` string, required — The currency used in the project. It is equal to a 3-letter ISO 4217 code.
  - `dial_code` string, nullable — The country dial code for the project. It is equal to an ITU country code.
  - `webhook_version` 'v2024-01-01', required — The webhook version used in the project.
  - `client_trusted_domains` string[], required — An array of URL addresses that allow client requests.
  - `client_redeem_enabled` boolean, required — Enables client-side redemption.
  - `client_publish_enabled` boolean, required — Enables client-side publication.
  - `client_list_vouchers_enabled` boolean, required — Enables client-side listing of vouchers.
  - `client_create_customer_enabled` boolean, required — Enables client-side creation of customers.
  - `client_loyalty_events_enabled` boolean, required — Enables client-side events for loyalty and referral programs.
  - `client_set_voucher_expiration_date_enabled` boolean, required — Enables client-side setting of voucher expiration date.
  - `webhooks_callout_notifications` object, required — Determines the notification settings for webhook callouts configured in Distributions and Project settings.
    - `distributions` object, required — Determines the notification settings for webhooks sent through Distributions.
      - `email` boolean, required — Enables the notification through an email.
      - `in_app` boolean, required — Enables the notification through an email.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `webhooks` object, required — Determines the notification settings for webhooks sent as set out in the Project settings.
      - `email` boolean, required — Enables the notification through an email.
      - `in_app` boolean, required — Enables the notification through an email.
      - `emails` string[], required — An array of email addresses which will receive the notification.
  - `api_usage_notifications` object, required — Determines the notification settings.
    - `redemptions` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `messages` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `api_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `bulk_api_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `webhook_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
    - `cycle_calls` UsageNotifications, required
      - `enabled` boolean, required — Enables the notification.
      - `value` integer, required — The percent value of the limit which, when reached, triggers the notification.
      - `in_app` boolean, required — Enables the notification in the application.
      - `emails` string[], required — An array of email addresses which will receive the notification.
  - `cluster_id` string, required — The identifier of the cluster where the project will be created.
  - `case_sensitive_codes` boolean, required — Determines if the vouchers in the project will be: - case sensitive - if `true`, `C0dE-cfV` is **not** equal to `c0de-cfv`), - case insensitive - if `false`, `C0dE-cfV` is equal to `c0de-cfv`.
  - `api_version` 'v2018-08-01', required — The API version used in the project. Currently, the default and only value is `v2018-08-01`.
  - `is_sandbox` boolean, required — Determines if the project is a sandbox project.
  - `webhook_token` string, required — Webhook token used for authentication.
  - `server_side_key` object — Contains the `app_id` and `app_token` to authenticate server-side requests.
    - `app_id` string — Application ID to be used as `X-App-Id` header in every HTTP request.
    - `app_token` string — Application token to be used as `X-App-Token` header in every HTTP request. The application token (secret key) for the server-side authentication is visible in the Project Settings for 14 days when it is first generated in a newly-created project. Write your application token down and keep it in a safe place.
  - `client_side_key` object — Contains the `app_id` and `app_token` to authenticate client-side requests.
    - `app_id` string — Application ID to be used as `X-App-Id` header in every HTTP request.
    - `app_token` string — Application token to be used as `X-App-Token` header in every HTTP request. The application token (secret key) for the client-side authentication is visible in the Project Settings for 14 days when it is first generated in a newly-created project. Write your application token down and keep it in a safe place.

## Other responses

- `400` — Returns an error if the payload is missing required properties in the request.
- `401` — Returns an error if an invalid token was provided.
- `402` — Returns an error if the current plan does not include the Management API feature.
- `403` — Returns an error if the project is to be created in a cluster that is unavailable to the user.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-api-async-actions/revisions/4982266e0494/schema)
