SDK compatibility
What works with Draftworks — official SDKs, frameworks, and tools — and what is not implemented.
Draftworks implements the OpenAI wire format. The rule of thumb: anything that lets you set an OpenAI-compatible base URL works. Set it to:
https://www.draftworks.dev/v1Compatibility matrix
| Client | Status | Configuration |
|---|---|---|
| OpenAI Python SDK | Fully supported | OpenAI(base_url=..., api_key=...) |
| OpenAI TypeScript SDK | Fully supported | new OpenAI({ baseURL, apiKey }) |
| Vercel AI SDK | Supported | createOpenAI({ baseURL, apiKey }) |
| LangChain | Supported | ChatOpenAI(base_url=..., api_key=...) |
| LlamaIndex | Supported | OpenAILike(api_base=..., is_chat_model=True) |
| LiteLLM | Supported | model openai/gpt-5.5 with api_base |
| Continue, Cursor-style tools | Supported | Any OpenAI-compatible provider entry with a custom base URL |
Chat Completions, the Responses API, streaming, tool calling, structured outputs, and vision inputs all pass through unchanged, so framework features built on those primitives (agents, output parsers, function-calling abstractions) work as they do against OpenAI.
Official OpenAI SDKs
from openai import OpenAI
client = OpenAI(
base_url="https://www.draftworks.dev/v1",
api_key="dw_live_...",
)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://www.draftworks.dev/v1",
apiKey: process.env.DRAFTWORKS_API_KEY,
});Both client.chat.completions and client.responses work, including .stream() helpers.
Vercel AI SDK
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";
const draftworks = createOpenAI({
baseURL: "https://www.draftworks.dev/v1",
apiKey: process.env.DRAFTWORKS_API_KEY,
});
const { text } = await generateText({
model: draftworks("gpt-5.5"),
prompt: "Summarize RFC 9110 section 9 in five bullets.",
});streamText and tool calling work as with any OpenAI provider instance.
LangChain
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.5",
base_url="https://www.draftworks.dev/v1",
api_key="dw_live_...",
)LlamaIndex
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="gpt-5.5",
api_base="https://www.draftworks.dev/v1",
api_key="dw_live_...",
is_chat_model=True,
)LiteLLM
Prefix the model with openai/ so LiteLLM routes it as an OpenAI-compatible provider:
from litellm import completion
response = completion(
model="openai/gpt-5.5",
api_base="https://www.draftworks.dev/v1",
api_key="dw_live_...",
messages=[{"role": "user", "content": "ping"}],
)The same values work in LiteLLM Proxy config (model: openai/gpt-5.5, api_base, api_key).
Editor and agent tools
Continue, Cursor-style assistants, aider, and similar tools accept a custom OpenAI-compatible provider: set the base URL to https://www.draftworks.dev/v1, the API key to your dw_live_... key, and the model to gpt-5.5.
Not implemented
Draftworks serves GPT-5.5 inference only. The following OpenAI endpoints are not implemented. Any /v1/* path that Draftworks does not serve returns 404 with type: "invalid_request_error" and code: "unknown_endpoint", and a message naming the implemented endpoints (/v1/chat/completions, /v1/responses, /v1/models, /v1/receipts/{id}):
- Embeddings (
/v1/embeddings) - Images (
/v1/images/*) - Audio — speech, transcription, translation (
/v1/audio/*) - Batch (
/v1/batches) - Fine-tuning (
/v1/fine_tuning/*)
If a framework feature depends on one of these (e.g. a vector-store integration calling embeddings), point that feature at a different provider and route only chat/responses traffic through Draftworks. Frameworks above all support per-capability provider configuration.
Anything else
If a tool speaks the OpenAI wire format but is not listed here, it almost certainly works. The two integration details worth knowing in advance: streamed responses end with an extra usage-bearing chunk (OpenAI-standard, see streaming), and error responses use the standard OpenAI envelope with one extra code, insufficient_credits (see errors).