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
| Client | Base URL | Model catalog |
|---|---|---|
| OpenAI SDK | https://api.deepraxis.com/openai/v1 | /openai/v1/models |
| Anthropic SDK | https://api.deepraxis.com/anthropic | /anthropic/v1/models |
| Google GenAI SDK | https://api.deepraxis.com/google | /google/v1beta/models |
| Praxis native API | https://api.deepraxis.com/model/v1 | See 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 uses | Check before sending |
|---|---|
messages, tools, sampling, reasoning, or provider preferences | Chat Completions field support |
input, stored responses, or response tools | Responses field support |
usage.cost or generation IDs | Cost handling in the migration guide and generation records |
| Uploads and file purposes | Upload a file |
| An endpoint beyond chat | Operation 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")
PYExpected: 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.