---
title: "Get subscription information"
method: GET
path: "/billing/subscription/"
tags: ["billing"]
---

# Get subscription information

`GET /billing/subscription/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/billing/subscription/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Get the subscription information for the organization.

## Response `200`

Successful Response

- SubscriptionRead: Response schema for subscription information.
  - `billing_email` string, email, nullable, required: The billing email address for invoices and billing alerts.
  - `billing_interval` 'month' | 'year', nullable, required: The billing interval of the subscription. None for free plans.
  - `cancel_at` string, date-time, nullable: The date when the subscription is scheduled to be canceled. If set, the subscription will be canceled at this time. None if the subscription is not scheduled for cancellation.
  - `credit_quantity` integer, required: The monthly credit allowance the subscription's own price grants.
  - `credit_tier_key` string, nullable, required: The selected credit volume (e.g. 'team_tier_20k'). None for free plans.
  - `current_period_end` string, date-time, nullable, required: The end of the current Stripe billing period. None for free plans: credit period truth lives on the credit balance.
  - `current_period_start` string, date-time, nullable, required: The start of the current Stripe billing period. None for free plans: credit period truth lives on the credit balance.
  - `current_price_decimal` string, nullable, required: What the subscription actually costs per `billing_interval` unit, in cents, read off its own Stripe price. None for free plans. Prefer this over recomputing from the catalog: it stays right for a grandfathered price or a volume the catalog has since retired.
  - `data_retention` string, duration, required: Data retention period.
  - `included_credits` integer, required: Credits granted each period (the period allowance).
  - `is_product_limited` boolean, required: Whether the product is currently limited due to usage or payment issues. When True, the organization cannot perform billable actions. This happens in two scenarios: 1. The credit balance is exhausted. 2. The subscription status is UNPAID (payment failed or cancelled).
  - `max_integrations` integer, required: Maximum number of integrations allowed. 0 means unlimited.
  - `max_rows_per_table` integer, required: Maximum number of rows per table. 0 means unlimited.
  - `max_tables` integer, required: Maximum number of tables allowed. 0 means unlimited.
  - `payment_method` PaymentMethodReadSchema, required: Displayable summary of the organization's default payment card.
    - `brand` string, required: The card brand, e.g. 'visa'.
    - `exp_month` integer, required: The card expiry month (1-12).
    - `exp_year` integer, required: The four-digit card expiry year.
    - `last4` string, required: The last four digits of the card number.
  - `product_name` string, required: The product name for the subscription.
  - `product_type` 'free_plan' | 'team_plan' | 'pro_plan' | 'enterprise_plan', required: The tier of a product in Stripe. Declared cheapest-first. Free and Enterprise never touch Stripe: Free is free, Enterprise is sales-led and has no self-serve price. A subscription's tier is recovered from its price's ``product_tier`` metadata, never by reverse-parsing a Stripe product name: a product is named for the plan AND the credit volume it sells ("Team Plan (10,000 credits)"), so the name has not round-tripped to a tier since prices collapsed to one per plan+volume.
  - `seats` integer, required: Number of seats included. 0 means unlimited.
  - `status` 'active' | 'incomplete_payment' | 'past_due' | 'unpaid', required: The status of a subscription for an organization. Active is the good state for all types of products. All other states are transitional states. When a subscription is cancelled, it becomes Free plan. We treat cancelled Stripe subscriptions as non-existent. Customer won't see any cancelled subscriptions on billing portal. There is a long transition from: Active -> Past Due -> Unpaid -> Free

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
