> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evolink.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Wan2.7 텍스트에서 비디오로

> - WAN2.7 (wan2.7-text-to-video) 모델은 텍스트→동영상 생성을 지원하며, 텍스트 프롬프트로부터 매끄러운 동영상을 생성합니다
- **다중 샷 내러티브:** `prompt`의 자연어로 샷 구조 제어
  - 단일 샷: 프롬프트에 "단일 샷 동영상 생성"을 명시
  - 다중 샷: "다중 샷 동영상 생성" 또는 타임스탬프 분할 샷 리스트(예: "샷 1 [0-3초] 와이드: 비 오는 밤거리") 사용
  - 기본: 미지정 시 모델이 `prompt` 내용을 자체 해석
- **오디오 처리:**
  - `audio_urls` 제공: 모델이 해당 오디오를 구동 소스로 사용
  - `audio_urls` 미제공: 모델이 영상 내용에 맞는 배경음악 또는 효과음을 자동 생성
- 비동기 처리 모드, 반환된 작업 ID로 [상태 조회](/ko/api-manual/task-management/get-task-detail)
- 생성된 동영상 링크는 24시간 유효합니다. 가능한 한 빨리 저장하세요



## OpenAPI

````yaml ko/api-manual/video-series/wan2.7/wan2.7-text-to-video.json POST /v1/videos/generations
openapi: 3.1.0
info:
  title: wan2.7-text-to-video API
  description: WAN2.7 모델로 텍스트에서 동영상을 생성합니다. 간소화된 모델 파라미터 구성을 지원합니다
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: 프로덕션 환경
security:
  - bearerAuth: []
paths:
  /v1/videos/generations:
    post:
      tags:
        - 동영상 생성
      summary: wan2.7-text-to-video API
      description: >-
        - WAN2.7 (wan2.7-text-to-video) 모델은 텍스트→동영상 생성을 지원하며, 텍스트 프롬프트로부터 매끄러운
        동영상을 생성합니다

        - **다중 샷 내러티브:** `prompt`의 자연어로 샷 구조 제어
          - 단일 샷: 프롬프트에 "단일 샷 동영상 생성"을 명시
          - 다중 샷: "다중 샷 동영상 생성" 또는 타임스탬프 분할 샷 리스트(예: "샷 1 [0-3초] 와이드: 비 오는 밤거리") 사용
          - 기본: 미지정 시 모델이 `prompt` 내용을 자체 해석
        - **오디오 처리:**
          - `audio_urls` 제공: 모델이 해당 오디오를 구동 소스로 사용
          - `audio_urls` 미제공: 모델이 영상 내용에 맞는 배경음악 또는 효과음을 자동 생성
        - 비동기 처리 모드, 반환된 작업 ID로 [상태
        조회](/ko/api-manual/task-management/get-task-detail)

        - 생성된 동영상 링크는 24시간 유효합니다. 가능한 한 빨리 저장하세요
      operationId: createWan27TextToVideoGeneration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Wan27TextToVideoRequest'
            examples:
              single_shot:
                summary: 단일 샷 텍스트→동영상
                value:
                  model: wan2.7-text-to-video
                  prompt: 달빛 아래를 달리는 작은 아기 고양이
                  aspect_ratio: '16:9'
                  duration: 5
              multi_shot_storyboard:
                summary: 다중 샷 스토리보드
                value:
                  model: wan2.7-text-to-video
                  prompt: >-
                    긴장감 있는 형사 추격극. 샷 1 [0-3초] 와이드: 비 오는 밤거리, 네온이 깜박임. 샷 2 [3-6초]
                    미디엄: 형사가 오래된 건물로 들어감. 샷 3 [6-9초] 클로즈업: 단호한 눈빛, 멀리 사이렌 소리. 샷
                    4 [9-12초] 미디엄: 어두운 복도를 신중히 전진. 샷 5 [12-15초] 클로즈업: 핵심 단서를
                    발견하며 깨달음의 표정.
                  aspect_ratio: '16:9'
                  duration: 15
              with_audio:
                summary: 구동 오디오 사용
                value:
                  model: wan2.7-text-to-video
                  prompt: 황금 갑옷을 입은 작고 귀여운 카툰 고양이 장군이 군마를 타고 고전 시를 낭송함
                  audio_urls:
                    - https://example.com/recital.mp3
                  duration: 10
              with_negative_prompt:
                summary: 네거티브 프롬프트 사용
                value:
                  model: wan2.7-text-to-video
                  prompt: 달빛 아래를 달리는 작은 아기 고양이
                  negative_prompt: 꽃
      responses:
        '200':
          description: 동영상 작업 생성 성공
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoGenerationResponse'
        '400':
          description: 요청 파라미터 오류
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: invalid_request
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: 인증되지 않음, 토큰이 유효하지 않거나 만료됨
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: 할당량 부족, 충전 필요
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: insufficient_quota
                  message: Insufficient quota. Please top up your account.
                  type: insufficient_quota
        '403':
          description: 접근 권한 없음
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: model_access_denied
                  message: 'Token does not have access to model: wan2.7-text-to-video'
                  type: invalid_request_error
        '429':
          description: 요청 빈도 한도 초과
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: rate_limit_exceeded
                  message: Too many requests, please try again later
                  type: rate_limit_error
        '500':
          description: 서버 내부 오류
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: internal_error
                  message: Internal server error
                  type: api_error
components:
  schemas:
    Wan27TextToVideoRequest:
      required:
        - model
        - prompt
      type: object
      properties:
        model:
          type: string
          description: 모델명, `wan2.7-text-to-video` 고정
          enum:
            - wan2.7-text-to-video
          example: wan2.7-text-to-video
        prompt:
          type: string
          description: >-
            동영상 생성용 텍스트 프롬프트. 중국어와 영어 지원, 각 글자/문자를 1자로 카운트하며 초과분은 자동으로 잘립니다. 최대
            5000자


            **다중 샷 내러티브:** 자연어로 샷 구조 제어

            - 단일 샷: 프롬프트에 "단일 샷 동영상 생성"을 명시

            - 다중 샷: "다중 샷 동영상 생성" 또는 타임스탬프 분할 샷 리스트(예: "샷 1 [0-3초]") 사용
          maxLength: 5000
          example: 달빛 아래를 달리는 작은 아기 고양이
        negative_prompt:
          type: string
          description: >-
            동영상에 나타나지 않기를 원하는 내용을 기술하는 네거티브 프롬프트. 중국어와 영어 지원, 최대 500자, 초과분은 자동으로
            잘립니다
          maxLength: 500
          example: 흐림, 저품질
        audio_urls:
          type: array
          items:
            type: string
            format: uri
          minItems: 1
          maxItems: 1
          description: >-
            구동 오디오 URL 배열(선택). **현재 1개 요소만 지원**


            **동작:**

            - 제공: 모델이 해당 오디오를 구동 소스로 사용

            - 미제공: 모델이 영상 내용에 맞는 배경음악 또는 효과음을 자동 생성


            **포맷 요구사항:**

            - 지원 포맷: `wav`, `mp3`

            - 길이: `2 ~ 30`초

            - 파일 크기: `15MB` 이하


            **잘림 처리:**

            - 오디오 길이가 `duration`을 초과하면 앞 N초만 사용하고 나머지는 폐기

            - 오디오 길이가 동영상 길이보다 짧으면 나머지 부분은 무음. 예: 오디오 3초, 동영상 5초인 경우 앞 3초는 유음, 뒤
            2초는 무음
          example:
            - https://example.com/audio.mp3
        quality:
          type: string
          description: |-
            동영상 품질, 기본값 `720p`

            **옵션:**
            - `720p`: 표준 화질, 표준 가격(기본)
            - `1080p`: 고화질, 가격 상승
          enum:
            - 720p
            - 1080p
          default: 720p
          example: 720p
        aspect_ratio:
          type: string
          description: >-
            동영상 종횡비, 기본값 `16:9`


            **품질 등급별 출력 해상도:**


            | 품질 | 16:9 | 9:16 | 1:1 | 4:3 | 3:4 |

            | --- | --- | --- | --- | --- | --- |

            | 720p | 1280×720 | 720×1280 | 960×960 | 1104×832 | 832×1104 |

            | 1080p | 1920×1080 | 1080×1920 | 1440×1440 | 1648×1248 | 1248×1648
            |
          enum:
            - '16:9'
            - '9:16'
            - '1:1'
            - '4:3'
            - '3:4'
          default: '16:9'
          example: '16:9'
        duration:
          type: number
          description: |-
            동영상 길이(초), 범위 2-15

            **참고:**
            - `2~15`초 사이의 정수 값 지원
            - 최종 청구는 실제 생성된 동영상 길이를 기준으로 함
          minimum: 2
          maximum: 15
          default: 5
          example: 5
        seed:
          type: integer
          description: |-
            랜덤 시드, 기본값은 랜덤

            **설명:**
            - 범위: `1` ~ `2147483647`
            - 시드를 고정하면 프롬프트 반복 시 변동을 줄이고 재현성을 높입니다
          minimum: 1
          maximum: 2147483647
          example: 42
        prompt_extend:
          type: boolean
          description: >-
            프롬프트 지능 재작성 활성화 여부. 활성화 시 대형 모델이 프롬프트를 최적화하여 단순하거나 설명이 부족한 프롬프트의 결과를
            크게 개선합니다.


            **참고:** 기본값은 `false`입니다. 필드를 생략하거나 `false`를 보내면 재작성이 발생하지 않습니다.
            활성화하려면 명시적으로 `true`를 보내세요.
          default: false
          example: false
        callback_url:
          type: string
          description: >-
            작업 완료 시의 HTTPS 콜백 URL


            **콜백 시점:**

            - 작업 완료(completed), 실패(failed), 취소(cancelled) 시 트리거

            - 청구 확정 후 전송


            **보안 제약:**

            - HTTPS만 지원

            - 내부 IP 주소(127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x 등)로의 콜백
            금지

            - URL 길이는 `2048`자 이하


            **콜백 메커니즘:**

            - 타임아웃: `10`초

            - 실패 시 최대 `3`회 재시도(실패 후 `1`/`2`/`4`초 시점)

            - 콜백 응답 형식은 작업 조회 API와 동일

            - 2xx 상태 코드는 성공으로 간주, 그 외는 재시도 트리거
          format: uri
          example: https://your-domain.com/webhooks/video-task-completed
    VideoGenerationResponse:
      type: object
      properties:
        created:
          type: integer
          description: 작업 생성 타임스탬프
          example: 1757169743
        id:
          type: string
          description: 작업 ID
          example: task-unified-1757169743-7cvnl5zw
        model:
          type: string
          description: 실제로 사용한 모델명
          example: wan2.7-text-to-video
        object:
          type: string
          enum:
            - video.generation.task
          description: 작업의 구체적인 종류
        progress:
          type: integer
          description: 작업 진행률 (0-100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: 작업 상태
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/VideoTaskInfo'
          description: 동영상 작업 상세 정보
        type:
          type: string
          enum:
            - text
            - image
            - audio
            - video
          description: 작업 출력 유형
          example: video
        usage:
          $ref: '#/components/schemas/Usage'
          description: 사용량 및 청구 정보
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: 오류 코드 식별자
            message:
              type: string
              description: 오류 설명
            type:
              type: string
              description: 오류 유형
    VideoTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: 작업 취소 가능 여부
          example: true
        estimated_time:
          type: integer
          description: 예상 완료 시간(초)
          minimum: 0
          example: 120
    Usage:
      type: object
      description: 사용량 및 청구 정보
      properties:
        billing_rule:
          type: string
          description: 청구 규칙
          enum:
            - per_call
            - per_token
            - per_second
          example: per_call
        credits_reserved:
          type: number
          description: 예상 소비 크레딧
          minimum: 0
          example: 5
        user_group:
          type: string
          description: 사용자 그룹 카테고리
          enum:
            - default
            - vip
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: |-
        ## 모든 API는 Bearer Token 인증이 필요합니다 ##

        **API Key 받기:**

        [API Key 관리 페이지](https://evolink.ai/dashboard/keys)에서 API Key를 받으세요

        **요청 헤더에 추가:**
        ```
        Authorization: Bearer YOUR_API_KEY
        ```

````