---
title: "Get Entitlement"
method: GET
path: "/api/agents/{agent_id}/entitlement"
tags: ["agent-entitlements"]
---

# Get Entitlement

`GET /api/agents/{agent_id}/entitlement`

## Request

- Base URL: `https://app.thinqos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.thinqos.com/api/agents/{agent_id}/entitlement`
- Auth: none declared

What access the calling identity currently holds for a thinqOS agent: whether the agent is
monetized at all, whether you are entitled to run it, your entitlement state (trialing / active
/ past_due / canceled / expired), trial runs used vs granted, the period end, and the current offer with its price when the agent
is monetized. Readable by a prospective buyer, not only by the owner. Read-only. Use
thinqos_action with resource="agents" and action="entitlement_trial" to start a free
trial, or action="entitlement_subscribe" to buy. Confirm the displayed offer first.

## Path parameters

- `agent_id` string, uuid, required

## Headers

- `x-impersonate-identity-id` string, nullable

## Response `200`

Successful Response

- EntitlementStatusOut: Held plan/trial terms (or current terms before acquisition), plus the current purchasable ``offer``. Confirm purchases using offer.plan_id/plan_version.
  - `agent_identity_id` string, uuid, required
  - `monetized` boolean, required
  - `entitled` boolean, required
  - `state` string, nullable, required
  - `plan_id` string, uuid, nullable, required
  - `plan_version` integer, nullable, required
  - `trial_kind` string, nullable, required
  - `trial_available` boolean, required
  - `trial_runs_used` integer, required
  - `trial_runs_total` integer, nullable, required
  - `trial_ends_at` string, date-time, nullable, required
  - `current_period_end` string, date-time, nullable, required
  - `cancel_at_period_end` boolean, required
  - `offer` AgentOfferOut, required: Mirrors ``AgentOffer.as_dict()`` field for field. Money fields are strings, not ``Decimal``: ``as_dict`` already rendered them through the shared ``_money`` helper (strip NUMERIC padding, never quantize away a real non-zero digit), and re-parsing them here would reintroduce the padding this response is meant to be free of. Keeping the same shape means the offer a buyer reads from this endpoint is byte-identical to the offer embedded in a 402 refusal.
    - `agent_identity_id` string, uuid, required
    - `agent_name` string, nullable, required
    - `plan_id` string, uuid, required
    - `plan_version` integer, required
    - `model` string, required
    - `per_use_price_usd` string, nullable, required
    - `sub_price_usd_month` string, nullable, required
    - `included_units_month` integer, nullable, required
    - `overage_policy` string, nullable, required
    - `overage_price_usd` string, nullable, required
    - `margin_multiplier` string, nullable, required
    - `min_monthly_usd` string, nullable, required
    - `currency` string, required
    - `trial_kind` string, required
    - `trial_runs` integer, nullable, required
    - `trial_days` integer, nullable, required
    - `trial_available` boolean, required
    - `throttle_per_min` integer, nullable, required
    - `throttle_per_day` integer, nullable, required
    - `purchase_url` string, required
    - `reason` string, required

## Other responses

- `422`: Validation Error

---

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