Package Exports
- @apicity/openai
- @apicity/openai/zod
Readme
@apicity/openai
OpenAI / GPT provider for chat completions.
Runtime dependencies:
zod@^3.24.0— request schemas attached to every POST endpoint as.schema
Installation
npm install @apicity/openai
# or
pnpm add @apicity/openaiQuick Start
import { createOpenAi } from "@apicity/openai";
const openai = createOpenAi({ apiKey: process.env.OPENAI_API_KEY! });API Reference
49 endpoints across 11 groups. Each method mirrors an upstream URL path.
audio
POST openai.v1.audio.speech
POST https://api.openai.com/v1/audio/speech
const res = await openai.v1.audio.speech({ /* ... */ });POST openai.v1.audio.transcriptions
POST https://api.openai.com/v1/audio/transcriptions
const res = await openai.v1.audio.transcriptions({ /* ... */ });POST openai.v1.audio.translations
POST https://api.openai.com/v1/audio/translations
const res = await openai.v1.audio.translations({ /* ... */ });batches
GET openai.v1.batches
GET https://api.openai.com/v1/batches/{idOrOpts}
const res = await openai.v1.batches({ /* ... */ });POST openai.v1.batches
POST https://api.openai.com/v1/batches
const res = await openai.v1.batches({ /* ... */ });POST openai.v1.batches.cancel
POST https://api.openai.com/v1/batches/{id}/cancel
const res = await openai.v1.batches.cancel({ /* ... */ });chat
DELETE openai.v1.chat.completions
DELETE https://api.openai.com/v1/chat/completions/{id}
const res = await openai.v1.chat.completions({ /* ... */ });GET openai.v1.chat.completions
GET https://api.openai.com/v1/chat/completions/{idOrOpts}
const res = await openai.v1.chat.completions({ /* ... */ });GET openai.v1.chat.completions.messages
GET https://api.openai.com/v1/chat/completions/{id}/messages
const res = await openai.v1.chat.completions.messages({ /* ... */ });POST openai.v1.chat.completions
POST https://api.openai.com/v1/chat/completions/{id}
const res = await openai.v1.chat.completions({ /* ... */ });embeddings
POST openai.v1.embeddings
POST https://api.openai.com/v1/embeddings
const res = await openai.v1.embeddings({ /* ... */ });files
DELETE openai.v1.files
DELETE https://api.openai.com/v1/files/{id}
const res = await openai.v1.files({ /* ... */ });GET openai.v1.files
GET https://api.openai.com/v1/files/{idOrOpts}
const res = await openai.v1.files({ /* ... */ });GET openai.v1.files.content
GET https://api.openai.com/v1/files/{id}/content
const res = await openai.v1.files.content({ /* ... */ });POST openai.v1.files
POST https://api.openai.com/v1/files
const res = await openai.v1.files({ /* ... */ });fineTuning
DELETE openai.v1.fineTuning.checkpoints.permissions
DELETE https://api.openai.com/v1/fine_tuning/checkpoints/{checkpoint}/permissions/{permissionId}
const res = await openai.v1.fineTuning.checkpoints.permissions({ /* ... */ });GET openai.v1.fineTuning.checkpoints.permissions
GET https://api.openai.com/v1/fine_tuning/checkpoints/{checkpoint}/permissions
const res = await openai.v1.fineTuning.checkpoints.permissions({ /* ... */ });GET openai.v1.fineTuning.jobs
GET https://api.openai.com/v1/fine_tuning/jobs/{idOrOpts}
const res = await openai.v1.fineTuning.jobs({ /* ... */ });GET openai.v1.fineTuning.jobs.checkpoints
GET https://api.openai.com/v1/fine_tuning/jobs/{id}/checkpoints
const res = await openai.v1.fineTuning.jobs.checkpoints({ /* ... */ });GET openai.v1.fineTuning.jobs.events
GET https://api.openai.com/v1/fine_tuning/jobs/{id}/events
const res = await openai.v1.fineTuning.jobs.events({ /* ... */ });POST openai.v1.fineTuning.checkpoints.permissions
POST https://api.openai.com/v1/fine_tuning/checkpoints/{checkpoint}/permissions
const res = await openai.v1.fineTuning.checkpoints.permissions({ /* ... */ });POST openai.v1.fineTuning.jobs
POST https://api.openai.com/v1/fine_tuning/jobs
const res = await openai.v1.fineTuning.jobs({ /* ... */ });POST openai.v1.fineTuning.jobs.cancel
POST https://api.openai.com/v1/fine_tuning/jobs/{id}/cancel
const res = await openai.v1.fineTuning.jobs.cancel({ /* ... */ });POST openai.v1.fineTuning.jobs.pause
POST https://api.openai.com/v1/fine_tuning/jobs/{id}/pause
const res = await openai.v1.fineTuning.jobs.pause({ /* ... */ });POST openai.v1.fineTuning.jobs.resume
POST https://api.openai.com/v1/fine_tuning/jobs/{id}/resume
const res = await openai.v1.fineTuning.jobs.resume({ /* ... */ });images
POST openai.v1.images.edits
POST https://api.openai.com/v1/images/edits
const res = await openai.v1.images.edits({ /* ... */ });POST openai.v1.images.generations
POST https://api.openai.com/v1/images/generations
const res = await openai.v1.images.generations({ /* ... */ });POST openai.v1.images.variations
POST https://api.openai.com/v1/images/variations
const res = await openai.v1.images.variations({ /* ... */ });models
DELETE openai.v1.models
DELETE https://api.openai.com/v1/models/{id}
const res = await openai.v1.models({ /* ... */ });GET openai.v1.models
GET https://api.openai.com/v1/models/{id}
const res = await openai.v1.models({ /* ... */ });moderations
POST openai.v1.moderations
POST https://api.openai.com/v1/moderations
const res = await openai.v1.moderations({ /* ... */ });organization
GET openai.v1.organization.costs
GET https://api.openai.com/v1/organization/costs
const res = await openai.v1.organization.costs({ /* ... */ });GET openai.v1.organization.projects
GET https://api.openai.com/v1/organization/projects/{idOrOpts}
const res = await openai.v1.organization.projects({ /* ... */ });GET openai.v1.organization.projects.rateLimits
GET https://api.openai.com/v1/organization/projects/{projectId}/rate_limits
const res = await openai.v1.organization.projects.rateLimits({ /* ... */ });GET openai.v1.organization.usage.audioSpeeches
GET https://api.openai.com/v1/organization/usage/audio_speeches
const res = await openai.v1.organization.usage.audioSpeeches({ /* ... */ });GET openai.v1.organization.usage.audioTranscriptions
GET https://api.openai.com/v1/organization/usage/audio_transcriptions
const res = await openai.v1.organization.usage.audioTranscriptions({ /* ... */ });GET openai.v1.organization.usage.codeInterpreterSessions
GET https://api.openai.com/v1/organization/usage/code_interpreter_sessions
const res = await openai.v1.organization.usage.codeInterpreterSessions({ /* ... */ });GET openai.v1.organization.usage.completions
GET https://api.openai.com/v1/organization/usage/completions
const res = await openai.v1.organization.usage.completions({ /* ... */ });GET openai.v1.organization.usage.embeddings
GET https://api.openai.com/v1/organization/usage/embeddings
const res = await openai.v1.organization.usage.embeddings({ /* ... */ });GET openai.v1.organization.usage.images
GET https://api.openai.com/v1/organization/usage/images
const res = await openai.v1.organization.usage.images({ /* ... */ });GET openai.v1.organization.usage.moderations
GET https://api.openai.com/v1/organization/usage/moderations
const res = await openai.v1.organization.usage.moderations({ /* ... */ });GET openai.v1.organization.usage.vectorStores
GET https://api.openai.com/v1/organization/usage/vector_stores
const res = await openai.v1.organization.usage.vectorStores({ /* ... */ });responses
DELETE openai.v1.responses
DELETE https://api.openai.com/v1/responses/{id}
const res = await openai.v1.responses({ /* ... */ });GET openai.v1.responses
GET https://api.openai.com/v1/responses/{id}
const res = await openai.v1.responses({ /* ... */ });GET openai.v1.responses.inputItems
GET https://api.openai.com/v1/responses/{id}/input_items
const res = await openai.v1.responses.inputItems({ /* ... */ });POST openai.v1.responses
POST https://api.openai.com/v1/responses
const res = await openai.v1.responses({ /* ... */ });POST openai.v1.responses.cancel
POST https://api.openai.com/v1/responses/{id}/cancel
const res = await openai.v1.responses.cancel({ /* ... */ });POST openai.v1.responses.compact
POST https://api.openai.com/v1/responses/compact
const res = await openai.v1.responses.compact({ /* ... */ });POST openai.v1.responses.inputTokens
POST https://api.openai.com/v1/responses/input_tokens
const res = await openai.v1.responses.inputTokens({ /* ... */ });Middleware
import { createOpenAi, withRetry } from "@apicity/openai";
const openai = createOpenAi({ apiKey: process.env.OPENAI_API_KEY! });
const models = withRetry(openai.get.v1.models, { retries: 3 });Part of the apicity monorepo.
License
MIT — see LICENSE.