You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
First-Success Telemetry Fixtures for OpenAI-Compatible SDKs (September 2026)
#83
When someone evaluates an OpenAI-compatible API gateway, the first useful signal is not account creation. It is not even key creation. The first useful signal is a request that actually reaches the documented base URL, uses a real model name, and returns a response or a bounded failure that a developer can fix.
That sounds obvious, but it is easy to miss in SDKs and dashboards. A dashboard can record that the user clicked Run. The API logs can show that the same user later called the gateway from curl, Python, Node, a worker, or a CI job. If those two streams are never reconciled, the onboarding funnel starts optimizing the visible button instead of the first real integration.
For SDK maintainers, I think this deserves a small fixture layer.
The fixture should answer a few questions without storing sensitive material:
Field
Why it matters
base_url
Confirms the sample targets the endpoint users were shown
model
Catches alias drift and unavailable route names
client_family
Separates dashboard, curl, Python, Node, and backend usage
Connects the request to the rate card used in examples
pricing_checked_at
Makes stale examples reviewable
receipt_ref
Lets support join to an internal receipt without exposing the receipt publicly
What the fixture should not contain is just as important: no prompt, no completion, no reusable credential, no email address, no IP address, and no raw upstream error body. The event is a milestone, not an analytics dump.
Here is the shape I like for a first-success assertion:
Before posting this, I checked AIWave's public pricing endpoints again on September 9, 2026. /api/pricing returned success=true with the current pricing_version, and /api/v1/pricing returned USD-per-1M-token rows with updated_at: 2026-08-27. Selected public rows included deepseek-v4-flash, deepseek-v4-pro, glm-5.1, kimi-k3, qwen3-max, and qwen3.6-flash. I also rechecked the DeepSeek API docs and Alibaba Cloud Model Studio model documentation, because a fixture that carries a pricing version is only useful if the source is deliberately refreshed.
The practical SDK test is simple:
Build a redacted fixture from the example shown to a new developer.
Run the example through the same OpenAI-compatible client path the docs recommend.
Assert that the base URL, model name, status class, and pricing metadata are present.
Assert that prompts, completions, credentials, raw request bodies, and private contact data are absent.
Re-run the reconciler and confirm the first-success milestone is not duplicated.
This also changes how failure is handled. A first request can fail because the key is missing, the account lacks usable quota, the request exceeded a rate limit, the provider timed out, or the model string was invalid. Those are useful onboarding signals. They should be captured as bounded classes, not as copied exception payloads.
For AIWave-style gateways, this matters because the developer is evaluating several things at once: route stability, OpenAI compatibility, dated price evidence, cache-aware billing, and whether a receipt can explain the final charge. If the SDK only tells us that a sample was rendered, we still do not know whether integration worked.
I am curious how other gateway and SDK maintainers handle this boundary. Do you treat first success as a product event, a request-log-derived milestone, a billing receipt event, or some combination of the three?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
When someone evaluates an OpenAI-compatible API gateway, the first useful signal is not account creation. It is not even key creation. The first useful signal is a request that actually reaches the documented base URL, uses a real model name, and returns a response or a bounded failure that a developer can fix.
That sounds obvious, but it is easy to miss in SDKs and dashboards. A dashboard can record that the user clicked Run. The API logs can show that the same user later called the gateway from curl, Python, Node, a worker, or a CI job. If those two streams are never reconciled, the onboarding funnel starts optimizing the visible button instead of the first real integration.
For SDK maintainers, I think this deserves a small fixture layer.
The fixture should answer a few questions without storing sensitive material:
base_urlmodelclient_familystatus_classpricing_versionpricing_checked_atreceipt_refWhat the fixture should not contain is just as important: no prompt, no completion, no reusable credential, no email address, no IP address, and no raw upstream error body. The event is a milestone, not an analytics dump.
Here is the shape I like for a first-success assertion:
{ "event_type": "first_success", "base_url": "https://aiwave.live/v1", "model": "deepseek-v4-flash", "client_family": "python", "status_class": "success", "pricing_version": "a42d372ccf0b5dd13ecf71203521f9d2", "pricing_checked_at": "2026-09-09", "redaction": { "prompt": "excluded", "completion": "excluded", "credential": "excluded" } }Before posting this, I checked AIWave's public pricing endpoints again on September 9, 2026.
/api/pricingreturnedsuccess=truewith the currentpricing_version, and/api/v1/pricingreturned USD-per-1M-token rows withupdated_at: 2026-08-27. Selected public rows includeddeepseek-v4-flash,deepseek-v4-pro,glm-5.1,kimi-k3,qwen3-max, andqwen3.6-flash. I also rechecked the DeepSeek API docs and Alibaba Cloud Model Studio model documentation, because a fixture that carries a pricing version is only useful if the source is deliberately refreshed.The practical SDK test is simple:
This also changes how failure is handled. A first request can fail because the key is missing, the account lacks usable quota, the request exceeded a rate limit, the provider timed out, or the model string was invalid. Those are useful onboarding signals. They should be captured as bounded classes, not as copied exception payloads.
For AIWave-style gateways, this matters because the developer is evaluating several things at once: route stability, OpenAI compatibility, dated price evidence, cache-aware billing, and whether a receipt can explain the final charge. If the SDK only tells us that a sample was rendered, we still do not know whether integration worked.
I am curious how other gateway and SDK maintainers handle this boundary. Do you treat first success as a product event, a request-log-derived milestone, a billing receipt event, or some combination of the three?
All reactions