410 Gone) or deprecated across PymtHouse versions. Follow the migration steps for your version to update your integration.
v0.3.5 – v0.3.7 breaking changes
Auth validate endpoint changed
BPP_VALIDATE_V2=1 in your environment to opt into the new POST form. The GET form is removed.
Builder API surface split
Routes are now grouped by audience. Usage API paths moved to the canonicalbuilder prefix:
/api/v1/apps/{clientId}/usage* paths remain as deprecated M2M-only aliases. Migrate to /api/v1/builder/apps/{clientId}/usage*.
Signer session exchange endpoint replaced
POST /api/v1/oidc/token is also accepted and resolves the app from the credential.
App-level keys replaced by per-user keys
app_<24hex>_<secret> so the remote-signer identity webhook can recover client_id from the credential. Personal keys remain bare pmth_<hex>.
Discovery pricing endpoint removed
Auto top-up removed
The per-user off-session-charge (auto top-up) design was built and retired mid-v0.3.7 development in favor of invoice-based collection. Do not build against anypymthouse_auto_topup metadata. Use Builder M2M Payments API → Overage gate for ongoing spend collection.
Subscription CRUD (v0.3.7)
Balance gate expiryTtl
The signer now receives expiryTtl explicitly. If you cached gate decisions, verify your cache TTL assumptions match the new value.
v0.2.x breaking changes
Hosted signer proxy removed (/api/signer/*)
Affected routes (all return 410 Gone):
Why it was removed
The hosted/api/signer/* HTTP proxy was a synchronous pass-through between your backend and the go-livepeer DMZ. It created a PymtHouse-hosted bottleneck on the signing hot path and was incompatible with direct DMZ deployments.
Migration
Step 1: Fetch the remote DMZ URL and webhook URL for your app:dmzUrl and webhookUrl.
Step 2: Use @pymthouse/builder-sdk/signer/server to proxy requests directly to the DMZ:
@livepeer/clearinghouse-identity-webhook:
POST /api/signer/device/exchange is not removed — it is an active SDK helper for device token → signer JWT exchange. Only the generate-live-payment, sign-orchestrator-info, sign-byoc-job, and discover-orchestrators proxy routes are gone.Synchronous signed-ticket ingest removed
Affected route:Why it was removed
Synchronous HTTP ingest on the signing hot path added latency and created a PymtHouse-side bottleneck. Production metering is now asynchronous: go-livepeer emitscreate_signed_ticket events to Kafka (livepeer-gateway-events); the OpenMeter collector consumes Kafka and writes CloudEvents to OpenMeter/Konnect.
Migration
No direct replacement for synchronous ingest from your backend. Metering is handled by the go-livepeer DMZ and Kafka collector automatically when signing requests are processed through the DMZ. Diagnostic-only ingest remains available at:Subscription CRUD removed (v0.2.x)
Affected routes:
Manage subscriptions through the plans CRUD API (dashboard session) or the OpenMeter billing checkout flow. See Plans and Allowances.
Deprecated credits alias
Affected routes:
The
credits endpoints re-export the allowances endpoints. The POST route has been removed from PymtHouse. Update all references:
App manifest routes deprecated
Affected routes:
The manifest API was used to configure discoverable pipeline/model combinations (subtractive exclusions). The signing hot path no longer enforces capability restrictions;
GET .../manifest returns a fail-open stub (capabilities: []) rather than a resolved list. Manage capability exclusions through the Plans UI instead.
SDK methods deprecated:
Deprecated discovery profiles
Affected routes:
Discovery profiles are a legacy mechanism for expressing pipeline/model capability sets on plans. They remain functional for backward compatibility but new integrations should use the Plans UI for network capability management.