OpenAPI
The OpenAPI document describes the public v1 API routes and shared resource shapes.
ProteinIQ publishes an OpenAPI contract for the public API. Use it to inspect route definitions, generate clients, or keep integration tests aligned with the API surface.
Fetch the contract
The OpenAPI contract is served from the static public API asset:
https://proteiniq.io/api/v1/openapi.jsonDownload it with curl:
curl -s "https://proteiniq.io/api/v1/openapi.json" -o proteiniq-openapi.jsonThe contract is public. Data routes still require Authorization: Bearer <key>.
What it covers
The contract includes the public v1 routes:
GET /api/v1/accountGET /api/v1/toolsGET /api/v1/tools/{toolId}POST /api/v1/jobs/quotePOST /api/v1/jobsGET /api/v1/jobsGET /api/v1/jobs/{jobId}/statusGET /api/v1/jobs/{jobId}/eventsPOST /api/v1/jobs/{jobId}/cancelGET /api/v1/results/{jobId}GET /api/v1/filesPOST /api/v1/filesGET /api/v1/files/{fileId}DELETE /api/v1/files/{fileId}GET /api/v1/openapi.json
Tool-specific schemas
The OpenAPI contract describes the public route and shared request shapes. Tool-specific input, settings, output, and limit metadata should be read from GET /api/v1/tools/{toolId} because each tool has its own contract.
Use this pattern when building clients:
- Generate a general client from OpenAPI.
- Fetch the tool detail for the selected
toolId. - Validate your tool-specific input against the tool detail your integration expects.
- Submit through
POST /api/v1/jobs.
Generate a TypeScript client
You can use any OpenAPI-compatible generator. For example:
npx openapi-typescript https://proteiniq.io/api/v1/openapi.json \
-o proteiniq-api.d.tsThen use the generated types alongside runtime calls:
type ProteinIqPaths = import("./proteiniq-api").paths;
const response = await fetch("https://proteiniq.io/api/v1/account", {
headers: {
Authorization: `Bearer ${process.env.PROTEINIQ_API_KEY}`,
},
});
const account = await response.json();Keep clients current
Regenerate clients when you adopt new API routes or fields. For tool contracts, refresh from GET /api/v1/tools/{toolId} at integration setup time or pin the tool contract in your own test fixtures.