The Apps API is in beta. Its endpoints and responses may change.
Prerequisites
- A personal API key. See Authentication to get one.
- An app you can edit. Most operations here require write access, not just read access.
App ID
Endpoints that act on a specific app include the app’s ID in the URL path asapp_id.
To get your app ID:
- Go to app.base44.com.
- Open your app in the app editor.
- Copy the app ID from the editor URL:
"https://app.base44.com/apps/<app_id>/editor".
Two independent providers
An app connects to Stripe, Wix Payments, or the legacy Payments by Wix integration. These are separate setups with separate credentials, so connecting one does not affect the others, and the analytics and dashboard-link endpoints take a provider-specific path rather than a shared one.Payments by Wix is a legacy integration. It supports existing connections only, and new installations are not supported.
Stripe: sandbox first, then live
A Stripe integration starts in a test sandbox and moves to live mode only when you configure or provision live keys.- Install Stripe integration sets up the sandbox and stores test credentials. It reuses an existing usable installation rather than creating a duplicate.
- Get Stripe onboarding link returns a link to claim the sandbox or resume unfinished activation, refreshing onboarding state as it does.
- Switch to live mode with either Configure live Stripe keys, which stores keys you already have from Stripe, or Provision live Stripe keys, which creates them after Stripe activation. Provisioning is limited to 5 requests per user per 60 seconds.
- Get Stripe integration status reports the current mode and setup state without returning any API keys.
The Stripe catalog
The product and price endpoints read and write the catalog of whichever Stripe account the app’s stored credentials select. Live keys reach the live catalog, and test keys reach the test catalog, so two apps sharing one Stripe account share its catalog too. List Stripe products and List Stripe prices each return a single batch of up to 100 records, with no cursor to retrieve the rest. There’s no way to page through a catalog larger than the batch you request. Updates only touch the fields you send. Update Stripe product and Update Stripe price leave omitted or null fields unchanged, and an empty update body leaves the record as it was. A price’s amount, currency, and recurring schedule can’t be changed after creation. Creating a product or price is not idempotent: retrying a create request can leave you with a duplicate.Inbound payment webhooks
Base44 registers the webhook endpoints under Webhooks with the payment provider for you, and the provider is the only caller. You can’t invoke them for your own app or repoint them. They’re documented so you can recognize the traffic and read the acknowledgements they return.
status of processed, acknowledged, ignored, or (Stripe only) logged, plus an optional reason or action explaining it. These endpoints authenticate the provider’s signature instead of a Base44 API key, so they carry no api_key requirement.
A verified event that fails processing returns an error so the provider retries it. An event Base44 can’t attribute to an app, such as one missing the app ID it expects back, is acknowledged as ignored rather than failed.
Payment analytics
Get payment analytics is the revenue summary: totals and a daily breakdown, both filterable by currency and window (7, 30, or 90 days, or an explicitstart_date/end_date pair sent together). Every money field is in the currency’s smallest unit, so 2500 in USD is $25.00.
Get recent payment transactions and Get top payment customers return bounded results (up to 10 rows) with no cursor for more, and they include customer names and emails when Stripe enrichment succeeds. Both endpoints read from an analytics store that can lag behind the provider, so a payment that just happened may not show up immediately.