Provider Guide
Last updated: July 18, 2026
This guide describes AGIHALO's current provider integration. It is operational documentation, not a replacement for the Provider Agreement. Complete individual KYC, save a provider profile and Base receive wallet, and confirm that your upstream agreement permits the intended use before publishing a provider.
1. Provider types
- Hosted credential: configuration may appear during the rollout, but hosted seller credentials are not currently connected to buyer routing or seller earnings. Do not register one expecting traffic or revenue until AGIHALO explicitly marks hosted seller routing available.
- Custom endpoint: expose the OpenAI-compatible discovery and chat endpoints below using your own inference infrastructure.
2. Custom endpoint contract
- The base URL must use public HTTPS and contain no credential, path, query string, or fragment. It must resolve to a public address.
- The chat path must be a relative path beginning with
/, ending in/chat/completions, and containing no query string or fragment. AGIHALO derives the matching/modelspath from this value. - Choose either
Authorization: Bearer <key>orX-API-Key: <key>. The same authentication is sent to model discovery and chat requests. - Return JSON with an appropriate
application/jsoncontent type and no compression. Only307or308redirects are followed, for at most two hops, and every hop must remain on the same origin.301,302, and303are rejected because they may change the request method.
GET the derived models path. Return a dataarray whose id values exactly match the canonical Halo model identifiers you serve.
{
"data": [
{ "id": "qwen/qwen3.6-35b-a3b" }
]
}POST the configured chat path. Registration probes use a small non-streaming text request similar to this one:
{
"model": "qwen/qwen3.6-35b-a3b",
"messages": [
{ "role": "user", "content": "Reply with the single word OK." }
],
"max_tokens": 16,
"stream": false
}A valid response must:
- return the exact requested canonical model identifier;
- contain exactly one choice and non-empty assistant text;
- use
stop,length, orcontent_filterasfinish_reason; and - not contain tool calls or function calls.
{
"model": "qwen/qwen3.6-35b-a3b",
"choices": [
{
"message": { "role": "assistant", "content": "OK" },
"finish_reason": "stop"
}
]
}Custom routing is text-only. Streaming, tool/function declarations and tool/function responses are not currently supported. A matching response model string checks the explicit contract but does not independently attest the underlying model weights.
Runtime request and network limits
- Requests contain an exact canonical
modeland a non-empty text-onlymessagesarray.nandbest_of, when supplied, must be1. Tools, functions, tool-role messages, audio, images, and multimodal content are rejected before your endpoint is called. - Clients may provide either
max_tokensormax_completion_tokens, but not both. AGIHALO forwards the result asmax_tokens, defaults it to4096, and caps it at32768. AGIHALO forcesn: 1andstream: false. Other accepted OpenAI-compatible fields are forwarded in the canonical JSON request. - Runtime request and response JSON are each limited to 1 MiB, valid UTF-8, at most 64 levels of JSON nesting, and absent or
identitycontent encoding. Request-body idle and total limits are 15 and 30 seconds. Response-body idle and total limits are 15 and 120 seconds. - AGIHALO permits at most eight concurrent custom-provider upstream requests per seller across all of that seller's provider records. Capacity rejection does not create completed seller earnings.
3. Model checks, logprobs, and upstream cost
Check models first calls the derived models endpoint and then sends one bounded baseline chat request to each advertised canonical model. After a valid baseline response, AGIHALO may send a second request with logprobs: true and top_logprobs: 5. The UI shows baseline latency and the observed logprob capability.
- Saving rechecks each selected model, and continuing health checks may send additional bounded baseline requests while the listing is enabled. The health scheduler runs every 10 minutes in bounded batches, so exact wall-clock timing is not guaranteed. All such requests can create upstream charges for you.
- Missing, unsupported, invalid, or unavailable logprobs are informational only. They do not block activation, count as a health failure, or change customer charges or provider settlement.
- AGIHALO stores the returned/not-returned status, bounded counts, latency, and an internal response fingerprint. It does not store the raw logprob token arrays. A fingerprint is an observation, not model attestation.
- A recorded failed Test or background health check increments the provider failure score. The second unresolved failure places the key on watch; the fifth disables it from routing. A later successful check resets the score and can restore an enabled listing. AGIHALO capacity or database errors that make a check inconclusive are skipped and do not count against the provider.
4. Pricing and metering
Registration and editing show the customer rate, the current Halo fee, and estimated provider earnings before you save. Any provider discount is applied to the customer price first; the displayed provider-specific fee split is then applied. The usual split is a 10% Halo fee and 90% provider earnings, but the rate shown for your provider is the rate that applies. You remain responsible for upstream charges, taxes, and other costs.
Custom endpoint text usage is billed with deterministic Halo text units calculated from the canonical request and visible assistant text. Halo does not use seller-reported usage, hidden reasoning, cache claims, or the model's native tokenizer to determine the customer charge. Failed or contract-invalid custom responses do not create completed seller earnings.
5. Payouts
- Payouts are manually reviewed and sent as USDC on Base to the saved receive wallet. Transfer timing is not guaranteed.
- A request allocates all currently available cash-funded earnings. Only one payout request may be active at a time. If a completed charge includes any bonus-funded amount, its seller earnings are currently payout-ineligible and there is no review-to-release path for them.
- KYC is rechecked before processing. You may cancel a pending request, and an unprocessed request expires after seven days. Once processing begins, it can no longer be cancelled or expire.
Review the current amount, wallet snapshot, and status in the Provider Settlement panel. For data handling details, see the Privacy Policy.