Users never register twice
A person who already has a HarperHarbor account signs in to your app with one tap. Their balance comes with them.
Open API v1 · Beta
Users sign in once and pay once. Your app ships features — not billing, identity or model plumbing. Built for companion, virtual-being and interactive-story products.
| 09:41 | Your app · chat.play | -12 |
| 09:38 | Another app · chat.play | -8 |
| 09:12 | Your app · chat.play | -21 |
We built this to run our own products first. Now it is open.
The same account, wallet and model lanes that power our own chat stage and community tavern are what you integrate. No separate "partner" tier.
A person who already has a HarperHarbor account signs in to your app with one tap. Their balance comes with them.
Top-ups, refunds, disputes and receipts are the platform's problem. Your app reads a balance and makes calls.
Every model sits behind a named lane with automatic failover. When an upstream degrades, traffic moves and the user is told.
Six things every companion product needs and none should build twice.
One account, one prepaid balance, shared across apps. Apps are groupings of users, never owners of them.
Card play, greetings, author display rules and memory, exposed as services rather than a single product's chat screen.
Several upstreams behind each model, published as stable codenames. Routing, health probes and failover are ours to run.
Fixed roles, app-scoped queries enforced server-side, upstream names never exposed, every admin action audited.
Every call is an event with user, app, service and lane. Daily rollups reconcile against the wallet, and the delta must be zero.
A frozen v1 contract with OAuth 2.1 for people, and read-only MCP tools for AI clients — same service layer, same rules.
Attention first, then numbers: lane health, quota pressure and reconciliation on one screen. What you see here is the same console your team will use.

Register once, exchange a code, make a call. The contract is frozen at v1 and any language works.
AI clients can also read usage and lane status over MCP with the same token.
Open the quickstart# 1. exchange the authorization code (PKCE)
curl -X POST https://api.harperharbor.com/oauth/token \
-d grant_type=authorization_code -d code=$CODE \
-d client_id=$CLIENT_ID -d redirect_uri=$REDIRECT_URI \
-d code_verifier=$VERIFIER -d resource=https://api.harperharbor.com/open/v1
# 2. who is signed in
curl https://api.harperharbor.com/open/v1/me \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "language: en"Users prepay points. Apps integrate for free. Rates are published per model and lane before anyone spends a point.
Points do not expire. Every call debits the user's single wallet, whichever app made it.
No seat fee, no revenue share, no minimum. The only limit is a daily quota that protects the platform.
Each model-and-lane price is shown in the console and inside the product at the moment of use.
Never balances, never activity from other apps. The scope is enforced in the query, not in the UI.
Who, when, what and through which channel — console, API, SSO or cron. Retained 180 days.
A user can revoke any app in one click; its tokens stop working immediately.
Card play is the first service, but the product is the layer underneath: shared identity, one wallet, model lanes, metering and boundaries. Any companion-style experience can sit on it.
Then this is not for you yet. Apps on HarperHarbor do not charge or settle; that is the trade for never touching money. Settlement is on the roadmap, not a promise.
We publish lanes, not vendor names. A lane is a stable codename with live health and a price; behind it we may run several upstreams and move traffic between them.
Apps are onboarded by the platform team in phase 1. Tell us what you are building.
Request access