OpenAI-compatible API

Choose the protocol, verify Responses, and find field-level differences.

Use the OpenAI SDK at https://api.deepraxis.com/openai/v1. Requests are forwarded using the same protocol; compatibility does not imply that every official endpoint, field, or model is available.

Choose the right address

ClientBase URLModel catalog
OpenAI SDKhttps://api.deepraxis.com/openai/v1/openai/v1/models
Anthropic SDKhttps://api.deepraxis.com/anthropic/anthropic/v1/models
Google GenAI SDKhttps://api.deepraxis.com/google/google/v1beta/models
Praxis native APIhttps://api.deepraxis.com/model/v1See the native API, including providerOptions

Each compatible catalog lists models that offer its protocol. Membership in the OpenAI catalog does not imply both Chat Completions and Responses support. An undeclared operation returns 404 model_protocol_not_offered.

Field differences: where to check

Your application usesCheck before sending
messages, tools, sampling, reasoning, or provider preferencesChat Completions field support
input, stored responses, or response toolsResponses field support
usage.cost or generation IDsCost handling in the migration guide and generation records
Uploads and file purposesUpload a file
An endpoint beyond chatOperation support and unsupported alternatives

Unknown top-level fields can be forwarded to the same-protocol upstream; acceptance does not prove that they took effect. Declared fields still undergo validation. Consult the endpoint's field support before relying on an option.

1. Prepare

You need Python 3.10+, uv, and a Praxis key. Create one in Console → API Keys and securely inject it into the current terminal as PRAXIS_API_KEY. Never put the key in code or logs. Keep your original service configuration and key for rollback. Run the commands below in Bash on macOS or Linux.

test -n "${PRAXIS_API_KEY:-}"

Expected: exit code 0. Exit code 1 means the variable is missing; set it before continuing.

2. Verify Responses

This example uses deepseek-flash. As of October 12, 2026, glm-5.3-flash also offers Responses; gpt-5.6-sol offers Chat Completions but not Responses. Confirm the operation in the model catalog.

unset HTTP_PROXY HTTPS_PROXY ALL_PROXY http_proxy https_proxy all_proxy
uv run -q --no-project --with openai --with anthropic python - <<'PY'
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.deepraxis.com/openai/v1",
    api_key=os.environ["PRAXIS_API_KEY"],
    timeout=90.0,
    max_retries=0,
)
models = client.models.list()
assert "deepseek-flash" in {m.id for m in models.data}
raw = client.responses.with_raw_response.create(
    model="deepseek-flash",
    input="Reply OK.",
    max_output_tokens=1024,
)
reply = raw.parse()
text = reply.output_text
print("HTTP", raw.status_code)
print("X-Request-Id:", raw.headers.get("x-request-id"))
print("X-Praxis-Generation-Id:", raw.headers.get("x-praxis-generation-id"))
print(text)
assert raw.status_code == 200 and text and text.strip()
assert raw.headers.get("x-request-id")
PY

Expected: exit code 0, HTTP 200, nonempty text (usually OK.), and an X-Request-Id. Assertions check both model availability and a real reply, not just connectivity. Keep the request ID for troubleshooting, never the key. The example incurs a small usage charge.

Expected: output_text contains the final answer; reasoning output is not treated as user-facing text. If the request returns model_protocol_not_offered, select a Responses-capable model. If it says does not exist, copy an exact catalog ID. To roll back an existing application, restore the original base URL, key, and model together, then rerun its original smoke request.

API reference → · Cookbook: migrate from OpenAI →

Export

On this page