Build an AI API Site You Can Monetize: Customer Onboarding and Key Delivery
Disclosure: This article was prepared for Ace Data Cloud's white-label promotion program, with AI-assisted drafting and human-directed source selection. It is an independent technical rewrite of the linked public documen
Disclosure: This article was prepared for Ace Data Cloud's white-label promotion program, with AI-assisted drafting and human-directed source selection. It is an independent technical rewrite of the linked public documentation, not a claim that I operated a customer site or earned revenue from it.
A branded AI API portal is useful only when a customer can move from βI found the serviceβ to βmy application made a traceable requestβ without receiving a shared credential in chat.
Ace Data Cloud's White Label API Platform packages the customer-facing parts of that journey: your site name and logo, service catalog, channel pricing, documentation, support details, and an optional custom domain. It is a developer portal over the platform's servicesβnot a separately delivered gateway or an isolated tenant identity system.
This tutorial focuses on one operationally important workflow: onboarding a customer with their own account and API key, then validating a minimal request and its usage record. It deliberately does not create a site, change DNS, open an account for a customer, or make a purchase.
1. Prepare four handoff values
Before inviting anyone, prepare these values in a private onboarding template:
PORTAL_URL=https://developers.example.com
API_BASE_URL=https://api.example.com
SERVICE_NAME=<public service or model name>
DOCS_URL=https://developers.example.com/docs/<service>
Use placeholders in public examples. Obtain any real CNAME target from your own console rather than copying one from a tutorial or another tenant.
The distinction between the first two URLs matters:
| Value | Purpose | Common mistake |
|---|---|---|
| Portal URL | Registration, login, catalog, docs, and console | Sending API traffic here |
| API base URL | Programmatic requests | Giving customers the documentation hostname |
| Service/model | Public identifier required by the service docs | Replacing it with an internal marketing nickname |
| Docs URL | Exact integration instructions | Linking only to the homepage |
2. Make the portal understandable before adding breadth
In Site Management, a portal owner can configure the visible brand and choose which services to present. The temptation is to expose every available AI capability immediately. A better launch strategy is to select a small catalog your team can explain and support.
For each listed service, provide:
- a plain-English use case;
- the current customer price or a clear route to it;
- one supported integration method;
- a minimal request example;
- expected synchronous or asynchronous behavior;
- a support path that never asks for a full API key.
Creating the basic portal does not make all AI models free. Paid calls, customer purchases, and the site's commercial configuration remain separate from initial site setup.
3. Register through the branded portal
Send the customer to PORTAL_URL, not to an unrelated login page. After authentication, verify that the browser returns to the branded portal.
This is also where an architectural boundary must be explicit: white-label sites use a shared identity system. They do not create an independent user database for every reseller. An existing account can log in, while a genuinely new account is required if you are testing first-registration attribution.
Portal owners can configure default or forced attribution rules. βForcedβ can override referral links, invitation cookies, and defaults, so it should be enabled only when that matches the business policy. Do not repeatedly change production attribution settings merely to test them.
4. Let the customer create a separate key
The customerβnot the portal operatorβshould open the branded console, go to the applications area, select the relevant application, and open credential management. In the current documented flow, the useful routes are:
/console/applications
/console/credentials
From the credential page, the customer creates a named key such as onboarding-smoke-test. Where the UI supports it, they can set an expiry, usage limit, and allowed APIs.
Treat catalog visibility and credential authorization as different controls. Hiding a service from the catalog does not necessarily prevent a valid unrestricted key from calling it. Test the actual key scope.
Operational rules are straightforward:
- use different keys for customers, projects, and environments;
- store keys in server-side secret configuration;
- never embed them in browser code or public repositories;
- never send a full key to support;
- delete or disable a temporary test key after acceptance.
A white-label operator should not distribute the operator's own key, and white-label configuration alone does not grant cross-account control over customer credentials.
5. Run the smallest documented request
Copy the minimal example from the selected service's documentation. Replace only the documented base URL, key, model/service identifier, and required parameters.
A generic shell shape looks like thisβit is intentionally not a claim about a universal endpoint or SDK:
export API_BASE_URL="https://api.example.com"
export CUSTOMER_API_KEY="<customer-owned-key>"
# Use the exact path, authentication header, and JSON schema
# shown in the selected service's documentation.
curl "$API_BASE_URL/<documented-path>" \
-H "Authorization: Bearer $CUSTOMER_API_KEY" \
-H "Content-Type: application/json" \
-d '<documented-minimal-payload>'
Before submission, check the displayed price and avoid a batch, long-video, or otherwise expensive job. For asynchronous media APIs, receiving a task ID means βaccepted,β not βcompletedβ; continue polling exactly as that service's documentation specifies.
6. Define acceptance with two records
Do not call onboarding complete merely because a response appeared in the terminal. The practical acceptance test is:
- one minimal request reaches a terminal success state; and
- one corresponding usage record appears in the customer's console with the expected service, time, consumption, and balance change.
If it fails, collect the timestamp, path, status code, and a safe request identifier. Strip authorization headers before sharing diagnostics.
Commercial validation is a separate workflow. Revenue is tied to eligible completed purchases and the current distribution rulesβnot to every API call. Channel markup affects the customer-facing price but does not imply that the entire difference belongs to the site operator. Refunds, risk controls, order state, attribution, settlement timing, and any upstream distribution relationship can affect the final record.
That separation gives you three auditable layers: delivery (request and usage), commerce (purchase and balance), and distribution (customer attribution and eligible earnings).
Launch checklist
Before opening the portal to real customers, verify:
- [ ] brand, logo, support contact, terms, and privacy pages;
- [ ] portal and API hostnames are not confused;
- [ ] a small, documented service catalog with current prices;
- [ ] registration returns to the branded portal;
- [ ] customers create and retain their own scoped keys;
- [ ] a minimal request matches a usage record;
- [ ] async jobs are checked to completion;
- [ ] test credentials are revoked after validation;
- [ ] purchase and distribution records are reconciled separately from usage.
The business opportunity is operational: attract suitable customers, support valid purchases, and maintain reliable integrations. The portal reduces storefront and onboarding work; it does not replace acquisition, support, or compliance.
Sources and next steps
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.