RendrKitDocs

API Reference

Generate design-ready images from text descriptions. Integrate RendrKit into your product with a single API call.

Base URLhttps://api.rendrkit.dev/v1

Authentication#

Authenticate every request with an API key sent in the Authorization header.

http
Authorization: Bearer rk_live_xxxxxxxxxxxxx
  • Production keys start with rk_live_
  • Sandbox keys start with rk_test_
  • Get your API key at rendrkit.dev

POST/api/v1/generate#

Generate a new image from a text prompt.

Request Body

promptstringrequired

Description of the image to generate.

sizestring

Width x Height format. Default 1080x1080. Presets: 1080x1080, 1200x628, 1920x1080, 1080x1920, 1280x720

stylestring

Visual style. One of modern | playful | corporate | dark | minimal | bold. Default modern

brandobject

Optional brand settings. { colors: ["#hex"], font: "string", logoUrl: "string" }

json
{
  "prompt": "Instagram post: Launch day announcement, dark theme",
  "size": "1080x1080",
  "style": "modern",
  "brand": {
    "colors": ["#6D28D9", "#F59E0B"],
    "font": "Inter",
    "logoUrl": "https://example.com/logo.png"
  }
}

Response 201

json
{
  "id": "img_abc123",
  "url": "https://cdn.rendrkit.dev/img_abc123.png",
  "width": 1080,
  "height": 1080,
  "format": "png",
  "prompt": "Instagram post: Launch day announcement, dark theme",
  "style": "modern",
  "createdAt": "2026-01-15T12:00:00Z"
}

GET/api/v1/images/:id#

Retrieve details for a previously generated image.

Response 200

json
{
  "id": "img_abc123",
  "url": "https://cdn.rendrkit.dev/img_abc123.png",
  "width": 1080,
  "height": 1080,
  "format": "png",
  "prompt": "Instagram post: Launch day announcement, dark theme",
  "style": "modern",
  "createdAt": "2026-01-15T12:00:00Z"
}

DELETE/api/v1/images/:id#

Permanently delete an image. This action cannot be undone.

Response 204

No content.

POST/api/v1/brand-kits#

Create a reusable brand kit with colors, fonts, and a logo.

Request Body

namestringrequired

Human-readable name for the brand kit.

colorsstring[]

Array of hex color codes.

fontstring

Font family name.

logoUrlstring

URL of the brand logo image.

json
{
  "name": "Acme Corp",
  "colors": ["#6D28D9", "#F59E0B", "#10B981"],
  "font": "Inter",
  "logoUrl": "https://example.com/acme-logo.png"
}

Response 201

json
{
  "id": "bk_xyz789",
  "name": "Acme Corp",
  "colors": ["#6D28D9", "#F59E0B", "#10B981"],
  "font": "Inter",
  "logoUrl": "https://example.com/acme-logo.png",
  "createdAt": "2026-01-15T12:00:00Z"
}

GET/api/v1/brand-kits#

List all brand kits for the authenticated account.

Response 200

json
[
  {
    "id": "bk_xyz789",
    "name": "Acme Corp",
    "colors": ["#6D28D9", "#F59E0B", "#10B981"],
    "font": "Inter",
    "logoUrl": "https://example.com/acme-logo.png",
    "createdAt": "2026-01-15T12:00:00Z"
  }
]

GET/api/v1/brand-kits/:id#

Retrieve a single brand kit by its ID.

Response 200

json
{
  "id": "bk_xyz789",
  "name": "Acme Corp",
  "colors": ["#6D28D9", "#F59E0B", "#10B981"],
  "font": "Inter",
  "logoUrl": "https://example.com/acme-logo.png",
  "createdAt": "2026-01-15T12:00:00Z"
}

PUT/api/v1/brand-kits/:id#

Update an existing brand kit. Send the full object; all fields are replaced.

Request Body

json
{
  "name": "Acme Corp (Updated)",
  "colors": ["#1E40AF", "#F59E0B"],
  "font": "Poppins",
  "logoUrl": "https://example.com/acme-logo-v2.png"
}

Response 200

Returns the updated brand kit object.

DELETE/api/v1/brand-kits/:id#

Permanently delete a brand kit. This action cannot be undone.

Response 204

No content.

GET/api/v1/usage#

Get the current billing period usage for the authenticated account.

Response 200

json
{
  "plan": "free",
  "quota": 50,
  "used": 12,
  "remaining": 38,
  "periodStart": "2026-02-01T00:00:00Z",
  "periodEnd": "2026-02-28T23:59:59Z"
}

Rate Limits#

Requests are rate-limited per API key. Exceeding the limit returns a 429 status with a RATE_LIMITED error code.

PlanRate Limit
Free10 req/min
Starter30 req/min
Pro60 req/min
Business120 req/min

Error Codes#

All errors return a JSON body with a code field and a human-readable message.

CodeHTTPDescription
INVALID_PROMPT400Prompt validation failed
UNAUTHORIZED401Missing or invalid API key
QUOTA_EXCEEDED429Monthly image quota reached
RATE_LIMITED429Too many requests
IMAGE_NOT_FOUND404Image not found
BRAND_KIT_NOT_FOUND404Brand kit not found
INTERNAL_ERROR500Server error
json
{
  "code": "INVALID_PROMPT",
  "message": "Prompt must be between 1 and 2000 characters."
}

Code Examples#

curl

bash
curl -X POST https://api.rendrkit.dev/v1/generate \
  -H "Authorization: Bearer rk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Instagram post: Launch day announcement, dark theme"}'

JavaScript

typescript
import { RendrKit } from '@rendrkit/sdk';

const rk = new RendrKit({ apiKey: 'rk_live_xxx' });

const image = await rk.generate({
  prompt: 'Blog OG image: How to Ship Fast',
});

console.log(image.url);

Python

python
import requests

resp = requests.post(
    "https://api.rendrkit.dev/v1/generate",
    headers={"Authorization": "Bearer rk_live_xxx"},
    json={"prompt": "YouTube thumbnail: 5 AI Tools, bold text"}
)

print(resp.json()["url"])

MCP Setup#

Use the @rendrkit/mcp package to let AI agents generate images via the Model Context Protocol.

Claude Desktop

Add this to your claude_desktop_config.json:

json
{
  "mcpServers": {
    "rendrkit": {
      "command": "npx",
      "args": ["-y", "@rendrkit/mcp"],
      "env": {
        "RENDRKIT_API_KEY": "rk_live_xxx"
      }
    }
  }
}

Cursor

Add this to your .cursor/mcp.json in the project root:

json
{
  "mcpServers": {
    "rendrkit": {
      "command": "npx",
      "args": ["-y", "@rendrkit/mcp"],
      "env": {
        "RENDRKIT_API_KEY": "rk_live_xxx"
      }
    }
  }
}

Built by RendrKit. Have questions? support@rendrkit.dev