---
title: Create
url: https://www.tines.com/docs/api/admin/self-hosted-license/create/
updated: 2026-03-24T20:04:19+00:00
description: Upload and apply a new license to the tenant. A license must not already exist — use [Update](/api/admin/self-hosted-license/update/) to replace an existing license. This endpoint is only available on self-hosted tenants.
---

*[tines.com](https://www.tines.com/llms.txt) › [Docs](https://www.tines.com/llms.txt) › [Tines API](https://www.tines.com/llms.txt) › [Admin](https://www.tines.com/llm/docs/api/admin.md) › [Self Hosted License](https://www.tines.com/llm/docs/api/admin/self-hosted-license.md)*

# Create

*[View on tines.com](https://www.tines.com/docs/api/admin/self-hosted-license/create/)*

## Description

Upload and apply a new license to the tenant. A license must not already exist — use [Update](/api/admin/self-hosted-license/update/) to replace an existing license. This endpoint is only available on self-hosted tenants.

## Request

HTTP Method: **POST**

| Parameter | Description                |
| --------- | -------------------------- |
| license   | The signed license string. |

### Sample request

```bash

curl -X POST \
  https://<tenant-domain>/api/v1/admin/license \
  -H 'content-type: application/json' \
  -H 'Authorization: Bearer <<CREDENTIAL.tines_api_key>>' \
  -d '{
       "license": "TINES-company_name-ENV::LICENSE_DATA"
      }'
```

## Response

A successful request will return a `201` status code with a JSON object describing the applied license. The response fields are the same as [Get](/api/admin/self-hosted-license/get/).

### Sample response

```json
{
  "customer_name": "Company Name",
  "unique_identifier": "UUID",
  "environment": "Production",
  "created_at": "2026-01-01T00:00:00.000Z",
  "expires_at": "2027-01-01T00:00:00Z",
  "pricing_model": "story_units",
  "users": 1000,
  "builders": 100,
  "teams": 5,
  "stories": 100,
  "story_units": 50,
  "actions": 1000000,
  "tunnels": 0,
  "daily_story_events": 50000,
  "daily_tenant_events": 100000,
  "features": ["AUDIT_LOGS", "CHANGE_CONTROL", "SSO"]
}
```

A request when a license already exists will return a `409` status code.

A request with an invalid license will return a `422` status code.
