API Documentation
Everything you need to integrate Antekirt generative visuals into your product.
Get your API key
Contact us to receive your API credentials and start integrating. Or use your email/password to use login endpoint and get api key.
Introduction
The Antekirt API provides programmatic access to curated, artist-backed generative AI models. Generate illustrations, convert them to SVG vectors, and create videos — all with clear commercial rights and attribution metadata.
Key concepts:
- Artists — Verified creators whose styles are trained into models
- Models — Specific trained versions of an artist's style
- Generations — Output images, SVGs, or videos created from a model
- Credits — Currency used to pay for generations
Base URL:
https://api.antekirt.comQuick Start
Get your first generation in 3 steps:
1. Get your API key
Contact us to receive your API key. Once you have it, include it in every request:
x-api-key: your_api_key_here2. Browse artists
Find an artist whose style fits your use case:
curl https://api.antekirt.com/api/v1/artists \
-H "x-api-key: your_api_key_here"Copy the id of the artist you want to use.
3. Generate an image
Submit a generation request. The API responds immediately with a generation ID:
curl -X POST https://api.antekirt.com/api/v1/generations/image \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"artistId": "825a12f9-c650-488e-beb7-39d0c201f9e7",
"prompt": "a sunset over mountains with dramatic clouds"
}'{
"generationId": "aa471b83-3153-48fe-8d42-79476ff73e75",
"status": "processing",
"creditsUsed": 3,
"creditsRemaining": 497
}4. Poll for results
Poll GET /api/v1/generations/:id until status is completed:
curl https://api.antekirt.com/api/v1/generations/aa471b83-3153-48fe-8d42-79476ff73e75 \
-H "x-api-key: your_api_key_here"{
"data": {
"id": "aa471b83-3153-48fe-8d42-79476ff73e75",
"status": "completed",
"prompt": "a sunset over mountains with dramatic clouds",
"createdAt": "2026-03-04T09:43:26.538Z",
"artist": {
"id": "825a12f9-c650-488e-beb7-39d0c201f9e7",
"name": "Humberto Ventura",
"profilePictureUrl": "https://..."
},
"outputs": {
"images": [
{
"url": "https://res.cloudinary.com/.../image.webp",
"format": "webp",
"width": 1024,
"height": 1024
}
],
"svg": null,
"video": null
}
}
}Authentication
All API requests require an API key passed via the x-api-key header.
x-api-key: ak_2e1a9c97c684f8d6ccaeac7654a9035d853bbf18...API keys are tied to your user account. All generations, credit usage, and data access are scoped to the authenticated user. For now, you can register only with your email and password (not google oauth) and login using endpoint to get api key.
Get your API key
Contact us to receive your API credentials and start integrating. Or use your email/password to use login endpoint and get api key.
Account
Get account info
/api/v1/account/meReturns your account details and credit balance.
{
"data": {
"id": "e18bd582-5e9b-46b6-b531-55a294b2eb5d",
"email": "you@example.com",
"username": "your_username",
"credits": 500,
"subscriptionPlan": null,
"subscriptionStatus": null
}
}List API keys
/api/v1/account/api-keysReturns your API keys (masked for security).
{
"data": [
{
"id": "key-uuid",
"name": "default",
"keyMasked": "ak_2e1a...716c",
"createdAt": "2026-01-15T10:00:00.000Z",
"lastUsedAt": "2026-03-04T09:43:26.538Z",
"isActive": true
}
]
}Artists
List artists
/api/v1/artistsBrowse available verified artists.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | integer | default: 1 | Page number |
| limit | integer | default: 25 | Results per page (1-100) |
| search | string | optional | Search by artist name |
| order | string | default: createdAt | "createdAt" or "name" |
| direction | string | default: DESC | "ASC" or "DESC" |
{
"data": [
{
"id": "825a12f9-...",
"name": "Humberto Ventura",
"description": "Editorial illustrator specializing in...",
"tags": ["editorial", "watercolor"],
"profilePictureUrl": "https://...",
"artistExamplesImages": [...],
"triggerWord": "hventura_style",
"defaultServiceType": "illustration",
"createdAt": "2025-06-01T...",
"models": [
{ "id": "model-uuid", "name": "Watercolor v2", "serviceType": "illustration" }
]
}
],
"pagination": {
"page": 1,
"limit": 25,
"totalPages": 3,
"totalCount": 52
}
}Get artist by ID
/api/v1/artists/:idGet detailed info about a specific artist.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | uuid | required | Artist ID |
{
"data": {
"id": "825a12f9-...",
"name": "Humberto Ventura",
"description": "...",
"tags": ["editorial", "watercolor"],
"profilePictureUrl": "https://...",
"artistExamplesImages": [...],
"triggerWord": "hventura_style",
"defaultServiceType": "illustration",
"earnings": 1250,
"createdAt": "2025-06-01T...",
"models": [
{
"id": "model-uuid",
"name": "Watercolor v2",
"description": "...",
"tags": [...],
"profilePictureUrl": "https://...",
"modelExamplesImages": [...],
"serviceType": "illustration",
"defaultParams": { ... },
"createdAt": "2025-08-01T..."
}
]
}
}Models
List models
/api/v1/modelsBrowse all available trained models.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | integer | default: 1 | Page number |
| limit | integer | default: 25 | Results per page (1-100) |
| artistId | uuid | optional | Filter by artist |
| serviceType | string | optional | Filter by type (e.g. "illustration") |
| search | string | optional | Search by model name |
| order | string | default: createdAt | "createdAt" or "name" |
| direction | string | default: DESC | "ASC" or "DESC" |
{
"data": [
{
"id": "model-uuid",
"name": "Watercolor v2",
"description": "...",
"tags": ["watercolor", "editorial"],
"profilePictureUrl": "https://...",
"modelExamplesImages": [...],
"serviceType": "illustration",
"defaultParams": { ... },
"createdAt": "2025-08-01T...",
"artist": {
"id": "825a12f9-...",
"name": "Humberto Ventura"
}
}
],
"pagination": { "page": 1, "limit": 25, "totalPages": 2, "totalCount": 35 }
}Get model by ID
/api/v1/models/:idGet detailed info about a specific model.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | uuid | required | Model ID |
Generations
List generations
/api/v1/generationsList your past generations.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | integer | default: 1 | Page number |
| limit | integer | default: 25 | Results per page (1-100) |
| artistId | uuid | optional | Filter by artist |
| serviceType | string | optional | Filter by service type |
| order | string | default: createdAt | "createdAt" |
| direction | string | default: DESC | "ASC" or "DESC" |
{
"data": [
{
"id": "gen-uuid",
"status": "completed",
"prompt": "a sunset over mountains",
"createdAt": "2026-03-04T...",
"artist": {
"id": "artist-uuid",
"name": "Humberto Ventura",
"profilePictureUrl": "https://..."
},
"outputs": {
"images": [
{ "url": "https://...", "format": "webp", "width": 1024, "height": 1024 }
],
"svg": null,
"video": null
}
}
],
"pagination": { "page": 1, "limit": 25, "totalPages": 2, "totalCount": 50 }
}Get generation by ID
/api/v1/generations/:idGet a single generation with outputs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | uuid | required | Generation ID |
Use this endpoint to poll for completion after submitting a generation request. See Async Pattern.
Generate Image
/api/v1/generations/imageGenerate an illustration using an artist's style. Costs 3 credits.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| artistId | uuid | required | ID of the artist to generate with |
| prompt | string | required | Text prompt (1-2000 characters) |
curl -X POST https://api.antekirt.com/api/v1/generations/image \
-H "x-api-key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"artistId": "825a12f9-c650-488e-beb7-39d0c201f9e7",
"prompt": "a sunset over mountains with dramatic clouds"
}'{
"generationId": "aa471b83-3153-48fe-8d42-79476ff73e75",
"status": "processing",
"creditsUsed": 3,
"creditsRemaining": 497
}The image is generated asynchronously. Poll GET /api/v1/generations/:generationId until the status is completed.
Convert to SVG
/api/v1/generations/svgVectorize a generated image to SVG. Costs 5 credits.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| generationId | uuid | required | ID of an existing completed generation |
| imageIndex | integer | default: 0 | Which image to vectorize (if multiple) |
curl -X POST https://api.antekirt.com/api/v1/generations/svg \
-H "x-api-key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"generationId": "aa471b83-3153-48fe-8d42-79476ff73e75",
"imageIndex": 0
}'{
"generationId": "aa471b83-3153-48fe-8d42-79476ff73e75",
"status": "processing_svg",
"creditsUsed": 5,
"creditsRemaining": 492
}The generation must have status: "completed" before you can convert to SVG. Poll the generation until outputs.svg appears.
Generate Video
/api/v1/generations/videoGenerate a video from an existing image. Costs 25 credits.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| generationId | uuid | required | ID of an existing completed generation |
| imageIndex | integer | default: 0 | Which raster image to animate |
| prompt | string | required | Motion/animation prompt (1-2000 chars) |
| duration | integer | default: 4 | Video duration in seconds (2-10) |
| fps | integer | default: 24 | Frames per second (12-60) |
| resolution | string | default: 480p | "480p" or "720p" |
| aspectRatio | string | default: 16:9 | "16:9", "9:16", or "1:1" |
| cameraFixed | boolean | default: false | Lock camera position |
curl -X POST https://api.antekirt.com/api/v1/generations/video \
-H "x-api-key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"generationId": "aa471b83-3153-48fe-8d42-79476ff73e75",
"imageIndex": 0,
"prompt": "camera slowly panning across the scene",
"duration": 4,
"resolution": "480p"
}'{
"generationId": "aa471b83-3153-48fe-8d42-79476ff73e75",
"status": "processing_video",
"creditsUsed": 25,
"creditsRemaining": 467
}Async Pattern
All generation endpoints (image, SVG, video) are asynchronous. They return immediately with HTTP 202 Accepted and a generation ID. The actual processing happens in the background.
How it works
- Submit —
POST /api/v1/generations/imagereturns{ status: "processing" } - Poll —
GET /api/v1/generations/:idevery 2-5 seconds - Done — When
statusis"completed", theoutputsobject contains your results
Status values
| Status | Meaning |
|---|---|
| processing | Image generation in progress |
| processing_svg | SVG conversion in progress |
| processing_video | Video generation in progress |
| completed | Generation finished, outputs available |
| failed | Generation failed |
Polling example
async function waitForGeneration(generationId, apiKey) {
const maxAttempts = 60;
const interval = 3000; // 3 seconds
for (let i = 0; i < maxAttempts; i++) {
const res = await fetch(
`https://api.antekirt.com/api/v1/generations/${generationId}`,
{ headers: { "x-api-key": apiKey } }
);
const { data } = await res.json();
if (data.status === "completed") {
return data.outputs;
}
if (data.status === "failed") {
throw new Error("Generation failed");
}
await new Promise(r => setTimeout(r, interval));
}
throw new Error("Generation timed out");
}Response Format
Single resource
{
"data": { ... }
}Paginated list
{
"data": [ ... ],
"pagination": {
"page": 1,
"limit": 25,
"totalPages": 3,
"totalCount": 52
}
}Generation outputs
The outputs object on a completed generation has three fields:
{
"outputs": {
"images": [
{ "url": "https://...", "format": "webp", "width": 1024, "height": 1024 }
],
"svg": {
"url": "https://...", "format": "svg", "width": 1024, "height": 1024
},
"video": {
"url": "https://...", "format": "mp4", "width": 640, "height": 640
}
}
}images— Array of generated raster images (always present when completed)svg— SVG vectorization result, ornullvideo— Generated video result, ornull
Credits
Each operation consumes credits from your account balance. Check your balance at any time via GET /api/v1/account/me.
| Operation | Endpoint | Cost |
|---|---|---|
| Image generation | POST /generations/image | 3 credits |
| SVG conversion | POST /generations/svg | 5 credits |
| Video generation | POST /generations/video | 25 credits |
Credits are deducted immediately when you submit a generation. If the generation fails, credits are not automatically refunded — contact support if this happens.
Errors
Errors return a JSON response with a messages array:
{
"messages": [
{
"type": "ERROR",
"message": "Invalid API key"
}
]
}HTTP Status Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 202 | Accepted — generation started, poll for results |
| 400 | Bad request — invalid parameters or body |
| 401 | Unauthorized — missing or invalid API key |
| 402 | Insufficient credits |
| 403 | Forbidden — e.g. accessing a private artist |
| 404 | Not found |
| 500 | Internal server error |
Common errors
"Invalid API key"— Check yourx-api-keyheader"Insufficient credits"— Your account balance is too low for the operation"Generation is not yet completed"— Wait for the generation to finish before converting to SVG/video"Artist not found"— The artist ID is invalid or the artist has been deleted"params.id must be a valid GUID"— Ensure you're passing a full UUID
Get your API key
Contact us to receive your API credentials and start integrating. Or use your email/password to use login endpoint and get api key.