---
title: "Grant an entitlement to a user"
method: POST
path: "/users/{user_id}/entitlements"
tags: ["Entitlements"]
---

# Grant an entitlement to a user

`POST /users/{user_id}/entitlements`

Grants an entitlement definition to a specific user, optionally with an expiry time. Attempting to extend or modify a user entitlement whose source is a paid purchase (store or Stripe) returns `422 paid_entitlement`.

## Path parameters

- `user_id` string, required

## Request body

- V4GrantEntitlementRequest
  - `entitlement_id` string, required — Identifier of the entitlement definition to grant.
  - `expires_at` integer — Unix timestamp (seconds) when the entitlement expires. Use `0` (or omit the field) to grant the entitlement with no expiry. Negative values and past timestamps are rejected with 400.

## Response `201`

Entitlement granted.

- V4UserEntitlement
  - `object` 'user_entitlement', required
  - `id` string, required — Unique entitlement identifier.
  - `url` string, required — Canonical API path.
  - `is_active` boolean, required — Whether the entitlement is currently active.
  - `source` string, required — Source of the entitlement grant (open enum).
  - `started_at` string, date-time, nullable — Timestamp when the entitlement became active (ISO 8601 UTC).
  - `expires_at` string, date-time, nullable — Timestamp when the entitlement expires (ISO 8601 UTC). Null if no expiry.
  - `product` V4UserEntitlementProduct
    - `product_id` string, required — Product identifier.
    - `subscription` V4UserEntitlementSubscription
      - `renew_state` 'will_renew' | 'canceled' | 'billing_issue', required — Current renewal state. Subscription is omitted entirely for non-renewable products.
      - `current_period_type` 'normal' | 'trial' | 'intro', required — Current billing period type.

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — User or entitlement not found
- `409` — Entitlement already granted
- `415` — Unsupported Content-Type
- `422` — Unprocessable entity
- `500` — Internal error

---

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