Build your reseller integration

From first customer to a complete reseller business.

Manage customer accounts, discover live products, fund your wholesale wallet, and provide setup and support through one authenticated API. This guide covers the complete published reseller interface and explains how your customers connect to the coding API.

No card or opening deposit required. Complete your profile and verify your email before using the reseller portal. One reseller account per person is allowed. Existing device, network and account checks remain in force. Fund your wallet with PayPal or Paymento crypto when you choose to sell paid packages.

1. Choose the right API and account

Reseller management

https://myapi.world/api/reseller/v1
Use your reseller credential to manage your customers and wholesale operations.

Customer coding

https://api.myapi.world/v1
Use the individual customer's credential for inference and model discovery.

Human account setup

Reseller enrollment and the portal handle email verification, profile completion and integration key administration.

Begin by registering accurate contact information and choosing your own password. Open the confirmation email and explicitly confirm it; merely opening a verification URL does not activate an account. Do not create another registration if you lose the confirmation message. Retry the existing registration or contact support. Device and IP reuse can block registration, including on a shared office network. Support can review a legitimate conflict; repeatedly changing details is not a supported workaround.

  1. Verify your reseller email and sign in to the portal.
  2. Create a dedicated integration key with the reseller permission.
  3. Read GET /account, GET /products and GET /models.
  4. Run a non-billable sandbox check before enabling purchases.
  5. Fund your wholesale wallet only when you choose to issue paid packages.
  6. Save each customer’s returned issued-record ID alongside your own order ID.

The public GET https://myapi.world/api discovery endpoint identifies the API version, documentation and customer API base. Other reseller management operations require authentication. The examples below use relative paths under the reseller API base unless a complete URL is shown.

2. Authentication and safe key handling

Send Authorization: Bearer YOUR_RESELLER_API_KEY on every authenticated request. An active reseller System Token is accepted, but a separate User API Key with the reseller permission is recommended for integrations. A regular customer account does not become a reseller merely by creating a key, and a dashboard browser session token is not a management API credential.

curl --fail-with-body 'https://myapi.world/api/reseller/v1/account' \
  -H "Authorization: Bearer $RESELLER_API_KEY" \
  -H 'Accept: application/json'

The account response includes account and reseller objects. Check the returned wholesale balance, account status, current margin, minimum top-up, preferences and trial inventory rather than keeping those values permanently in your application. Money values ending in Usd are decimal USD amounts; values ending in Cents are integer cents. Use decimal arithmetic for money.

Key administration belongs to the portal

In the portal’s API Keys section, you can create, replace or revoke a separate key and configure its supported expiration and IP restrictions. Key replacement invalidates the previous value, so update every application using it. Limited reseller keys cannot administer arbitrary keys, change account passwords, grant themselves administrator rights, or operate on another reseller’s customers. Do not share your reseller credential with end customers.

Keep integration secrets on your backend, outside source control and browser code. The documentation does not request, save or insert a real key. Avoid tokens in query strings: they can be retained in browser history, access logs and referral headers. Customer detail, setup and migration responses can contain a customer System Token; protect these responses as credentials and send them only through an authorized delivery channel.

A request is checked against the active account, key permission, expiry and applicable IP allowlist. Reseller ownership is enforced again on individual customer, domain, notification and funding-order operations. An inaccessible ID does not grant access even if it was obtained from a URL or another account.

3. Discover models, products and current prices

GET /models returns public model IDs, display names, capability labels, supported endpoint paths, reasoning effort choices and client availability. It excludes private routing configuration. Use each returned ID exactly; display labels are not interchangeable with API IDs. A model may require a supported coding client even when it appears in the catalogue. Discovery does not override that requirement or create an entitlement.

GET /products is the authoritative list of products your reseller integration can currently issue. It includes the reseller price and capacity where applicable. Never assume that a package shown in an old example is still on sale. Read the catalogue before presenting a choice and handle a later unavailable-product error: availability can change between your catalogue request and purchase.

GET /catalogue adds the broader customer-facing model, membership, subscriber Unlimited and fixed-credit catalogue. Its products list contains enabled public plans and their billing options; availability still depends on the selected customer’s eligibility and current stock. Its creditPackages describe retail credit packs. These retail prices are different from the wholesale issue prices returned by /products.

OperationUse it forDoes it purchase?
GET /modelsPublic model choices and compatibility metadata.No
GET /productsPackages eligible for reseller issuance or eligible customer top-ups.No
GET /catalogueBroader retail memberships, subscriber bundles and credit choices.No
POST /customersCreate a customer from a currently issuable package.Debits wholesale funds for paid packages; consumes inventory for an eligible trial.

Memberships and subscriber Unlimited packages retain the customer checkout and eligibility workflow. Listing them does not authorize a reseller to manufacture a paid membership or bypass a subscriber requirement. Direct customers can choose the current plan at Subscribe; use their own account for checkout and billing consent.

4. Fund the reseller wallet with PayPal or crypto

Enrollment is free. Wholesale wallet funding is a separate, explicit purchase. Create a checkout with POST /wallet/checkout, passing amountUsd and paymentMethod. Choose paypal or paymento; PayPal is the default. The currently enforced deposit range is $50–$5,000, with the minimum also reported in GET /account. This minimum applies to optional wallet funding, not registration.

curl --fail-with-body 'https://myapi.world/api/reseller/v1/wallet/checkout' \
  -H "Authorization: Bearer $RESELLER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"amountUsd":"50.00","paymentMethod":"paypal"}'

Store the returned provider order identifier and redirect the payer to the returned checkoutUrl. Do not construct a payment URL from an email address or calculate an on-chain destination yourself. Checkout creation does not mean payment succeeded. Do not issue a paid customer package until verified funds are available in your reseller wallet.

PayPal approval and confirmation

The payer reviews and approves the amount on PayPal. Then send the same saved order ID to POST /wallet/paypal/confirm. The service verifies ownership, expected amount, currency and receiver before crediting. It only captures an order that the payer already approved. A return to your page alone is not proof of payment.

curl --fail-with-body 'https://myapi.world/api/reseller/v1/wallet/paypal/confirm' \
  -H "Authorization: Bearer $RESELLER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"orderId":"YOUR_PAYPAL_ORDER_ID"}'

The response includes paymentMethod, orderId, credited and alreadyCredited. A repeated confirmation cannot add the same deposit twice. If approval is pending, retain the order and let the payer finish. If a response is lost, confirm that same order instead of creating and paying a replacement.

Paymento cryptocurrency confirmation

Create the same checkout using "paymentMethod":"paymento". Send exactly the asset, network and amount displayed on the secure checkout before its deadline. Blockchain confirmation can take time. Read the latest stored status with GET /wallet/paymento/orders/{order_id}; request a fresh provider verification with POST /wallet/paymento/confirm and {"orderId":"YOUR_CRYPTO_ORDER_ID"}.

The status GET is read-only and does not settle funds. Confirmation returns the sanitized order plus credited, alreadyCredited and cashWallet indicators. A pending result is not a failure and must not trigger another payment automatically. If an amount is routed to Cash Wallet under the underpayment rules, it is not necessarily wholesale balance; check cashWallet, the order’s status and the current account balance before provisioning.

Wholesale deposits represent actual paid dollars. Product-specific crypto discounts do not increase a wholesale deposit or reduce the amount required for it. Paymento credentials belong to the service and are never supplied to reseller integrations. Provider callbacks are verified by the service; your application must not fabricate callback payloads or treat a client-supplied success flag as settlement.

POST /wallet/confirm remains only for valid historical card receipts and is deprecated for new integrations. Use the explicit PayPal or Paymento confirmation routes for all new deposits.

5. Create, deliver and top up customer accounts

Create a customer

Choose an available packageId from GET /products. Submit it to POST /customers with a stable Idempotency-Key for that business order. Supply the recipient’s accurate email. Optional fields include a preferred username, first and last name, a spending-alert percentage and an owned active custom-domain ID. Keep personal information in the JSON body, never in a reusable idempotency key.

curl --fail-with-body 'https://myapi.world/api/reseller/v1/customers' \
  -H "Authorization: Bearer $RESELLER_API_KEY" \
  -H 'Idempotency-Key: customer-order-10001' \
  -H 'Content-Type: application/json' \
  -d '{"packageId":"credit-10","email":"customer@example.com", 
       "firstName":"Alex","lastName":"Example","spendingAlertPercent":80}'

This example package ID is illustrative: first confirm it appears in the live issue catalogue. Paid issuance checks and debits your wholesale balance under the normal transaction locks. The response contains the issued customer and delivery information according to the package type. Keep the issued-record ID for subsequent operations; it is not the recipient’s underlying user ID. Trial invitation responses intentionally differ from fully active paid-account delivery.

Find and retrieve customers

GET /customers?q=alex&limit=50&offset=0 searches only your issued customers by username, email or package. The response includes customers, total, limit and offset. The effective page size is capped at 200. List entries omit the System Token. GET /customers/{issued_id} returns one owned customer and its token for authorized delivery. Treat these credential-bearing responses as private.

Top up an existing customer

Use POST /customers/{issued_id}/topups with an eligible paid package and a new business-operation idempotency key. This adds the purchased benefit to the existing account and preserves its System Token. Trial packages cannot be used for top-ups. A recipient ID from another reseller is inaccessible.

curl --fail-with-body 'https://myapi.world/api/reseller/v1/customers/123/topups' \
  -H "Authorization: Bearer $RESELLER_API_KEY" \
  -H 'Idempotency-Key: customer-topup-10002' \
  -H 'Content-Type: application/json' \
  -d '{"packageId":"credit-25"}'

Deliver setup instructions

GET /customers/{issued_id}/setup?platform=all returns separate instructions and executable scripts, plus API URLs and supported setup models. You may request one platform by the exact key returned in the scripts object. The optional custom-domain query parameter is domain_id. It must identify your own active domain. Display the explanatory instructions outside the copyable script block so customers can paste the script as provided.

For a migration, download /customers/{issued_id}/migration-bundle.zip. It includes sensitive customer setup credentials and must not be published. For branded email delivery, POST /customers/{issued_id}/welcome-email accepts an optional customDomainId and requires an active owned domain. This operation sends a real message; call it only when you intend to contact that customer, not as a connectivity test.

6. Assign the ten starter trials

An eligible newly verified reseller receives ten starter assignments. Check the account’s reseller.starterTrials object for available, assigned and total. The live /products entry identifies the full-suite trial by reseller-starter-trial. Existing inventory is not refilled merely because the enrollment flow changed.

Assign a starter trial through the same customer-creation endpoint with the trial package ID and a valid recipient email. The recipient receives an invitation, verifies their email and chooses their password. Do not provide a temporary password for this flow or count a sent invitation as an activated account.

{
  "packageId": "reseller-starter-trial",
  "email": "invited-customer@example.com"
}

Each eligible trial includes $15 Credit Wallet, 30 minutes of All Models Unlimited, one day of Lite and one day of VIP. Lite and VIP begin when the recipient activates. Unlimited begins on the first coding pass within that trial day, rather than issuance or login. Wallet credit is separate from the included allowance. The recipient does not need a card or payment to activate the trial.

Only one eligible trial may be assigned per recipient and device. Trials cannot be stacked on the reseller’s own account. The inventory is consumed once and protected against concurrent requests and duplicate retries. If email delivery requires review, preserve the existing assignment and contact support instead of creating another account. Paid membership and supplier-backed benefits keep their separate eligibility rules.

7. Usage, statements, notifications and support

GET /customers/{issued_id}/usage returns the owned customer’s usage ledger. Supported filters include q, model, date_from, date_to, limit and offset. Use the query names exactly as shown in the reference. The JSON page size is capped at 1,000; /usage.csv exports up to 1,000 matching rows. Usage responses do not contain prompt or response text.

GET /transactions reports reseller wallet activity, including funding, purchases, customer top-ups, commissions and adjustments. Filter by transaction_type, search and date range. JSON and CSV/PDF exports are bounded to 5,000 records per request. For longer histories, page through JSON or narrow the date range. A transaction is the record of an event; do not infer a new grant from a historical label.

Use PUT /preferences for wholesale low-balance notifications and PUT /customers/{issued_id}/spending-alert for a customer threshold. The latter accepts spendingAlertPercent from 1 to 100 and disabled. These controls configure notifications, not a new credit allocation. Read GET /notifications and acknowledge an owned notification with its acknowledgement endpoint.

Diagnose without charging a coding pass

POST /customers/{issued_id}/connectivity checks authentication and model discovery using that customer’s existing token without generating a billable model response. GET /customers/{issued_id}/support-diagnostics produces a redacted support bundle without raw credentials or conversation content. These checks establish connectivity, not successful generation for every model or proof of available allowance.

The sandbox endpoints return deterministic, non-billable Responses, Chat Completions and Messages structures. They do not call a model, execute tools, emulate a real streaming tool round trip or validate provider capacity. Expect X-MyAPI-Sandbox: true, X-MyAPI-Billable: false and zero usage.

curl --fail-with-body 'https://myapi.world/api/reseller/v1/sandbox/responses' \
  -H "Authorization: Bearer $RESELLER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"sandbox-echo","input":"Check response parsing"}'

Legacy challenge endpoints report only an already-enrolled account’s eligibility and claim window; their presence does not enroll a new reseller or promise an available promotion. Withdrawal endpoints apply only to eligible commission Cash Wallet funds and manual payout rules. Wholesale deposits and promotional package balances are not interchangeable with withdrawable funds. Read the account response and handle an ineligible request normally.

8. Offer a branded customer experience

You can manage up to five owned custom domains. Create a domain with POST /domains, supplying hostname, brandName, supportEmail and optional branding. The response supplies the exact DNS records needed for ownership and routing. Do not replace unrelated DNS records or assume a domain is active immediately after creation.

  1. Register your hostname and accurate support contact.
  2. Read /domains/{domain_id}/dns-guide, optionally selecting your DNS provider.
  3. Set the returned A and TXT records at that provider.
  4. Request verification with POST /domains/{domain_id}/verify.
  5. Wait until the returned status indicates active HTTPS before delivering customer setup for that domain.

Changing a hostname resets verification and HTTPS activation. The logo upload accepts PNG, JPEG or WebP with a 2 MB decoded limit. Use the documented JSON schema rather than arbitrary file paths. Domain maintenance settings display a customer-facing notice; they do not stop coding API traffic. Analytics provide bounded daily aggregates without conversation content. Branded documentation downloads remain owner-authorized.

Deleting a domain is an operational action and may interrupt customers using its URL. Coordinate a migration first and distribute fresh setup links where necessary. Domain ownership does not grant access to administrator functionality or customers belonging to another reseller.

9. Connect customers to the coding API

The reseller management API is separate from inference. Use the recipient’s System Token or appropriately scoped customer User API Key at https://api.myapi.world/v1, or at the active domain returned in that customer’s setup. A reseller credential does not impersonate a customer for generation. Calls follow the recipient’s current wallet, membership, Unlimited availability, client requirements and normal rate limits.

Customer endpointPurpose
GET /v1/modelsDiscover models available to the authenticated customer/client.
POST /v1/responsesResponses-compatible coding and tool workflows. Send stream: true.
POST /v1/chat/completionsChat Completions-compatible messages and tool calls.
POST /v1/messagesMessages-compatible clients and tools.
curl --no-buffer --fail-with-body 'https://api.myapi.world/v1/responses' \
  -H "Authorization: Bearer $CUSTOMER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"gpt-6.1-sol","input":"Reply with OK","stream":true,
       "reasoning":{"effort":"xhigh"}}'

This is a real, normally billed generation request. Test deliberately using an authorized account; sandbox success alone is not equivalent. For Responses streaming, parse server-sent events incrementally and check for completion or error events before marking the pass successful. HTTP 200 is not sufficient if the stream ends early. Keep tool call IDs and corresponding results intact when continuing a conversation. Execute client tools only with the customer’s permissions.

curl --fail-with-body 'https://api.myapi.world/v1/messages' \
  -H "Authorization: Bearer $CUSTOMER_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'anthropic-version: 2023-06-01' \
  -d '{"model":"claude-opus-5-5","max_tokens":64,
       "messages":[{"role":"user","content":"Reply with OK"}]}'

Choose a model from the customer’s live catalogue rather than relying on example names forever. Request the needed permission when creating a customer User API Key: model discovery, Responses, Messages and Chat Completions are separate permissions. Additional client account and wallet routes are described in the customer API schema and managed setup instructions. Browser account operations require the customer’s own authenticated dashboard session. These do not become cross-customer reseller powers.

10. Idempotency, errors and production integration

Use an Idempotency-Key for every POST /customers and POST /customers/{issued_id}/topups. Valid keys contain 8–200 characters, start with a letter or digit, and otherwise contain letters, digits, dots, colons, slashes, underscores or hyphens. Generate one stable value per business operation and save it before the request is sent.

Retry the same operation with the same body and key after a network failure. A matching replay returns the original result; reusing the key with different details conflicts. Do not generate a new key simply because the first response was lost. For payment confirmation, retain and retry the same provider order ID. Checkout creation is not a generic idempotent purchase endpoint: prevent double clicks in your interface and retain an existing returned checkout.

StatusMeaning and next action
400 / 422Invalid fields or request shape. Check detail and fix the request; do not retry unchanged.
401Missing, invalid, expired or revoked credential. Verify the credential through its owner’s portal.
403Account, role, key permission, IP restriction or entitlement does not allow this operation.
404Resource is not found or not accessible to this reseller. Do not enumerate IDs.
409State conflict: duplicate identity, differing idempotency body, unavailable package, insufficient balance, or pending payment approval.
410A retired operation cannot initiate new business. Use the current documented workflow.
429Too many requests. Honor Retry-After when present and use bounded exponential backoff with jitter.
502 / 503 / 504A dependency or confirmation is temporarily unavailable. Retain the original operation/order ID and retry conservatively.

General error responses use a detail field, which can be a string or validation details. Treat it as data and escape it in your interface. Do not depend on exact English wording for business logic. Use status codes, explicit result flags and your saved order state. Never log authorization headers, customer tokens, passwords, full setup scripts, private payment information or verification links.

Bound requests and polling. Request only the page size and date range needed, avoid overlapping polls, and stop once an order reaches a final state. A stored crypto status can lag the provider; a deliberate confirmation request refreshes it. Request IDs, endpoint, timestamp, HTTP status and your own opaque operation ID are useful support information without disclosing credentials.

Before releasing an integration, verify owner isolation, a rejected insufficient-permission key, deterministic sandbox parsing, handling of pending payments, duplicate retry behavior in an isolated environment and secure delivery of customer credentials. Do not charge a real payment, create trial grants or send welcome messages just to exercise a button.

Generated from the installed API

Complete reseller endpoint reference

The reference below reflects the registered reseller operations, including current provider-specific funding endpoints. Field names and required status come from the installed schema. /api is public discovery; all /api/reseller/v1/… operations require an active reseller credential. The schema intentionally excludes administrator routes and browser-session account controls.

48 operations

No endpoints match. Try a shorter term.

GET /api

Reseller API root

Discover the reseller API version, documentation, authentication method, and customer API host.

Response codes and schema

200 Successful Response

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/account

Get reseller account

Return the authenticated reseller wallet, margin, preferences, trial inventory, alerts, and onboarding status.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/catalogue

List customer-facing plans and models

Public model catalogue, enabled customer membership and Unlimited plans, and fixed credit packs. Memberships and subscriber bundles use customer checkout; this listing does not make them wholesale issue products. Use /products for currently issuable reseller packages.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/challenge

Get reseller Daily Challenge

Return the 30-day reward schedule, current claim window, and non-withdrawable promotional package balance status.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/challenge/claim

Claim today's reseller challenge reward

Claim exactly once in the current 24-hour window. Missing a window retires the challenge.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/customers

List reseller customers

List only customers issued by the authenticated reseller. Search matches username, email, or package id.

Request fields
FieldLocationRequiredType and constraints
qqueryNostring (default "")
limitqueryNointeger (default 50)
offsetqueryNointeger (default 0)
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/customers

Purchase and create a customer account

Debit the reseller wallet and create a new customer account from a live product. The response contains copy-ready delivery details and the new System Token. Reusing the same Idempotency-Key safely returns the original result.

Request fields
FieldLocationRequiredType and constraints
Idempotency-KeyheaderYesstring
packageIdJSONYesstring; min length 3; max length 80
usernameJSONNostring | null
passwordJSONNostring | null
firstNameJSONNostring | null
lastNameJSONNostring | null
emailJSONNostring | null
spendingAlertPercentJSONNointeger; min 1.0; max 100.0 | null
trialSelfUseJSONNoboolean (default false)
customDomainIdJSONNointeger; min 1.0 | null
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

409 Conflicting idempotency body, unavailable product, insufficient funds or duplicate recipient.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/customers/{issued_id}

Get a reseller customer

Return one reseller-owned customer and its System Token. Customers issued by other resellers are never visible.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/customers/{issued_id}/connectivity

Test customer connectivity

Run a non-billable authentication and model-discovery check using the customer's existing System Token.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/customers/{issued_id}/migration-bundle.zip

Download a customer migration bundle

Download owner-authorized instructions and copy-ready setup files. The archive contains the customer System Token and is therefore never cached.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
domain_idqueryNointeger | null
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/customers/{issued_id}/setup

Get personalized customer setup scripts

Return every supported client installation and setup script for a reseller-owned customer. Instructions and executable scripts are separate fields. Pass an active domainId to generate fully white-label API URLs, or request one platform by its script key.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
domain_idqueryNointeger | null
platformqueryNostring (default "all")
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

PUT /api/reseller/v1/customers/{issued_id}/spending-alert

Set customer spending alert

Set or disable the reseller notification threshold for a reseller-owned customer.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
spendingAlertPercentJSONNointeger (default 80); min 1.0; max 100.0
disabledJSONNoboolean (default false)
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/customers/{issued_id}/support-diagnostics

Download redacted support diagnostics

Return a credential-safe diagnostic bundle for customer support. Passwords, raw System Tokens, prompt content, and response content are excluded.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/customers/{issued_id}/topups

Top up an existing customer

Debit the reseller wallet and add wallet credit or Unlimited Coding to an existing reseller-owned account. The customer's System Token is preserved. Trial products cannot be used for topups.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
Idempotency-KeyheaderYesstring
packageIdJSONYesstring; min length 3; max length 80
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

409 Conflicting idempotency body, unavailable product, insufficient funds or duplicate recipient.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/customers/{issued_id}/usage

Get customer usage

Search and paginate the reseller-owned customer's usage ledger without returning prompt or response content.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
qqueryNostring (default "")
modelqueryNostring (default "")
date_fromqueryNostring (default "")
date_toqueryNostring (default "")
limitqueryNointeger (default 50)
offsetqueryNointeger (default 0)
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/customers/{issued_id}/usage.csv

Download customer usage CSV

Download up to 1,000 matching usage rows for a reseller-owned customer.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
qqueryNostring (default "")
modelqueryNostring (default "")
date_fromqueryNostring (default "")
date_toqueryNostring (default "")
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/customers/{issued_id}/welcome-email

Send a branded customer welcome email

Requires an active reseller credential and applies only to the authenticated reseller's records.

Request fields
FieldLocationRequiredType and constraints
issued_idpathYesinteger
customDomainIdJSONNointeger; min 1.0 | null
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/domains

List white-label custom domains

List up to five domains owned by the authenticated reseller, including DNS and HTTPS activation state.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/domains

Register a white-label custom domain

Register a domain and return the A and TXT records required before automatic HTTPS activation.

Request fields
FieldLocationRequiredType and constraints
hostnameJSONYesstring; min length 4; max length 253
brandNameJSONYesstring; min length 2; max length 80
supportEmailJSONYesstring; min length 3; max length 254
logoUrlJSONNostring (default ""); max length 500
primaryColorJSONNostring (default "#0b57d0"); max length 7
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

PUT /api/reseller/v1/domains/{domain_id}

Update a white-label custom domain

Update branding or the hostname. Changing the hostname resets DNS and HTTPS activation.

Request fields
FieldLocationRequiredType and constraints
domain_idpathYesinteger
hostnameJSONYesstring; min length 4; max length 253
brandNameJSONYesstring; min length 2; max length 80
supportEmailJSONYesstring; min length 3; max length 254
logoUrlJSONNostring (default ""); max length 500
primaryColorJSONNostring (default "#0b57d0"); max length 7
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

DELETE /api/reseller/v1/domains/{domain_id}

Remove a white-label custom domain

Requires an active reseller credential and applies only to the authenticated reseller's records.

Request fields
FieldLocationRequiredType and constraints
domain_idpathYesinteger
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/domains/{domain_id}/analytics

Get custom-domain analytics

Return privacy-safe daily request, error, latency, and identified-customer aggregates for up to 90 days. Prompts and response content are never collected.

Request fields
FieldLocationRequiredType and constraints
domain_idpathYesinteger
daysqueryNointeger (default 30)
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/domains/{domain_id}/dns-guide

Get registrar-specific DNS guidance

Return step-by-step instructions and exact A/TXT records for Cloudflare, GoDaddy, Namecheap, Route 53, cPanel, or another DNS provider.

Request fields
FieldLocationRequiredType and constraints
domain_idpathYesinteger
providerqueryNostring (default "generic")
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/domains/{domain_id}/documentation.zip

Download branded API documentation

Requires an active reseller credential and applies only to the authenticated reseller's records.

Request fields
FieldLocationRequiredType and constraints
domain_idpathYesinteger
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

PUT /api/reseller/v1/domains/{domain_id}/maintenance

Set a customer maintenance notice

Enable, update, schedule, or remove a customer-facing notice on one white-label domain without blocking API calls.

Request fields
FieldLocationRequiredType and constraints
domain_idpathYesinteger
enabledJSONNoboolean (default false)
titleJSONNostring (default "Scheduled maintenance"); max length 100
messageJSONNostring (default ""); max length 500
untilJSONNostring | null
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/domains/{domain_id}/verify

Verify custom-domain DNS

Check both required DNS records and queue the domain for automatic HTTPS activation when they are valid.

Request fields
FieldLocationRequiredType and constraints
domain_idpathYesinteger
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/latency-targets

List customer API latency targets

Requires an active reseller credential and applies only to the authenticated reseller's records.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/models

List current public models

Current public model names, supported endpoints, capabilities and client availability. Does not reveal provider routing. Catalogue listing does not grant entitlement or bypass client restrictions.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/notifications

List reseller notifications

Requires an active reseller credential and applies only to the authenticated reseller's records.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/notifications/{notification_id}/acknowledge

Acknowledge reseller notification

Requires an active reseller credential and applies only to the authenticated reseller's records.

Request fields
FieldLocationRequiredType and constraints
notification_idpathYesinteger
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

PUT /api/reseller/v1/preferences

Update reseller preferences

Update low-balance email settings for the reseller wholesale wallet.

Request fields
FieldLocationRequiredType and constraints
lowBalanceAlertsEnabledJSONNoboolean (default true)
lowBalanceThresholdUsdJSONNonumber; min 0.0; max 5000.0 | string
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/products

List live reseller products

Return the server-authoritative products currently available for new customer purchases and existing-customer topups, including the reseller cost and current wallet capacity.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/sandbox/chat/completions

Test a Chat Completions integration without billing

Requires an active reseller credential and applies only to the authenticated reseller's records.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/sandbox/messages

Test an Anthropic Messages integration without billing

Requires an active reseller credential and applies only to the authenticated reseller's records.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/sandbox/models

List deterministic sandbox models

Requires an active reseller credential and applies only to the authenticated reseller's records.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/sandbox/responses

Test an OpenAI Responses integration without billing

Requires an active reseller credential and applies only to the authenticated reseller's records.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/transactions

List reseller wallet transactions

Search and paginate reseller wallet loads, account purchases, existing-customer topups, commissions, and adjustments.

Request fields
FieldLocationRequiredType and constraints
qqueryNostring (default "")
transaction_typequeryNostring (default "")
date_fromqueryNostring (default "")
date_toqueryNostring (default "")
limitqueryNointeger (default 50)
offsetqueryNointeger (default 0)
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/transactions.csv

Download reseller transactions CSV

Requires an active reseller credential and applies only to the authenticated reseller's records.

Request fields
FieldLocationRequiredType and constraints
qqueryNostring (default "")
transaction_typequeryNostring (default "")
date_fromqueryNostring (default "")
date_toqueryNostring (default "")
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/transactions.pdf

Download reseller transaction statement PDF

Requires an active reseller credential and applies only to the authenticated reseller's records.

Request fields
FieldLocationRequiredType and constraints
qqueryNostring (default "")
transaction_typequeryNostring (default "")
date_fromqueryNostring (default "")
date_toqueryNostring (default "")
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/wallet/checkout

Create reseller wallet checkout

Create a payer-approved PayPal checkout (default) or Paymento cryptocurrency checkout. Send amountUsd in USD and paymentMethod=paypal or paymento. Limits come from the account/portal. No payment is needed for enrollment; wholesale deposits are credited at actual paid value, without a product discount. Checkout creation is not proof of payment.

Request fields
FieldLocationRequiredType and constraints
amountUsdJSONYesnumber | string
paymentMethodJSONNostring: paypal, paymento (default "paypal")
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/wallet/confirm

Confirm a historical card payment receipt

Historical receipts only. New PayPal and Paymento purchases use the provider-specific wallet confirmation endpoints. Do not initiate a new card-provider checkout.

Request fields
FieldLocationRequiredType and constraints
sessionIdJSONYesstring
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/wallet/paymento/confirm

Verify and settle a Paymento reseller deposit

Verifies the saved owner-bound order with Paymento. Unconfirmed funds remain pending; confirmed funds are settled exactly once under the existing reseller wallet rules.

Request fields
FieldLocationRequiredType and constraints
orderIdJSONYesstring
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/wallet/paymento/orders/{order_id}

Read a reseller crypto deposit status

Read the latest stored status for your reseller deposit. Use POST wallet/paymento/confirm to request provider verification. This GET never captures or credits a payment.

Request fields
FieldLocationRequiredType and constraints
order_idpathYesstring
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/wallet/paypal/confirm

Confirm an approved PayPal reseller deposit

Owner-scoped confirmation. Captures only an already approved PayPal deposit, validates the saved amount, currency and receiver, and credits the reseller wallet once.

Request fields
FieldLocationRequiredType and constraints
orderIdJSONYesstring
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

GET /api/reseller/v1/withdrawals

List reseller cash-wallet withdrawals

Requires an active reseller credential and applies only to the authenticated reseller's records.

Response codes and schema

200 Successful Response

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.

POST /api/reseller/v1/withdrawals

Request a reseller cash-wallet withdrawal

Reserve withdrawable commission funds for manual payout in BTC, DOGE, or LTC.

Request fields
FieldLocationRequiredType and constraints
amountUsdJSONYesnumber | string
currencyJSONYesstring; min length 3; max length 4
destinationAddressJSONYesstring; min length 20; max length 160
Response codes and schema

200 Successful Response

422 Validation Error

401 Missing, invalid or expired credential.

403 Inactive reseller, insufficient key permission or IP restriction.

429 Rate limit reached; retry after the indicated delay.

Download the OpenAPI JSON for machine-readable request and response definitions. Where a response is a dynamic object, use the documented workflow and live result; do not assume every optional field is always present.