---
title: "[Internal] Create subscription"
method: POST
path: "/api/subscriptions"
tags: ["Subscriptions"]
---

# \[Internal\] Create subscription

`POST /api/subscriptions`

## Request

- Base URL: `https://api.typless.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.typless.com/api/subscriptions`
- Auth: none declared

## Request body

- CreateSubscriptionRequest
  - `subscription_plan_type` 'TRIAL' | 'FREE' | 'PROFESSIONAL' | 'ENTERPRISE', required
  - `usage_package_type` 'PAYG' | 'MINI' | 'EXTRA_SMALL' | 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE' | 'CUSTOM', required
  - `usage_package_pages` integer, nullable
  - `usage_package_price` number, nullable
  - `usage_package_price_per_additional_page` number, nullable

## Response `200`

Successful Response

- SubscriptionDTO
  - `aggregate_id` string, uuid, required
  - `tenant_id` string, uuid, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `status` 'ACTIVE' | 'ENDED' | 'SUSPENDED', required
  - `package` UsagePackage, required
    - `type` 'PAYG' | 'MINI' | 'EXTRA_SMALL' | 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE' | 'CUSTOM', required
    - `pages` integer, required
    - `price` number, required
    - `price_per_additional_page` number, required
    - `line_items_extraction_price` number, required
    - `price_per_additional_field` number
  - `upcoming_package` UsagePackage, required
    - `type` 'PAYG' | 'MINI' | 'EXTRA_SMALL' | 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE' | 'CUSTOM', required
    - `pages` integer, required
    - `price` number, required
    - `price_per_additional_page` number, required
    - `line_items_extraction_price` number, required
    - `price_per_additional_field` number
  - `support_package` SupportPackage
    - `type` 'STANDARD' | 'ADVANCED' | 'ENTERPRISE' | 'CUSTOM', required
    - `hours` integer, required
    - `price` number, required
    - `price_per_additional_hour` number, required
  - `upcoming_support_package` SupportPackage
    - `type` 'STANDARD' | 'ADVANCED' | 'ENTERPRISE' | 'CUSTOM', required
    - `hours` integer, required
    - `price` number, required
    - `price_per_additional_hour` number, required
  - `plan` SubscriptionPlan, required
    - `type` 'TRIAL' | 'FREE' | 'PROFESSIONAL' | 'ENTERPRISE', required
    - `price_per_user` number, nullable, required
    - `included_business_units` integer, required
    - `price_per_additional_business_unit` number, nullable, required
    - `included_support_hours` integer, required
    - `price_per_additional_support_hour` number, nullable, required
    - `price_per_gb_of_storage` number, required
  - `is_plan_updatable` boolean, required
  - `page_usage_credits` integer, nullable, required
  - `page_credits` PageCredits[]
    - `amount` integer, required
    - `valid_until` string, date, required
    - `description` string, nullable
  - `end_date` string, date, nullable, required
  - `due_date_days` integer, required
  - `next_billing_date` string, date, nullable, required
  - `discount_details` DiscountDetails, required
    - `business_units` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `users` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `package` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `additional_usage` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `line_item_usage` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `additional_field_usage` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `support_hours` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `support_package` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required
    - `storage` DiscountState
      - `current_discount_percentage` number
      - `scheduled_discounts` ScheduledDiscount[]
        - `description` string, nullable, required
        - `discount_start_date` string, date, required
        - `discount_percentage` number, required

## Other responses

- `422`: Validation Error

---

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