---
title: "Get current organization"
method: GET
path: "/api/v1/organizations/current"
tags: ["Organizations", "internal"]
---

# Get current organization

`GET /api/v1/organizations/current`

## Request

- Base URL: `https://app.scanopy.net`
- URL: `https://app.scanopy.net/api/v1/organizations/current`
- Auth: API key in cookie `session_id`

The organization of the signed-in user.

## Response `200`

Organization details

- ApiResponseOrganization: Envelope for a successful response. Failures are sent with a non-2xx status and an `ApiErrorResponse` body instead.
  - `data` object: The result payload. Omitted on failure.
    - `air_gapped_key_current_until` string, date-time, nullable: The date this org's air-gapped key stays current until, or `None` when it holds an online key or that date has passed. Computed on read from `license_key_type` and `license_paid_through`, never stored. It carries the one fact the UI needs, that the org cannot change plan yet, without exposing `license_key_type`, which stays internal. See [`Organization::air_gapped_key_current_until`].
    - `bills_by_invoice` boolean: Whether the subscription is billed by sent invoice, against a purchase order. Such an org has no card, so this is the other half of "can this org pay?" — see [`Organization::can_pay`].
    - `discount_save_offer_active_until` string, date-time, nullable: When the currently-active save-offer discount window expires. The BillingTab chip renders only while `> now()`; expiry needs no cleanup job.
    - `discount_save_offer_percent_off` integer, nullable: Percent off the currently-active save-offer discount applies. Read live by the BillingTab chip so a future coupon swap renders the new value without a code change.
    - `has_payment_method` boolean: Whether a payment method is on file.
    - `last_discount_at` string, date-time, nullable: Most recent save-offer-discount application. NULL = never. Drives the once-per-org eligibility check in `apply_discount_save_offer` and hides the Discount panel on the cancel modal for any return visit.
    - `last_downgrade_at` string, date-time, nullable: Most recent downgrade event timestamp (paid→cheaper, or paid→cancelled); powers the 14-day downgrade banner.
    - `last_downgrade_from_plan` union
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Community', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Free', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Starter', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Pro', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Team', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Business', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Enterprise', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Demo', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'CommercialSelfHosted', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'SelfHostedStandard', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'SelfHostedPlus', required
    - `last_paused_at` string, date-time, nullable: Most recent `Paused` billing event's timestamp; powers the 6-month rolling pause cooldown.
    - `license_checkin_at` string, date-time, nullable: Last time a self-hosted server fetched an entitlement with this org's online license key.
    - `license_paid_through` string, date-time, nullable: When the org's self-hosted license is paid through: the trial end during a self-hosted trial, then the end of the last paid invoice's service period. While a sent invoice is unpaid, its due date plus a grace window. License keys and entitlements expire 7 days later.
    - `name` string, required: Human-facing name for this organization.
    - `next_renewal_at` string, date-time, nullable: Stripe `subscription.items.data[0].current_period_end`, mirrored on every billing event that re-anchors the period (checkout, trial start / end, plan change, renewal, pause/resume, reactivate). Cleared by SubscriptionCancelled. Powers the "Next renewal on …" line in BillingPlanModal; the UI interprets the value based on plan_status (hide for paused/cancelled/past_due where the stored value can be stale or meaningless).
    - `onboarding` OnboardingOperationDiscriminants[], required: Progress through first-run setup.
    - `plan` union, required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Community', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Free', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Starter', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Pro', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Team', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Business', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Enterprise', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'Demo', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'CommercialSelfHosted', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'SelfHostedStandard', required
      - object
        - `base_cents` integer, required: Fixed charge per billing period, in cents.
        - `host_cents` integer, nullable: Charge per host beyond `included_hosts`, in cents.
        - `included_hosts` integer, nullable: Hosts included before per-host charges apply.
        - `included_orgs` integer, nullable: Organizations allowed on one self-hosted server instance. `None` = unlimited. Only enforced for self-hosted deployments (see `provision_user`); cloud stays multi-tenant regardless. Defaulted so existing stored plan JSON deserializes unchanged.
        - `included_seats` integer, nullable: Seats included before per-seat charges apply.
        - `included_sites` integer, nullable: Sites included before per-site charges apply.
        - `rate` 'Month' | 'Year', required
        - `seat_cents` integer, nullable: Charge per seat beyond `included_seats`, in cents.
        - `site_cents` integer, nullable: Charge per site beyond `included_sites`, in cents. Plans stored before the site rename (org rows, Stripe subscription metadata) say `network_cents`.
        - `trial_days` integer, required: Length of the free trial, in days. Zero when the plan has no trial.
        - `type` 'SelfHostedPlus', required
    - `plan_status` 'active' | 'trialing' | 'past_due' | 'paused' | 'pending_cancellation' | 'cancelled', required: Derived subscription status — our domain enum, never Stripe's raw status. Stripe webhook events map to typed `BillingOperation` variants at reception (in `billing/service.rs`); each variant deterministically implies a `PlanStatus` for downstream feature gates via `BillingOperation::implied_status`. `FromStr` is derived (via strum) so the storage layer can round-trip a snake_case `text` column back into the typed value; `ToSchema` exposes the enum as a stricter string union in the generated OpenAPI schema so the frontend's `org.plan_status === 'paused'` comparisons are compile-checked against the canonical variant list.
    - `trial_end_date` string, date-time, nullable: When the free trial ends, if one is running.
    - `trial_extended_used` boolean: Whether the org has used its one-time trial-extend perk.
    - `use_case` 'homelab' | 'internal_it' | 'msp' | 'other'
    - `created_at` string, date-time, required: When this record was first created.
    - `id` string, uuid, required: Server-assigned unique identifier.
    - `updated_at` string, date-time, required: When this record was last modified.
  - `error` string, nullable: Not sent on a successful response. Failure messages arrive in an `ApiErrorResponse`.
  - `meta` ApiMeta, required: API metadata included in all responses
    - `api_version` integer, required: API version (integer, increments on breaking changes)
    - `server_version` string, required: Server version (semver)
  - `success` boolean, required: Always `true` on a successful response.

## Other responses

- `404`: Organization not found

## Changes

- **2026-10-26** `c9d9d46d1ae8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/scanopy/apis/scanopy-api/changes/api/v1/organizations/current/get.md)

---

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