What do you test first when trying an AI API: quality, latency or cost? Everyone answers that one differently, and the answer usually changes after the first week. Here are the eight questions that come up before that, in the order they tend to arrive, with the shortest useful answer and a link to the deep version.

1. Which endpoint do I call first?

GET /v1/models to confirm what is deployed, then POST /v1/chat/completions for text. If you have audio, POST /v1/audio/transcriptions turns speech into text. The base URL is https://webwright.ai/v1 and the surface mirrors the OpenAI API, so an existing OpenAI client works after a base-URL and key change.

2. How do I know my client will actually work?

Point the OpenAI SDK at the WebWright base URL and key, and send one request. Nothing else in the client changes:

from openai import OpenAI

client = OpenAI(
    base_url="https://webwright.ai/v1",
    api_key="www_v1_YOUR_API_KEY",
)

completion = client.chat.completions.create(
    model="wren-r1",
    messages=[{"role": "user", "content": "Write a haiku about APIs."}],
)
print(completion.choices[0].message.content)

The model field is currently advisory, because a single production model is always used.

3. What do I test first: quality, latency, or cost?

Test quality first, on your own inputs, because it is the only one that can disqualify a provider. Latency and cost are worth measuring, but they only matter once the output is good enough to ship. If you want the full method, see the evaluation-first guide.

4. How do I stream a response?

Set stream=True and read the server-sent events as they arrive. Streaming makes the first token visible immediately, which is the difference between a spinner and a sentence. The streaming guide has the smallest working loop in Python and TypeScript.

5. What happens when a call fails?

An OpenAI-compatible error carries a machine-readable type, so your code can decide instead of guessing. A 429 or a 500 is worth a bounded retry; a 400, 401, or 402 is a cause to fix. Read the status and the type, retry only the retryable ones with a ceiling, and honor Retry-After. The error-handling guide has the classifier.

6. How do I pick a transcription output format?

Use json for a plain transcript, text for a raw string, srt or vtt for captions, and verbose_json when you need timestamps for a downstream step. Pick the format the next stage consumes and skip the conversion. The response-formats guide shows the smallest request for each.

7. How do I know what it will cost?

Chat is billed per token and transcription is billed by audio duration, so the useful estimate starts from your own volume. The cost calculator takes your monthly tokens or audio minutes and returns an estimate, and the pricing page lists the plans and the token rates.

8. How do I test without burning tokens or shipping a key?

Two habits, both cheap. Test the client against a mock or a fixture so your test suite does not spend tokens, and keep the real key on your server behind a proxy instead of in the browser. The testing guide covers the first and the server-side proxy guide covers the second.

The order that saves time

Confirm the endpoint, prove the client works, then test quality on your own inputs. Everything after that is tuning. Start with one call, get a real answer, and let the rest follow.

If you are weighing a second provider later, the migration playbook walks the full path from the first call to a switch you can trust.

Evaluating an AI API and not sure which question matters most for your workload? Tell us what you are building and book a consult using the link below.

The WebWright Team