---
title: "The account behind this key, and the webhook signing secret"
method: GET
path: "/v1/account"
tags: ["Account"]
---

# The account behind this key, and the webhook signing secret

`GET /v1/account`

## Request

- Base URL: `https://api.galleyrender.com`
- URL: `https://api.galleyrender.com/v1/account`
- Auth: HTTP bearer

`webhook_secret` is returned **once**, on the first call that has one to give; after that it is `null` and only `webhook_secret_prefix` identifies which secret is in use. Store it when you get it. If you lose it, rotate.

## Response `200`

The account.

- Account
  - `object` 'account', required
  - `id` string, required
  - `name` string
  - `email` string, nullable: Null until the address is verified.
  - `plan` 'free' | 'solo' | 'starter' | 'growth' | 'scale', required
  - `status` 'active' | 'suspended', required
  - `verified` boolean
  - `trial` boolean
  - `webhook_secret` string, nullable: Shown once, on the first call. Null afterwards — rotate if you no longer have it.
  - `webhook_secret_prefix` string: Identifies the stored secret without revealing it.
  - `webhook_secret_shown_at` string, date-time, nullable
  - `webhook_signature_header` 'X-Galley-Signature'
  - `webhook_signature_scheme` string
  - `rate_limit` object: Renders this account's keys may start per window. Counted per API key.
    - `renders_per_minute` integer
    - `window_seconds` integer
  - `limits` object
    - `free_renders_per_month` integer
    - `free_renders_used` integer, nullable
    - `free_renders_remaining` integer, nullable
    - `trial_units_credited` integer
    - `monthly_spend_cap_usd` number
  - `subscription` Subscription: What Stripe last said about this account's subscription. Written only by the webhook.
    - `plan` 'free' | 'solo' | 'starter' | 'growth' | 'scale'
    - `plan_name` string
    - `interval` 'month' | 'year' | 'null', nullable
    - `status` string, nullable: Stripe's own status, unchanged: `active`, `trialing`, `past_due`, `unpaid`, `canceled`, `incomplete`, `incomplete_expired`, `paused`. Null on an account that has never subscribed.
    - `included_units` integer: The plan's included quantity each billing period, as sold — the first tier of its Stripe price, counted in meter units (`meter_units`: a PDF page is 2.5, an image 1). Monthly Solo's 500 is 200 PDF pages or 500 images; an annual plan's period is a year, so it includes twelve times the monthly figure. On Free it is the monthly allowance, one per PDF page or image.
    - `retention_days` integer: Days a render is kept, as sold: 7 on Free and the keyless trial, 30 on Solo and Starter, 90 on Growth and Scale.
    - `current_period_end` string, date-time, nullable
    - `cancel_at_period_end` boolean: Cancelled in the portal; drops to Free at `current_period_end`.
    - `has_stripe_customer` boolean
    - `features` object
      - `webhooks` boolean
      - `cloud_delivery` boolean
  - `billing` object: How to change the plan from here. `upgrade` and `manage` are POSTs that return a URL to open — but they are present **only when `available` is true**. On a deployment with no Stripe configured both endpoints refuse with `billing_unavailable` (503), so offering the call and then refusing it would send an agent to a dead end. Check `available` first.
    - `available` boolean, required: Whether this deployment can produce a Stripe checkout or portal link at all.
    - `upgrade` string: Present only when `available` is true.
    - `manage` string: Present only when `available` is true.
    - `unavailable_reason` string: Present only when `available` is false: why, in one sentence.
    - `next_step` string: Present only when `available` is false: what to tell the person instead.
    - `pricing_url` string
    - `dashboard_url` string

## Other responses

- `401`: `authentication_error`.

---

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