kreatorflow-ai Images API

The Images API from kreatorflow-ai — 3 operation(s) for images.

Operations 5

POST /v1/images Create an image generation job #
POST /v1/characters Register a reusable character with mode=register, or create a… #
GET /v1/characters List reusable characters registered for the API key workspace #
GET /v1/characters/{character_id} Read one reusable character by id or slug #
DELETE /v1/characters/{character_id} Soft-delete one reusable character by id or slug #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kreatorflow-ai:kreatorflow-ai-images-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kreatorflow-ai-images-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kreatorflow Ai Images API
  version: '2026-06-10'
  contact:
    name: KreatorFlow
    url: https://kreatorflow.ai/developers
    email: harry@kreatorflow.ai
  termsOfService: https://kreatorflow.ai/terms
  description: 'Operations tagged Images across 2 of this provider''s published API definitions: developers.kreatorflow.ai-openapi.json, kreatorflow-ai-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://kreatorflow.ai
  description: Production
security:
- bearerAuth: []
- apiKeyHeader: []
tags:
- name: Images
paths:
  /v1/images:
    post:
      operationId: postImages
      summary: Create an image generation job
      description: 'Create an image generation job. Required scope: images:create. Rate limit: 60 per 60 seconds per account.'
      tags:
      - Images
      x-required-scope: images:create
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageRequest'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - data
                properties:
                  success:
                    type: boolean
                    const: true
                  data:
                    $ref: '#/components/schemas/CreateJobResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/InsufficientBalance'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
    servers:
    - url: https://kreatorflow.ai
      description: Production
  /v1/characters:
    post:
      operationId: postCharacters
      summary: Register a reusable character with mode=register, or create a…
      description: 'Register a reusable character with mode=register, or create a character-reference image job when a prompt is supplied. Required scope: images:create. Rate limit: 60 per 60 seconds per account.'
      tags:
      - Images
      x-required-scope: images:create
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CharacterRequest'
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - data
                properties:
                  success:
                    type: boolean
                    const: true
                  data:
                    $ref: '#/components/schemas/Character'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
    get:
      operationId: getCharacters
      summary: List reusable characters registered for the API key workspace
      description: 'List reusable characters registered for the API key workspace. Required scope: images:create. Rate limit: 60 per 60 seconds per account.'
      tags:
      - Images
      x-required-scope: images:create
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - data
                properties:
                  success:
                    type: boolean
                    const: true
                  data:
                    type: object
                    additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
    servers:
    - url: https://kreatorflow.ai
      description: Production
  /v1/characters/{character_id}:
    get:
      operationId: getCharactersByCharacterId
      summary: Read one reusable character by id or slug
      description: 'Read one reusable character by id or slug. Required scope: images:create. Rate limit: 60 per 60 seconds per account.'
      tags:
      - Images
      x-required-scope: images:create
      parameters:
      - name: character_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - data
                properties:
                  success:
                    type: boolean
                    const: true
                  data:
                    $ref: '#/components/schemas/Character'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
    delete:
      operationId: deleteCharactersByCharacterId
      summary: Soft-delete one reusable character by id or slug
      description: 'Soft-delete one reusable character by id or slug. Required scope: images:create. Rate limit: 60 per 60 seconds per account.'
      tags:
      - Images
      x-required-scope: images:create
      parameters:
      - name: character_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - data
                properties:
                  success:
                    type: boolean
                    const: true
                  data:
                    type: object
                    additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
    servers:
    - url: https://kreatorflow.ai
      description: Production
webhooks:
  jobEvent:
    post:
      operationId: jobEventWebhook
      summary: Job finished
      description: 'Sent to the webhook_url of a job when it ends (job.completed, job.failed, job.canceled, job.blocked). Headers: X-KreatorFlow-Event-Id, X-KreatorFlow-Event-Type, X-KreatorFlow-Job-Id, X-KreatorFlow-Timestamp, X-KreatorFlow-Signature. X-KreatorFlow-Signature is t=,v1=."> with your workspace signing secret (Webhooks tab in the console); reject events older than 5 minutes and use the event id to skip duplicates. Each event is attempted up to 3 times; answer 2xx quickly.'
      parameters:
      - name: X-KreatorFlow-Event-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-KreatorFlow-Event-Type
        in: header
        required: true
        schema:
          type: string
      - name: X-KreatorFlow-Job-Id
        in: header
        required: true
        schema:
          type: string
      - name: X-KreatorFlow-Timestamp
        in: header
        required: true
        schema:
          type: string
      - name: X-KreatorFlow-Signature
        in: header
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - object
              - id
              - type
              - created
              - data
              properties:
                object:
                  type: string
                  const: kreatorflow.developer_webhook_event
                id:
                  type: string
                type:
                  type: string
                  enum:
                  - job.completed
                  - job.failed
                  - job.canceled
                  - job.blocked
                created:
                  type: string
                  format: date-time
                data:
                  type: object
                  properties:
                    job:
                      $ref: '#/components/schemas/Job'
            example:
              object: kreatorflow.developer_webhook_event
              id: evt_<job_id>_completed
              type: job.completed
              created: '2026-10-17T12:01:10.000Z'
              data:
                job:
                  id: <job_id>
                  status: completed
                  providerOutputUrl: https://kreatorflow.ai/v1/jobs/<job_id>/output
      responses:
        '200':
          description: Any 2xx acknowledges the event.
      tags:
      - Images
    servers:
    - url: https://kreatorflow.ai
      description: Production
components:
  schemas:
    Character:
      type: object
      properties:
        character_id:
          type: string
          description: reusable character id; id is also returned with the same value
        slug:
          type: string
          description: workspace-unique character slug
        variable_ref:
          type: string
          description: variable reference token for the character slug, for use in prompts
        upload_id:
          type: string
          description: the owned image upload_id the character was registered from, or null
        status:
          type: string
          description: '"ready", "pending", or "failed" (reusable asset provisioning state)'
        name:
          type: string
          description: developer-facing character label or null
        prompt:
          type: string
          description: stored appearance note or null
        created_at:
          type: string
          description: ISO 8601 timestamp
        updated_at:
          type: string
          description: ISO 8601 timestamp
      additionalProperties: true
    CharacterRequest:
      type: object
      properties:
        mode:
          type: string
          description: register/save/asset to save a reusable character; omit for prompt-mode generation
        name:
          type: string
          description: string optional developer-facing label
        upload_id:
          type: string
          description: string required for register mode; owned image upload_id from POST /v1/uploads
        prompt:
          type: string
          description: string required for prompt-mode generation; describe character appearance, wardrobe, pose, style, and composition
        description:
          type: string
          description: string optional alias/fallback for prompt
        model:
          type: string
          description: string optional image alias, defaults to kreator-image-pro
        aspect_ratio:
          type: string
          description: string optional
        ratio:
          type: string
          description: alias for aspect_ratio
        resolution:
          type: string
          description: string optional
        reference_upload_ids:
          type: array
          items:
            type: string
          description: array required for prompt-mode generation when character_ids is omitted; owned image upload_id values from POST /v1/uploads; use readable images at least 300px wide
        reference_image_upload_ids:
          type: array
          items:
            type: string
          description: array optional alias; owned image upload_id values
        character_ids:
          type: array
          items:
            type: string
          description: array optional; reusable character ids/slugs from POST /v1/characters mode=register
        safety_identifier:
          type: string
          description: string optional, max 64 chars
        webhook_url:
          type: string
          format: uri
          description: https url optional; receives terminal job callbacks
        callback_url:
          type: string
          description: alias for webhook_url
        idempotency_key:
          type: string
          description: string optional body fallback; prefer Idempotency-Key header
      additionalProperties: true
    ImageRequest:
      type: object
      properties:
        model:
          type: string
          description: string optional, defaults to kreator-image-pro
        prompt:
          type: string
          description: string required
        response_format:
          type: string
          description: url optional; defaults to url
        watermark:
          type: boolean
          description: boolean optional, defaults to false
        seed:
          type: integer
          description: integer optional
        aspect_ratio:
          type: string
          description: string optional
        ratio:
          type: string
          description: alias for aspect_ratio
        resolution:
          type: string
          description: string optional
        references:
          type: array
          items:
            $ref: '#/components/schemas/Reference'
          description: array optional; supports url or upload_id
        reference_upload_ids:
          type: array
          items:
            type: string
          description: array optional; image upload_id values
        reference_image_upload_ids:
          type: array
          items:
            type: string
          description: array optional; image upload_id values
        character_ids:
          type: array
          items:
            type: string
          description: array optional; reusable character ids/slugs from POST /v1/characters mode=register
        safety_identifier:
          type: string
          description: string optional, max 64 chars
        webhook_url:
          type: string
          format: uri
          description: https url optional; receives terminal job callbacks
        callback_url:
          type: string
          description: alias for webhook_url
        idempotency_key:
          type: string
          description: string optional body fallback; prefer Idempotency-Key header
      required:
      - prompt
      additionalProperties: true
    Job:
      type: object
      properties:
        id:
          type: string
          description: string
        mediaType:
          type: string
          description: image, video, or audio
        modelId:
          type: string
          description: stable KreatorFlow model alias
        status:
          type: string
          description: created, queued, processing, completed, failed, canceled, or blocked
          enum:
          - created
          - queued
          - processing
          - completed
          - failed
          - canceled
          - blocked
        provider:
          type: string
          description: KreatorFlow routing label or null; upstream routing names are not exposed
        providerJobId:
          type: string
          description: always null in public API responses; poll by the KreatorFlow job id
        providerOutputId:
          type: string
          description: always null in public API responses
        providerOutputUrl:
          type: string
          description: KreatorFlow-authenticated output URL or null; fetch with your API key and store the output in your own storage
        providerOutputExpiresAt:
          type: string
          description: output URL expiry timestamp or null
        errorCode:
          type: string
          description: string or null
        errorMessage:
          type: string
          description: string or null
        resolution:
          type: string
          description: 'string optional; video jobs: the requested output resolution'
        warnings:
          type: array
          items:
            type: string
          description: array optional; includes video_reference_fallback_omitted_clips when a fallback output omitted video clip references
      additionalProperties: true
    Reference:
      type: object
      properties:
        type:
          type: string
          enum:
          - image_url
          - video_url
          - audio_url
        url:
          type: string
          description: public https url
        upload_id:
          type: string
          description: workspace-scoped upload_id returned by POST /v1/uploads
        role:
          type: string
          description: optional content role such as first_frame, last_frame, reference_image, reference_video, reference_audio
      additionalProperties: true
    Error:
      type: object
      required:
      - success
      - code
      - error
      properties:
        success:
          type: boolean
          const: false
        code:
          type: string
          description: Machine-readable error code.
          enum:
          - account_not_active
          - aspect_ratio_not_supported
          - audio_reference_too_long
          - audio_too_long
          - audio_too_short
          - audio_unreadable
          - audio_upload_not_found
          - character_not_found
          - character_pending
          - character_reference_limit_exceeded
          - character_reference_unusable
          - character_reference_upload_required
          - character_registration_failed
          - character_trusted_asset_failed
          - dispatch_disabled
          - duration_not_supported
          - face_consent_required
          - generation_dispatch_failed
          - generation_dispatch_missing
          - generation_failed
          - generation_output_missing
          - generation_poll_failed
          - generation_rejected
          - generation_timeout
          - generation_unavailable
          - image_rejected
          - image_upload_not_found
          - insufficient_balance
          - internal_error
          - invalid_api_key
          - job_not_found
          - model_not_found
          - paid_account_required
          - paid_check_unavailable
          - prompt_required
          - prompt_too_long
          - rate_limited
          - reference_asset_failed
          - reference_asset_pending
          - reference_combination_not_supported
          - reference_rejected
          - reference_upload_invalid
          - reference_upload_not_found
          - reference_upload_unusable
          - resolution_not_supported
          - response_format_not_supported
          - schema_missing
          - scope_missing
          - storage_not_configured
          - upload_id_invalid
          - upload_in_use
          - upload_invalid
          - upload_not_found
          - upload_state_error
          - upload_too_large
          - video_edit_model_not_supported
          - video_edit_source_must_be_video
          - video_edit_source_not_found
          - video_edit_source_required
          - voice_not_found
          - voice_required
        error:
          type: string
          description: Human-readable message.
      additionalProperties: true
    CreateJobResult:
      type: object
      properties:
        job:
          type: string
          description: accepted job object; image/character dispatch can continue asynchronously, while video create attempts KreatorFlow dispatch before returning
        balance_tokens:
          type: number
          description: number current developer token balance after reservation or replay
        quoted_token_cost:
          type: number
          description: number token quote for the submitted request
        estimated_token_cost:
          type: number
          description: number compatibility alias for quoted_token_cost
        idempotent_replay:
          type: boolean
          description: boolean optional; true when the same Idempotency-Key returned an existing job instead of creating or dispatching another one
      additionalProperties: true
  responses:
    RateLimited:
      description: Too many requests in the window.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait.
    BadRequest:
      description: 'Invalid request. prompt_required: No prompt (or text for speech) was sent. prompt_too_long: The prompt is over the model''s limit. model_not_found: Unknown model alias. duration_not_supported: The model doesn''t offer that length. aspect_ratio_not_supported: The model doesn''t offer that aspect ratio. resolution_not_supported: The model doesn''t offer that resolution. reference_combination_not_supported: These references can''t be combined, e.g. start/end frames with reference images. upload_invalid: The upload request is missing a field or has a bad type. video_edit_model_not_supported: Video edits need a Seedance 2.0 family model (2.0, Fast or Mini). video_edit_source_required: A video edit needs a source clip. voice_required: Speech needs a voice. audio_reference_too_long: The audio references add up to more than the model accepts in total (15 s on Seedance 2.0, 30 s on 2.5). Nothing was charged. audio_too_short: The voice track is under 4 seconds. Nothing was charged. audio_too_long: The voice track is over 5 minutes. Nothing was charged. audio_unreadable: The audio couldn''t be read. Nothing was charged.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: 'Not found. job_not_found: No job with that id for this key''s account. character_not_found: The character id or slug doesn''t exist. upload_not_found: The upload_id doesn''t exist in this workspace. reference_upload_not_found: A reference upload_id doesn''t exist in this workspace. video_edit_source_not_found: The source_video_upload_id doesn''t exist. image_upload_not_found: The image_upload_id isn''t in this workspace. audio_upload_not_found: The audio_upload_id isn''t in this workspace (or audio_job_id isn''t a completed /v1/audio job).'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InsufficientBalance:
      description: 'Not enough tokens for the quoted cost; top up and retry. insufficient_balance: Not enough tokens for the quoted cost.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: 'Missing, wrong or revoked API key. invalid_api_key: The key is missing, wrong or revoked.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        WWW-Authenticate:
          schema:
            type: string
          description: Bearer challenge (on /v1/mcp).
    Forbidden:
      description: 'Not allowed. account_not_active: The developer account is suspended. scope_missing: The key lacks the scope this endpoint needs. paid_account_required: Lip Sync needs a paid account. Nothing was charged.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      schema:
        type: string
        maxLength: 255
      description: Send the same key when retrying a create and you get the original job back instead of a second one.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your KreatorFlow API key (kf_...) as a bearer token. Keep it on your server.
    apiKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: Alternative to the Authorization header.
externalDocs:
  description: Developer docs
  url: https://developers.kreatorflow.ai/?section=docs
x-refined-from:
- developers.kreatorflow.ai-openapi.json
- kreatorflow-ai-openapi.json
x-job-error-codes:
- code: reference_rejected
  meaning: A reference did not pass screening.
- code: reference_asset_pending
  meaning: A new reference is still being reviewed.
- code: reference_asset_failed
  meaning: The reference did not pass review.
- code: generation_rejected
  meaning: The request was declined (prompt, reference or options).
- code: generation_timeout
  meaning: The job ran out of time after automatic retries.
- code: generation_unavailable
  meaning: The model is temporarily unavailable.
- code: generation_failed
  meaning: The generation failed.