CraftStory Heygen Video API

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

GitHub OpenAPI

Operations 7

GET /heygen-video/ List your HeyGen videos #
POST /heygen-video/ Create a HeyGen Video 1.0 clip #
POST /heygen-video/preview-cost/ Price a clip before creating it #
GET /heygen-video/{id}/ Get one HeyGen video #
DELETE /heygen-video/{id}/ Delete a FLUX 3 video #
GET /heygen-video/{id}/status/ Poll a job #
POST /heygen-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-heygen-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-heygen-video-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Craftstory Com Heygen Video API
  version: 1.0.0
  description: 'Operations tagged heygen-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: heygen-video
paths:
  /heygen-video/:
    parameters: []
    get:
      operationId: heygen-video_list
      summary: List your HeyGen videos
      description: 'HeyGen Video (HeyGen''s post-trained MiniMax H3, via fal.ai) — a photo as the first frame and a

        description in, a 5–15 s clip with generated sound out, 480p / 768p / 1080p; the clip keeps the

        photo''s proportions.'
      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:
      - heygen-video
    post:
      operationId: heygen-video_create
      summary: Create a HeyGen Video 1.0 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–15, `resolution` 480p / 768p / 1080p, optional `seed` to repeat a result. No `aspect_ratio` (the clip keeps the photo''s proportions) and no reference files.


        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:
      - heygen-video
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeedanceCreate'
        required: true
    servers:
    - url: https://api.craftstory.com/api/v1
  /heygen-video/preview-cost/:
    parameters: []
    post:
      operationId: heygen-video_preview_cost
      summary: Price a clip before creating it
      description: 'HeyGen Video (HeyGen''s post-trained MiniMax H3, via fal.ai) — a photo as the first frame and a

        description in, a 5–15 s clip with generated sound out, 480p / 768p / 1080p; the clip keeps the

        photo''s proportions.'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeedancePreviewCost'
      tags:
      - heygen-video
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SeedancePreviewCost'
        required: true
    servers:
    - url: https://api.craftstory.com/api/v1
  /heygen-video/{id}/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: heygen-video_read
      summary: Get one HeyGen video
      description: 'HeyGen Video (HeyGen''s post-trained MiniMax H3, via fal.ai) — a photo as the first frame and a

        description in, a 5–15 s clip with generated sound out, 480p / 768p / 1080p; the clip keeps the

        photo''s proportions.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Seedance'
      tags:
      - heygen-video
    delete:
      operationId: heygen-video_delete
      summary: Delete a FLUX 3 video
      description: 'HeyGen Video (HeyGen''s post-trained MiniMax H3, via fal.ai) — a photo as the first frame and a

        description in, a 5–15 s clip with generated sound out, 480p / 768p / 1080p; the clip keeps the

        photo''s proportions.'
      responses:
        '204':
          description: ''
      tags:
      - heygen-video
    servers:
    - url: https://api.craftstory.com/api/v1
  /heygen-video/{id}/status/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    get:
      operationId: heygen-video_job_status
      summary: Poll a job
      description: 'HeyGen Video (HeyGen''s post-trained MiniMax H3, via fal.ai) — a photo as the first frame and a

        description in, a 5–15 s clip with generated sound out, 480p / 768p / 1080p; the clip keeps the

        photo''s proportions.'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeedanceStatus'
      tags:
      - heygen-video
    servers:
    - url: https://api.craftstory.com/api/v1
  /heygen-video/{id}/upscale/:
    parameters:
    - name: id
      in: path
      required: true
      schema:
        type: string
    post:
      operationId: heygen-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:
      - heygen-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