Nova Content
Developer API

Build with the Nova Content API

Generate images, voiceovers, and music programmatically with a single API key. Every call uses the same credits as your Nova Content account — no separate billing to set up.

Introduction

The Nova Content API is a simple HTTPS/JSON API. Send a request with your API key and a prompt, and get back generated media. All endpoints are served from your Nova Content domain under /api.

Base URL

loading…
Heads up: media endpoints return the result inline as a base64 data: URL in the JSON response (not a hosted file link). Decode it client-side or save it to your own storage.

Authentication

Authenticate every request with your secret API key in the Authorization header as a Bearer token. Keys start with nc_live_. Keep them secret — anyone with your key can spend your credits.

Authorization: Bearer nc_live_your_secret_key

Don't have a key yet? Create one below (free — you just need a Nova Content account).

Your API keys

Create, copy, and revoke your API keys here. You can have up to 5 active keys.

Loading…

Never run out of credits

Turn on auto-recharge and we'll automatically top up your balance with a credit pack whenever it drops below your chosen threshold — so your API calls never hard-stop mid-integration. We charge the card you save here, and the credits land in your non-expiring pack balance.

Loading…

JavaScript / TypeScript SDK

A zero-dependency SDK that works in Node 18+, Deno, Bun, and the browser. Import it directly from your Nova Content domain — no install step:

Or download nova-content.js and bundle it with your app.

Example

The SDK exposes generateImage, generateVoice, generateMusic, listVoices, and getUsage. Errors throw a NovaContentError with status and body.

Rate limits

Each API key is limited to requests per minute. Every response includes these headers so you can track your budget:

HeaderMeaning
X-RateLimit-LimitMax requests allowed per minute for your key.
X-RateLimit-RemainingRequests left in the current window.
Retry-AfterSeconds to wait before retrying (only on a 429 response).

If you exceed the limit you'll get a 429 Too Many Requests response. Back off for the number of seconds in Retry-After and try again.

Generate image

POST/api/generate/image   5 credits / image

Create an image from a text prompt.

Body parameters

FieldTypeRequiredDescription
promptstringrequiredWhat to generate.
stylestringoptionalOne of photographic, digital-art, comic-book, anime, 3d-model, cinematic, fantasy-art, neon-punk, isometric. Default photographic.
aspectRatiostringoptionale.g. 1:1, 16:9, 9:16. Default 1:1.

Example request

Example response

{
  "imageUrl": "data:image/png;base64,iVBORw0KGgo…",
  "creditsUsed": 5,
  "creditsRemaining": 695,
  "provider": "stability"
}

Generate voice

POST/api/generate/voice   10 credits min

Convert text to a natural-sounding voiceover. Cost is max(10, ceil(text.length × 0.01)) credits.

Body parameters

FieldTypeRequiredDescription
textstringrequiredThe text to speak.
voiceIdstringoptionalA voice ID from GET /api/generate/voices. Default is "Rachel".
stabilitynumberoptional0–1. Default 0.45.
similarityBoostnumberoptional0–1. Default 0.82.
stylenumberoptional0–1. Default 0.35.

Example request

Example response

{
  "audioUrl": "data:audio/mpeg;base64,SUQzBA…",
  "creditsUsed": 10,
  "creditsRemaining": 685
}

List available voices: GET/api/generate/voices

Generate music

POST/api/generate/music   15 (clip) / 30 (full)

Generate a music track from a text prompt. There are two tiers: Quick Clip (≤30s, 15 credits) and Full Song (up to 3 min, 30 credits). The tier is auto-derived from durationSec (over 30s ⇒ full) unless you set tier explicitly.

Body parameters

FieldTypeRequiredDescription
promptstringrequiredDescribe the music (genre, mood, instruments).
durationSecnumberoptionalTarget length in seconds.
tierstringoptionalclip or full. Overrides auto-detection.
instrumentalbooleanoptionalGenerate without vocals.

Example request

Example response

{
  "audioUrl": "data:audio/mpeg;base64,SUQzBA…",
  "tier": "clip",
  "creditsUsed": 15,
  "creditsRemaining": 670
}

Errors

The API uses standard HTTP status codes. Error responses are JSON with an error message.

StatusMeaning
400Bad request — a required field is missing or invalid.
401Invalid or revoked API key.
402Insufficient credits. Response includes credits and required.
429Rate limit exceeded. Includes retryAfterSeconds.
503A generation provider is temporarily unavailable — retry shortly.

Usage

Track how many calls each of your keys has made.

Sign in to see your usage.