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.com

Quick 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:

Header
x-api-key: your_api_key_here

2. Browse artists

Find an artist whose style fits your use case:

Request
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:

Request
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"
  }'
Response (202)
{
  "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:

Request
curl https://api.antekirt.com/api/v1/generations/aa471b83-3153-48fe-8d42-79476ff73e75 \
  -H "x-api-key: your_api_key_here"
Response (200)
{
  "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

GET
/api/v1/account/me

Returns your account details and credit balance.

Response
{
  "data": {
    "id": "e18bd582-5e9b-46b6-b531-55a294b2eb5d",
    "email": "you@example.com",
    "username": "your_username",
    "credits": 500,
    "subscriptionPlan": null,
    "subscriptionStatus": null
  }
}

List API keys

GET
/api/v1/account/api-keys

Returns your API keys (masked for security).

Response
{
  "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

GET
/api/v1/artists

Browse available verified artists.

ParameterTypeRequiredDescription
pageintegerdefault: 1Page number
limitintegerdefault: 25Results per page (1-100)
searchstringoptionalSearch by artist name
orderstringdefault: createdAt"createdAt" or "name"
directionstringdefault: DESC"ASC" or "DESC"
Response
{
  "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

GET
/api/v1/artists/:id

Get detailed info about a specific artist.

ParameterTypeRequiredDescription
iduuidrequiredArtist ID
Response
{
  "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

GET
/api/v1/models

Browse all available trained models.

ParameterTypeRequiredDescription
pageintegerdefault: 1Page number
limitintegerdefault: 25Results per page (1-100)
artistIduuidoptionalFilter by artist
serviceTypestringoptionalFilter by type (e.g. "illustration")
searchstringoptionalSearch by model name
orderstringdefault: createdAt"createdAt" or "name"
directionstringdefault: DESC"ASC" or "DESC"
Response
{
  "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

GET
/api/v1/models/:id

Get detailed info about a specific model.

ParameterTypeRequiredDescription
iduuidrequiredModel ID

Generations

List generations

GET
/api/v1/generations

List your past generations.

ParameterTypeRequiredDescription
pageintegerdefault: 1Page number
limitintegerdefault: 25Results per page (1-100)
artistIduuidoptionalFilter by artist
serviceTypestringoptionalFilter by service type
orderstringdefault: createdAt"createdAt"
directionstringdefault: DESC"ASC" or "DESC"
Response
{
  "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

GET
/api/v1/generations/:id

Get a single generation with outputs.

ParameterTypeRequiredDescription
iduuidrequiredGeneration ID

Use this endpoint to poll for completion after submitting a generation request. See Async Pattern.

Generate Image

POST
/api/v1/generations/image

Generate an illustration using an artist's style. Costs 3 credits.

Request body

ParameterTypeRequiredDescription
artistIduuidrequiredID of the artist to generate with
promptstringrequiredText prompt (1-2000 characters)
Request
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"
  }'
Response (202 Accepted)
{
  "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

POST
/api/v1/generations/svg

Vectorize a generated image to SVG. Costs 5 credits.

Request body

ParameterTypeRequiredDescription
generationIduuidrequiredID of an existing completed generation
imageIndexintegerdefault: 0Which image to vectorize (if multiple)
Request
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
  }'
Response (202 Accepted)
{
  "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

POST
/api/v1/generations/video

Generate a video from an existing image. Costs 25 credits.

Request body

ParameterTypeRequiredDescription
generationIduuidrequiredID of an existing completed generation
imageIndexintegerdefault: 0Which raster image to animate
promptstringrequiredMotion/animation prompt (1-2000 chars)
durationintegerdefault: 4Video duration in seconds (2-10)
fpsintegerdefault: 24Frames per second (12-60)
resolutionstringdefault: 480p"480p" or "720p"
aspectRatiostringdefault: 16:9"16:9", "9:16", or "1:1"
cameraFixedbooleandefault: falseLock camera position
Request
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"
  }'
Response (202 Accepted)
{
  "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

  1. SubmitPOST /api/v1/generations/image returns { status: "processing" }
  2. PollGET /api/v1/generations/:id every 2-5 seconds
  3. Done — When status is "completed", the outputs object contains your results

Status values

StatusMeaning
processingImage generation in progress
processing_svgSVG conversion in progress
processing_videoVideo generation in progress
completedGeneration finished, outputs available
failedGeneration failed

Polling example

JavaScript
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, or null
  • video — Generated video result, or null

Credits

Each operation consumes credits from your account balance. Check your balance at any time via GET /api/v1/account/me.

OperationEndpointCost
Image generationPOST /generations/image3 credits
SVG conversionPOST /generations/svg5 credits
Video generationPOST /generations/video25 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

CodeMeaning
200Success
202Accepted — generation started, poll for results
400Bad request — invalid parameters or body
401Unauthorized — missing or invalid API key
402Insufficient credits
403Forbidden — e.g. accessing a private artist
404Not found
500Internal server error

Common errors

  • "Invalid API key" — Check your x-api-key header
  • "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.