OpenAPI Spec
The VoxBurst API is described by an OpenAPI 3.0.3 spec. Use it to generate typed clients, validate requests, power IDE autocompletion, or import into API testing tools.
https://api.voxburst.io/v1/docs/openapi.yaml # YAML
https://api.voxburst.io/v1/docs/openapi.json # JSONThe spec reflects the live API. See Versioning & Compatibility for the guarantee: the API source code is ground truth, the spec is kept in sync with the implementation, and breaking changes are announced 30 days in advance.
Download
# Fetch YAML
curl -o voxburst.yaml https://api.voxburst.io/v1/docs/openapi.yaml
# Fetch JSON
curl -o voxburst.json https://api.voxburst.io/v1/docs/openapi.jsonGenerate a TypeScript client
openapi-typescript generates zero-runtime types directly from the spec. Pair it with openapi-fetch for a fully type-safe HTTP client.
npm install -D openapi-typescript openapi-fetch
npx openapi-typescript https://api.voxburst.io/v1/docs/openapi.yaml -o voxburst.d.tsThe generated types for the Post schema look like this:
// voxburst.d.ts (excerpt — generated from spec)
export interface components {
schemas: {
Post: {
id: string // cuid2, e.g. "post_abc123"
content: string
contentType: 'TEXT' | 'IMAGE' | 'VIDEO' | 'CAROUSEL' | 'STORY' | 'REEL' | 'THREAD' | null
status: 'draft' | 'scheduled' | 'publishing' | 'published' | 'partial' | 'failed' | 'cancelled' | 'unpublished'
scheduledFor: string | null // ISO 8601 UTC
publishedAt: string | null
firstComment: string | null
firstCommentDelay: number | null
tags: string[]
metadata: Record<string, unknown> | null
media: components['schemas']['MediaObject'][]
platforms: components['schemas']['PlatformResult'][]
threadPosts: components['schemas']['ThreadItem'][]
personaId: string | null
createdAt: string
updatedAt: string
}
CreatePostInput: {
content: string
accountIds: string[] // required — platform inferred from account
contentType?: 'TEXT' | 'IMAGE' | 'VIDEO' | 'CAROUSEL' | 'STORY' | 'REEL' | 'THREAD'
media?: string[]
scheduledFor?: string
saveAsDraft?: boolean
queue?: boolean
firstComment?: string
firstCommentDelay?: number
platformOverrides?: Record<string, { content?: string; media?: string[] }>
tags?: string[]
metadata?: Record<string, unknown>
personaId?: string
threadPosts?: components['schemas']['ThreadItem'][]
}
PlatformResult: {
postPlatformId: string
platform: string
accountId: string
accountName: string | null
status: 'pending' | 'publishing' | 'published' | 'failed' | 'skipped'
platformPostId: string | null
platformPostUrl: string | null
publishedAt: string | null
error: { code: string; message: string } | null
}
}
}Use with openapi-fetch for end-to-end type safety:
import createClient from 'openapi-fetch'
import type { paths } from './voxburst.d.ts'
const client = createClient<paths>({
baseUrl: 'https://api.voxburst.io/v1',
headers: { Authorization: `Bearer ${process.env.VOXBURST_API_KEY}` },
})
// Fully typed — IDE autocompletes fields, flags unknown keys at compile time
const { data, error } = await client.POST('/posts', {
body: {
content: 'Hello from a generated client!',
accountIds: ['acc_abc123'],
scheduledFor: '2026-07-01T15:00:00Z',
},
})Generate a Python client
openapi-generator-cli produces a full Python package with typed models and a requests-based client.
npx @openapitools/openapi-generator-cli generate \
-i https://api.voxburst.io/v1/docs/openapi.yaml \
-g python \
-o ./voxburst-client \
--additional-properties=packageName=voxburst_client,projectName=voxburst-clientGenerated client usage:
import voxburst_client
from voxburst_client.api.posts_api import PostsApi
from voxburst_client.model.create_post_input import CreatePostInput
configuration = voxburst_client.Configuration(
host="https://api.voxburst.io/v1",
access_token=os.environ["VOXBURST_API_KEY"],
)
with voxburst_client.ApiClient(configuration) as api_client:
api = PostsApi(api_client)
post = api.create_post(CreatePostInput(
content="Hello from the generated Python client!",
account_ids=["acc_abc123"],
scheduled_for="2026-07-01T15:00:00Z",
))
print(f"Created: {post.id}")Validate requests with Zod
openapi-zod-client generates Zod schemas directly from the spec — useful for validating request bodies before sending them to the API.
npx openapi-zod-client https://api.voxburst.io/v1/docs/openapi.yaml \
-o voxburst-schemas.tsThe generated schema for CreatePostInput matches the API contract exactly:
// voxburst-schemas.ts (excerpt — matches API contract)
import { z } from 'zod'
export const CreatePostInputSchema = z.object({
content: z.string().max(10_000),
accountIds: z.array(z.string()).min(1),
contentType: z.enum(['TEXT', 'IMAGE', 'VIDEO', 'CAROUSEL', 'STORY', 'REEL', 'THREAD']).optional(),
media: z.array(z.string()).optional(),
scheduledFor: z.string().datetime().optional(),
saveAsDraft: z.boolean().optional(),
queue: z.boolean().optional(),
firstComment: z.string().max(2200).optional(),
firstCommentDelay: z.number().int().min(0).max(60).optional(),
platformOverrides: z.record(z.object({
content: z.string().optional(),
media: z.array(z.string()).optional(),
})).optional(),
tags: z.array(z.string()).optional(),
metadata: z.record(z.unknown()).optional(),
})
// Validate before sending
const result = CreatePostInputSchema.safeParse(inputFromUser)
if (!result.success) {
console.error('Invalid post input:', result.error.flatten())
}Postman & Insomnia
Postman
- Open Postman → Import
- Select Link and paste:
https://api.voxburst.io/v1/docs/openapi.yaml - Postman generates a collection with all endpoints pre-populated
- Set
{{baseUrl}}tohttps://api.voxburst.io/v1and{{apiKey}}to your key
Other tooling
| Tool | Command |
|---|---|
| Redocly (hosted docs) | npx @redocly/cli preview-docs https://api.voxburst.io/v1/docs/openapi.yaml |
Go client (oapi-codegen) | oapi-codegen -package voxburst -generate types,client voxburst.yaml > voxburst.gen.go |
| Mock server (Prism) | npx @stoplight/prism-cli mock https://api.voxburst.io/v1/docs/openapi.yaml |
| Spectral lint | npx @stoplight/spectral-cli lint https://api.voxburst.io/v1/docs/openapi.yaml |