---
title: "Create a custom attribute"
method: POST
path: "/v3/custom-attributes"
tags: ["CustomAttributes"]
---

# Create a custom attribute

`POST /v3/custom-attributes`

## Request

- Base URL: `https://api.cryptlex.com`
- URL: `https://api.cryptlex.com/v3/custom-attributes`
- Auth: HTTP bearer

Creates a new custom attribute.

## Request body

- CustomAttributeCreateRequestModel
  - `name` string, required: Letters (a-z, A-Z), numbers, underscores, hyphens and dots.
  - `displayName` string, required: Any printable characters, including letters from any script, punctuation and emoji. Cannot contain line breaks, tabs, other control characters, invisible formatting characters (zero-width and bidirectional marks), and cannot start or end with whitespace.
  - `resourceType` 'license' | 'product' | 'user' | 'organization' | 'reseller' | 'activation' | 'trial-activation', required
  - `dataType` 'string', required
  - `required` boolean, required
  - `defaultValue` string, nullable
  - `applicationAccess` 'none' | 'read' | 'read-write', required
  - `userAccess` 'none' | 'read' | 'read-write', required
  - `organizationAccess` 'none' | 'read' | 'read-write', required
  - `resellerAccess` 'none' | 'read' | 'read-write', required
  - `productIds` string[], nullable

## Response `201`

Created

- CustomAttributeDto
  - `id` string, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `name` string, required
  - `displayName` string, nullable
  - `resourceType` 'license' | 'product' | 'user' | 'organization' | 'reseller' | 'activation' | 'trial-activation', required
  - `dataType` 'string', required
  - `required` boolean, required
  - `defaultValue` string, nullable
  - `archived` boolean, required
  - `applicationAccess` 'none' | 'read' | 'read-write', required
  - `userAccess` 'none' | 'read' | 'read-write', required
  - `organizationAccess` 'none' | 'read' | 'read-write', required
  - `resellerAccess` 'none' | 'read' | 'read-write', required
  - `productIds` string[], nullable: Only set for License custom attributes — the products whose licenses the attribute applies to.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `409`: Conflict
- `429`: Too Many Requests
- `500`: Server Error

---

[API](https://skmtc.dev/cryptlex/apis/cryptlex-web-api.md) - [All operations](https://skmtc.dev/cryptlex/apis/cryptlex-web-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cryptlex/apis/cryptlex-web-api/revisions/0088bcd57a3c?raw)
