작동 방식

모든 AI 영상 모델을 위한 하나의 API

언어 모델용 OpenRouter를 아신다면, Revana는 영상·이미지 생성을 위한 같은 개념입니다. Seedance, Veo, Kling, Wan, Nano Banana Pro, GPT Image 2와 나머지 카탈로그에 하나의 API 키, 하나의 요청 형식, 하나의 선불 잔액을 제공하며, 업스트림 경로가 실패하면 자동으로 폴백합니다.

각 모델을 직접 호출할 때의 문제

모든 모델 제작사는 자체 계정, 키, 요청 형식, 작업 상태 흐름, 과금을 갖춘 자체 API를 운영합니다. 세 곳에 대해 개발하면 유지해야 할 통합이 세 개, 충전해야 할 잔액이 세 개, 처리해야 할 오류 코드 체계가 세 개가 됩니다. 일부 모델은 여러 플랫폼에서 서로 다른 가격과 제한으로 제공되며, 처리 용량도 늘었다 줄었다 합니다.

새 모델을 시도하고 싶을 때 비용이 드러나며, 2026년에는 몇 달마다 일어나는 일입니다. 새 모델마다 제품에 맞는지 확인해 보기도 전에 통합을 하나 더 해야 합니다.

Revana의 작동 방식

  1. 하나의 키. 가입하고 대시보드에서 API 키를 만드세요. 카탈로그의 모든 모델에서 작동합니다.
  2. 하나의 요청. model id와 input 객체를 담아 POST /v1/generations를 보내세요. 필드 이름은 모든 모델에서 같습니다: prompt, image_url, end_image_url, image_urls, resolution, duration, aspect_ratio, audio.
  3. 실행 전에 가격 확인. 작업 가격은 카탈로그에서 가져오며 선불 잔액에서 보류됩니다. 모델이 지원하지 않는 필드나 값은 요금이 청구되기 전에 422로 거부됩니다. max_cost_usd를 상한으로 설정할 수도 있습니다.
  4. 라우팅. 라우터는 작업을 해당 모델에서 가장 저렴한 경로로 보냅니다. 경로가 실패하거나 시간이 초과되면 작업은 다음 경로로 넘어갑니다.
  5. 하나의 결과 형식. GET /v1/generations/{id}를 폴링하세요. 상태가 succeeded가 되면 파일은 output.urls에, 청구 금액은 cost_usd에 있습니다. 작업이 실패하면 보류가 해제됩니다.

작업은 비동기로 처리됩니다. 이미지는 보통 몇 초 걸리고, 영상은 1분 미만에서 몇 분까지 걸립니다. 전체 필드 레퍼런스와 오류 코드는 문서에 있습니다.

세 모델에 같은 요청 보내기

요청 형식이 공유되므로 모델 비교는 루프로 할 수 있습니다. 이 스크립트는 Seedance 2.0, Veo 3.1 Fast, Wan 3.0에 프롬프트 하나를 보낸 다음 각 결과와 비용을 출력합니다. 각 모델은 자체 옵션을 유지하므로 세 모델이 모두 지원하는 값을 고르세요. 여기서는 720p, 8초, 16:9입니다.

Python
import os
import time

import requests

API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}

PROMPT = (
    "A paper boat sails down a rain-soaked street gutter at dusk, "
    "neon signs reflected in the water. Rain, distant traffic."
)
MODELS = ["seedance-2.0", "veo-3.1-fast", "wan-3.0"]

# Submit the same job to every model; each call returns 202 with an id.
jobs = {}
for model in MODELS:
    resp = requests.post(f"{API}/generations", headers=HEADERS, json={
        "model": model,
        "input": {
            "prompt": PROMPT,
            "resolution": "720p",
            "duration": 8,
            "aspect_ratio": "16:9",
            "audio": True,
        },
        "max_cost_usd": 1.5,
    })
    resp.raise_for_status()
    jobs[model] = resp.json()["id"]

# Poll each job until it finishes.
for model, job_id in jobs.items():
    while True:
        job = requests.get(f"{API}/generations/{job_id}", headers=HEADERS).json()
        if job["status"] in ("succeeded", "failed"):
            break
        time.sleep(5)
    if job["status"] == "succeeded":
        print(model, job["output"]["urls"][0], job["cost_usd"])
    else:
        print(model, "failed:", job["error"])

2026년 10월 카탈로그 가격으로 세 작업의 비용은 다음과 같습니다.

세 모델에서 같은 요청의 가격
모델요청가격
Seedance 2.0720p, 8초, 소리는 요금에 포함$1.20
Veo 3.1 Fast720p, 8초, 소리 포함(별도 가격)$0.80
Wan 3.0720p, 8초, 소리는 요금에 포함$0.72

1.5의 max_cost_usd가 세 작업 모두에 적용됩니다. 상한을 초과하는 비용이 드는 작업은 실행되지 않습니다.

경로 간 폴백

경로는 모델에 대한 업스트림 처리 용량의 한 소스입니다. Revana의 많은 모델에는 경로가 둘 이상 있으며, 라우터는 순서대로 사용합니다.

  • 가장 저렴한 경로 먼저. 각 작업은 해당 옵션을 받아 주는 비용이 가장 낮은 경로로 갑니다.
  • 실패하면 다음 경로로. 그 경로가 실패하거나 시간이 초과되면 작업은 자동으로 다음 경로로 넘어갑니다. attempts 필드에 시도한 경로 수가 표시됩니다.
  • 같은 모델, 같은 가격. 모든 경로는 요청하신 모델을 표시된 가격으로 제공합니다. 라우터는 다른 모델로 바꿔 넣지 않습니다.
  • 한 번만 청구. 성공한 경로에만 청구됩니다. 모든 경로가 실패하면 작업은 failed로 끝나며 요금은 없습니다.
일부 인기 모델의 경로 수
모델종류경로
Seedance 2.5video경로 5개
Seedance 2.0video경로 3개
Kling 3.0video경로 2개
Veo 3.1 Fastvideo경로 2개
Veo 3.1video경로 2개
Wan 3.0video경로 3개
Nano Banana Proimage경로 1개
GPT Image 2image경로 2개

경로가 하나인 모델은 폴백할 수 없습니다. 폴백은 작업이 완료될 가능성을 높이지만 가동 시간을 보장하지는 않습니다. failed 작업은 코드에서 처리하세요. 예를 들어 나중에 재시도하거나 직접 다른 모델로 전환할 수 있습니다.

요금과 크레딧

Revana는 종량제입니다. 구독, 좌석, 월 최소 금액이 없습니다. $10, $50, $100, $500, $1,000, $5,000 팩으로 선불 크레딧을 구매해 어떤 모델에든 표시된 가격으로 사용합니다.

  • 대부분의 영상 모델은 출력 1초당, 해상도별로, 일부 모델은 소리 포함 여부에 따라 가격이 매겨집니다.
  • 이미지 모델은 크기별로 이미지당 가격이 매겨집니다.
  • 가격은 제출할 때 보류되고, 작업이 성공하면 청구되며, 실패하면 해제됩니다.

요금 페이지에 모든 모델의 가격이 나와 있습니다. 저희 가이드는 Seedance 2.0, Veo 3.1, Kling 3.0에서 일반적인 작업의 비용이 얼마인지 보여 줍니다.

코드에서 카탈로그 읽기

전체 카탈로그는 https://revana.si/data/models.json에 있는 공개 JSON 파일입니다. 각 모델의 주요 필드는 다음과 같습니다.

models.json의 필드
필드담고 있는 내용
id다음으로 보낼 문자열 model
name, maker표시 이름과 모델을 만든 회사
kindvideo or image
tasks모델이 받는 입력, 예를 들어 text_to_video 또는 image_to_video
options해상도, 화면 비율, 길이, 소리, 입력 이미지 제한
price단위(초당, 이미지당, 작업당)와 각 옵션의 가격
routes모델을 제공하는 경로 수

예를 들어 텍스트로 영상을 만들 수 있는 모든 모델을 나열하려면:

Shell
# Every model that can make a video from a text prompt
curl -s https://revana.si/data/models.json \
  | jq -r '.models[] | select(any(.tasks[]; . == "text_to_video")) | .id'

모델 선택기를 만들거나, 제출하기 전에 옵션을 확인하거나, 자체 인터페이스에서 작업 가격을 추정하는 데 사용하세요. 같은 데이터가 모델 페이지를 구동합니다.

전환하기 전에 알아 둘 것

  • 옵션은 모델마다 다릅니다. 필드 이름은 공유되지만 각 모델은 자체 값을 받습니다. 예를 들어 Kling 3.0에는 화면 비율 옵션이 없습니다. model 문자열을 바꾸기 전에 모델 페이지를 확인하세요.
  • 출력 링크는 만료됩니다. 완성된 파일을 다운로드해 자체 스토리지에 보관하세요.
  • 모델은 사용자가 선택합니다. 라우팅은 작업이 실행되는 위치를 바꿀 뿐, 어떤 모델이 실행하는지는 바꾸지 않습니다. 다른 모델로 폴백하는 것은 코드에서 결정할 일입니다.
  • 가격은 바뀔 수 있습니다. 카탈로그에는 항상 현재 가격이 표시되며, 각 작업의 가격은 제출할 때 확정됩니다.

시작할 준비가 되셨나요? API 키를 받고, 모델을 둘러보거나, 빠른 시작으로 시작하세요.

자주 묻는 질문

모든 AI 영상 모델을 위한 하나의 API가 있나요?

Revana는 Seedance, Veo, Kling, Wan, Hailuo, Grok Imagine, Nano Banana, GPT Image를 포함한 주요 영상·이미지 모델에 하나의 API 키, 하나의 요청 형식, 하나의 선불 잔액을 제공합니다. 각 모델은 자체 옵션과 가격을 유지합니다.

Revana는 OpenRouter와 어떻게 비슷한가요?

OpenRouter는 개발자에게 많은 언어 모델을 위한 하나의 API를 제공합니다. Revana는 영상·이미지 생성 모델에 대해 같은 일을 합니다. 하나의 키, 하나의 잔액, 그리고 같은 모델에 대한 여러 처리 용량 소스에 걸친 라우팅입니다.

업스트림 경로가 실패하면 어떻게 되나요?

모델에 경로가 둘 이상이면 라우터가 같은 표시 가격으로 작업을 다음 경로로 넘깁니다. 모든 경로가 실패하면 작업은 실패로 끝나고 보류된 금액이 해제됩니다.

제가 쓰는 모델을 사용할 수 없으면 Revana가 다른 모델로 바꾸나요?

아니요. 라우터는 경로만 바꾸고 모델은 절대 바꾸지 않습니다. 다른 모델로 폴백하려면 다른 모델 id로 새 요청을 보내는 방식으로 코드에서 처리하세요.

과금은 어떻게 동작하나요?

$10부터 $5,000까지의 팩으로 선불 크레딧을 구매하며 구독은 없습니다. 각 작업은 카탈로그 기준으로 가격이 매겨지고, 제출할 때 보류되며, 성공한 경우에만 청구됩니다.

코드에서 모델과 가격 목록을 어떻게 가져오나요?

https://revana.si/data/models.json을 가져오세요. 모든 모델의 id, 제작사, 작업, 옵션, 가격, 경로 수가 나와 있습니다.

전체 카탈로그를 하나의 키로

키를 만들고, 선불 크레딧을 충전하고, 같은 요청으로 어떤 영상·이미지 모델이든 호출하세요.