---
title: "Create Clinic Portal"
method: POST
path: "/clinic/billing/portal"
tags: ["clinic", "billing"]
---

# Create Clinic Portal

`POST /clinic/billing/portal`

## Request

- Base URL: `https://api.projectindi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.projectindi.com/clinic/billing/portal`
- Auth: none declared

Stripe's customer portal for the clinic (§2.3).

400 when the clinic has no Stripe customer - ops-set and migrated clinics have
none, and the account page hides the button for exactly that case (§3.3), the
same contract the parent portal has at `subscription/routes.py:883`.

No fallback to Stripe's dashboard-default configuration. The default may allow
the owner to edit her subscription's quantity, and seat quantity has exactly
one writer (§5.2); a portal that can write it is a second one.

## Response `200`

Successful Response

- ClinicPortalResponse
  - `url` string, required

---

[API](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles.md) - [All operations](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles/llms.txt) - [OpenAPI document](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles/revisions/25a7813e21fd?raw)
