CraftStory Flux 3 Video API

The flux-3-video API from CraftStory — 5 operation(s) for flux-3-video.

GitHub OpenAPI

Operations 7

GET /flux-3-video/ List your FLUX 3 videos #
POST /flux-3-video/ Create a FLUX 3 Video clip #
POST /flux-3-video/preview-cost/ Price a clip before creating it #
GET /flux-3-video/{id}/ Get one FLUX 3 video #
DELETE /flux-3-video/{id}/ Delete a FLUX 3 video #
GET /flux-3-video/{id}/status/ Poll a job #
POST /flux-3-video/{id}/upscale/ Upscale a finished 480p / 720p video x2 #

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/craftstory-com:craftstory-com-flux-3-video-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

craftstory-com-flux-3-video-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Craftstory Com Flux 3 Video API
  version: 1.0.0
  description: 'Operations tagged flux-3-video across 2 of this provider''s published API definitions: craftstory-com-swagger.json, craftstory-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.craftstory.com/api/v1
security:
- ApiKey: []
tags:
- name: flux-3-video
paths:
  /flux-3-video/:
    parameters: []
    get:
      operationId: flux-3-video_list
      summary: List your FLUX 3 videos
      description: 'FLUX 3 Video (Black Forest Labs, via fal.ai) — a photo as the first frame and a description

        in, a 5–20 s clip with its own sound out, 720p or 1080p.


        Same record shape and polling as Seedance: ``POST``, poll ``GET /flux-3-video/{id}/status/``,

        then read ``video_url`` from ``GET /flux-3-video/{id}/``.'
      parameters:
      - name: limit
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      - name: offset
        in: query
        description: The initial index from which to return the results.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Seedance'
      tags:
      - flux-3-video
    post:
      operationId: flux-3-video_create
      summary: Create a FLUX 3 Video clip
      description: 'Multipart. `image` (file or public https URL) becomes the first frame; `user_prompt` describes how the scene unfolds and what is said — the model writes and speaks the soundtrack itself. `duration_s` 5–20, `resolution` 720p / 1080p, optional `aspect_ratio` (16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 2:1; omit to follow the photo). No reference files. The seed the model used is reported on the finished record.


        Credits are charged up front and refunded in full if the job fails or is rejected: check the price with `POST /preview-cost/`. Poll `GET /{id}/status/`, then read `video_url` from `GET /{id}/`.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Seedance'
      tags:
      - flux-3-video
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeedanceCreate'
        required: true
    servers:
    - url: https://api.craftstory.com/api/v1
  /flux-3-video/preview-cost/:
    parameters: []
    post:
      operationId: flux-3-video_preview_cost
      summary: Price a clip before creating it
      description: 'FLUX 3 Video (Black Forest Labs, via fal.ai) — a photo as the first frame and a description

        in, a 5–20 s clip with its own sound out, 720p or 1080p.


        Same record shape and polling as Seedance: ``POST``, poll ``GET /flux-3-video/{id}/status/``,

        then read ``video_url`` from ``GET /flux-3-video/{id}/``.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeedancePreviewCost'
      tags:
      - flux-3-video
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeedancePreviewCost'
        required: true
    servers:
    - url: https://api.craftstory.com/api/v1
  /flux-3-video/{id}/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: flux-3-video_read
      summary: Get one FLUX 3 video
      description: 'FLUX 3 Video (Black Forest Labs, via fal.ai) — a photo as the first frame and a description

        in, a 5–20 s clip with its own sound out, 720p or 1080p.


        Same record shape and polling as Seedance: ``POST``, poll ``GET /flux-3-video/{id}/status/``,

        then read ``video_url`` from ``GET /flux-3-video/{id}/``.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Seedance'
      tags:
      - flux-3-video
    delete:
      operationId: flux-3-video_delete
      summary: Delete a FLUX 3 video
      description: 'FLUX 3 Video (Black Forest Labs, via fal.ai) — a photo as the first frame and a description

        in, a 5–20 s clip with its own sound out, 720p or 1080p.


        Same record shape and polling as Seedance: ``POST``, poll ``GET /flux-3-video/{id}/status/``,

        then read ``video_url`` from ``GET /flux-3-video/{id}/``.'
      responses:
        '204':
          description: ''
      tags:
      - flux-3-video
    servers:
    - url: https://api.craftstory.com/api/v1
  /flux-3-video/{id}/status/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: flux-3-video_job_status
      summary: Poll a job
      description: 'FLUX 3 Video (Black Forest Labs, via fal.ai) — a photo as the first frame and a description

        in, a 5–20 s clip with its own sound out, 720p or 1080p.


        Same record shape and polling as Seedance: ``POST``, poll ``GET /flux-3-video/{id}/status/``,

        then read ``video_url`` from ``GET /flux-3-video/{id}/``.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeedanceStatus'
      tags:
      - flux-3-video
    servers:
    - url: https://api.craftstory.com/api/v1
  /flux-3-video/{id}/upscale/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    post:
      operationId: flux-3-video_make_upscale
      summary: Upscale a finished 480p / 720p video x2
      description: Creates a NEW record that carries the upscaled result (480p -> 960p, 720p -> 1440p); the original stays. Flat upscale rate per second; poll the new id like any other job. 1080p results and upscales themselves cannot be upscaled.
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Seedance'
      tags:
      - flux-3-video
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Seedance'
        required: true
    servers:
    - url: https://api.craftstory.com/api/v1
components:
  schemas:
    SeedancePreviewCost:
      required:
      - duration_s
      - resolution
      type: object
      properties:
        duration_s:
          title: Duration s
          type: integer
          maximum: 30
          minimum: 3
        resolution:
          title: Resolution
          type: string
          enum:
          - 480p
          - 720p
          - 768p
          - 1080p
        input_video_s:
          title: Input video s
          type: number
          default: 0.0
          maximum: 30
          minimum: 0
    SeedanceStatus:
      type: object
      properties:
        status:
          title: Status
          type: string
          enum:
          - created
          - in_progress_moderation
          - rejected_image
          - rejected_text
          - in_progress_video_queued
          - in_progress_video_generating
          - done
          - failed
        status_failed:
          title: Status failed
          type:
          - string
          - 'null'
          enum:
          - failed_image_moderation
          - rejected_image
          - rejected_not_a_photograph
          - rejected_by_provider
          - rejected_face_at_resolution
          - rejected_output
          - rejected_output_audio
          - rejected_text
          - failed_generation
          - failed_download
          - null
        status_failed_display:
          title: Status failed display
          type: string
          readOnly: true
        status_percentage:
          title: Status percentage
          type: integer
          maximum: 32767
          minimum: 0
        credits_refunded:
          title: Credits refunded
          type: boolean
          readOnly: true
    SeedanceCreate:
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type:
          - string
          - 'null'
          maxLength: 512
        image:
          title: Image
          type: string
          readOnly: true
          format: uri
        user_prompt:
          title: Scene description
          type: string
        duration_s:
          title: Duration s
          type: integer
          default: 5
          maximum: 30
          minimum: 3
        resolution:
          title: Resolution
          type: string
          enum:
          - 480p
          - 720p
          - 768p
          - 1080p
          default: 720p
        aspect_ratio:
          title: Aspect ratio
          type: string
          enum:
          - '16:9'
          - '1:1'
          - '21:9'
          - '2:1'
          - '3:4'
          - '4:3'
          - '9:16'
        mode:
          title: Mode
          type: string
          enum:
          - first_frame
          - reference
          default: reference
        seed:
          title: Seed
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
        credits:
          title: Credits
          type: integer
          readOnly: true
        references:
          type: array
          items:
            type: string
            readOnly: true
            format: uri
        reference_kinds:
          type: array
          items:
            type: string
            minLength: 1
        reference_captions:
          type: array
          items:
            type: string
    Seedance:
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type:
          - string
          - 'null'
          readOnly: true
          minLength: 1
        model:
          title: Model
          type: string
          enum:
          - seedance-2.5
          - flux-3-video
          - flux-3-max
          - minimax-h3-max
          - heygen-video
          - gemini-omni-flash
          readOnly: true
        status:
          title: Status
          type: string
          enum:
          - created
          - in_progress_moderation
          - rejected_image
          - rejected_text
          - in_progress_video_queued
          - in_progress_video_generating
          - done
          - failed
          readOnly: true
        status_failed:
          title: Status failed
          type:
          - string
          - 'null'
          enum:
          - failed_image_moderation
          - rejected_image
          - rejected_not_a_photograph
          - rejected_by_provider
          - rejected_face_at_resolution
          - rejected_output
          - rejected_output_audio
          - rejected_text
          - failed_generation
          - failed_download
          - null
          readOnly: true
        status_percentage:
          title: Status percentage
          type: integer
          readOnly: true
        seed:
          title: Seed
          type:
          - integer
          - 'null'
          readOnly: true
        image:
          title: Image
          type: string
          readOnly: true
          format: uri
        image_1000:
          title: Image 1000
          type:
          - string
          - 'null'
          readOnly: true
        user_prompt:
          title: Scene description
          type: string
          readOnly: true
          minLength: 1
        mode:
          title: Mode
          type: string
          enum:
          - first_frame
          - reference
          readOnly: true
        duration_s:
          title: Requested duration, seconds
          type: integer
          readOnly: true
        resolution:
          title: Resolution
          type: string
          readOnly: true
          minLength: 1
        aspect_ratio:
          title: Aspect ratio
          type: string
          readOnly: true
          minLength: 1
        video:
          title: Video
          type:
          - string
          - 'null'
          readOnly: true
          format: uri
        video_url:
          title: Video url
          description: Signed URL of the result MP4; null until status is done.
          type:
          - string
          - 'null'
          readOnly: true
        video_first_frame:
          title: Video first frame
          type:
          - string
          - 'null'
          readOnly: true
          format: uri
        video_first_frame_1000:
          title: Video first frame 1000
          type:
          - string
          - 'null'
          readOnly: true
        video_duration:
          title: Video duration
          description: In seconds
          type:
          - integer
          - 'null'
          readOnly: true
        credits:
          title: Credits
          type: integer
          readOnly: true
        credits_refunded:
          title: Credits refunded
          type: boolean
          readOnly: true
        is_upscale:
          title: Is upscale
          type: boolean
          readOnly: true
        references:
          type: array
          items:
            type: object
          readOnly: true
        asset:
          title: Asset
          type:
          - string
          - 'null'
          format: uuid
          readOnly: true
        created:
          title: Created
          type: string
          format: date-time
          readOnly: true
        updated:
          title: Updated
          type: string
          format: date-time
          readOnly: true
    SeedanceCreate_2:
      type: object
      properties:
        id:
          title: Id
          type: string
          format: uuid
          readOnly: true
        name:
          title: Name
          type:
          - string
          - 'null'
          maxLength: 512
        image:
          title: Image
          type: string
          readOnly: true
          format: uri
        user_prompt:
          title: Scene description
          type: string
        duration_s:
          title: Duration s
          type: integer
          default: 5
          maximum: 30
          minimum: 3
        resolution:
          title: Resolution
          type: string
          enum:
          - 480p
          - 720p
          - 768p
          - 1080p
          default: 720p
        aspect_ratio:
          title: Aspect ratio
          type: string
          enum:
          - 969
          - 61
          - 1269
          - 121
          - 184
          - 243
          - 556
        mode:
          title: Mode
          type: string
          enum:
          - first_frame
          - reference
          default: reference
        seed:
          title: Seed
          type:
          - integer
          - 'null'
          maximum: 2147483647
          minimum: 0
        credits:
          title: Credits
          type: integer
          readOnly: true
        references:
          type: array
          items:
            type: string
            readOnly: true
            format: uri
        reference_kinds:
          type: array
          items:
            type: string
            minLength: 1
        reference_captions:
          type: array
          items:
            type: string
  requestBodies:
    Seedance:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Seedance'
      required: true
    SeedanceCreate:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SeedanceCreate_2'
      required: true
    SeedancePreviewCost:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SeedancePreviewCost'
      required: true
  securitySchemes:
    ApiKey:
      type: apiKey
      name: Authorization
      in: header
      description: Enter 'Bearer sk-cs-...' (your API key from Account → API Access).
x-refined-from:
- craftstory-com-swagger.json
- craftstory-com-openapi.yml