Source: https://ailoot.ai/models/ko/sora-2/
Canonical: https://ailoot.ai/models/ko/sora-2/
Language: ko

# sora-2

[Markdown](https://ailoot.ai/models/ko/sora-2/index.md) · [JSON](https://ailoot.ai/models/ko/sora-2/facts.json)

## [sora-2](https://ailoot.ai/models/ko/sora-2/)

Sora 2는 텍스트 또는 참조 이미지로부터 대사, 효과음, 배경음이 동기화된 영상을 생성합니다. 표준 프로필은 시각적 탐색과 콘셉트 클립을 지원하며, 재사용 가능한 비인간 캐릭터, 영상 이어 만들기, 특정 부분의 영상 편집은 제작사가 제공하는 별도 워크플로를 사용합니다.

- [**Ailoot Ultra · Chat Completions** `POST /v1/chat/completions` `sora-2`](https://ailoot.ai/models/ko/sora-2/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `sora-2`](https://ailoot.ai/models/ko/sora-2/#method-1)

모델 소개

이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.

Sora 2는 서면 장면 설명이나 참조 이미지로 역동적인 클립을 만드는 OpenAI의 영상·오디오 생성 모델입니다. 시각적 시퀀스와 함께 음성, 효과음, 배경음을 동기화하여 생성합니다. 표준 Sora 2 프로필은 시각적 탐색, 콘셉트 개발, 프로토타입, 러프 컷을 위한 모델로 소개됩니다. Sora 2 Pro는 더 높은 시각적 충실도와 고해상도 마무리를 목표로 하는 별도 버전입니다.

#### 보고 들을 수 있는 샷 묘사하기

제조사의 프롬프트 가이드는 구도, 피사체, 동작, 배경, 빛을 중심으로 유용한 브리프를 구성합니다. 장면에 일관된 시각적 스타일을 부여한 다음 움직임을 명확한 단계로 설명하세요. 독창적인 제품 콘셉트의 예로, 작은 기계 장치가 작업대 위에서 한 바퀴 회전하고 카메라가 천천히 다가오며 부드러운 창가 빛과 은은한 모터 소리가 함께하는 장면을 만들 수 있습니다. 관객이 무엇에 주목해야 하는지, 동작이 어떻게 끝나는지 명시하세요.

각 샷의 카메라 움직임과 피사체 동작이 이해하기 쉽게 구성되도록 하세요. 복잡한 시퀀스는 각각 고유한 구도, 동작, 조명을 갖춘 별도의 샷 블록으로 나눌 수 있습니다. 여러 클립을 하나의 시퀀스로 구성하려면 동일한 피사체의 세부 특징과 색상 팔레트를 유지하세요. 가이드는 짧은 샷이 일반적으로 지시를 더 안정적으로 따르며, 같은 프롬프트를 반복 생성해도 서로 다른 테이크가 나온다고 강조합니다.

모델 출시 소개에서는 사실적 스타일, 영화적 스타일, 애니메이션 스타일을 포함하여 물리적 움직임과 샷 간 연속성이 개선되었다고 설명합니다. 이는 연출하고 확인해야 할 목표 기능입니다. 그럴듯한 첫 프레임만으로 일관된 시퀀스가 보장된다고 가정하지 말고 움직임, 물체 간 접촉, 비율, 연속성을 검토하세요. 동작이 불분명하다면 단순화하고 시작과 끝이 눈에 보이도록 지정하세요.

#### 대사와 소리 별도로 연출하기

대사는 시각적 설명과 별도로 지정하고 화자 라벨을 일관되게 붙이세요. 대사는 동작과 의도한 클립 길이에 맞도록 짧게 유지하세요. 두 캐릭터가 등장하는 애니메이션이라면 짧은 샷에 긴 연설을 담으려 하기보다 짧은 질문과 답변을 번갈아 배치하세요. 가이드는 복잡하고 긴 대사가 진행 속도와 동기화를 흐트러뜨릴 수 있다고 경고합니다.

작은 움직임에서 나는 소리, 실내의 주변 소리, 환경 효과의 리듬처럼 장면에 어울리는 음향을 묘사하세요. 어떤 소리가 동작과 동시에 나야 하는지 설명하세요. 생성된 음성과 효과음을 영상과 함께 들으며 화자 배정, 발화 내용, 타이밍을 확인하세요. 동기화된 오디오는 별도의 텍스트 답변이 아니라 생성된 클립의 일부입니다.

#### 크기, 길이, 이미지를 활용한 시작 장면

표준 모델에 문서화된 출력 크기는 세로형 720×1280과 가로형 1280×720입니다. Pro 프로필의 고해상도 크기를 표준 Sora 2의 사양으로 기재해서는 안 됩니다. 크기와 길이는 명시적인 요청 설정입니다. 프롬프트에 다른 크기를 쓰거나 더 긴 영화를 요청해도 이 설정은 바뀌지 않습니다. 생성 참조 문서에는 4초, 8초, 12초 클립 설정이 나열되어 있으므로 샷을 준비할 때 짧고 명확한 동작 단위를 선택하세요. 확장된 제작사 워크플로에는 16초와 20초 클립 설정도 문서화되어 있습니다.

참조 이미지는 첫 프레임의 기준이 되고, 텍스트는 그다음에 일어날 일을 설명합니다. 제작사는 JPEG, PNG, WebP 참조 이미지를 지원하며 이미지 크기가 목표 영상 크기와 일치해야 한다고 요구합니다. 시작 이미지에 피사체, 환경, 구도를 준비한 다음 구체적인 움직임을 요청하세요. 이는 시작 프레임용 참조이며, 클립 전체에서 모든 세부 사항이 일치한다는 보장은 아닙니다.

#### 재사용 가능한 비인간 캐릭터

확장된 제작사 워크플로는 동물, 마스코트, 사물의 짧은 참조 영상으로 재사용 가능한 캐릭터 에셋을 만들 수 있습니다. 준비 가이드는 약 2~4초 길이의 MP4 클립, 720p~1080p 해상도, 16:9 또는 9:16 화면비를 요구합니다. 원본과 출력의 화면비를 맞추면 늘어나 보이는 현상을 방지하는 데 도움이 됩니다. 생성 시 최대 두 캐릭터를 참조할 수 있습니다.

캐릭터 식별자를 보존하고 프롬프트에 캐릭터 이름을 언급하세요. 식별자만 전달하는 것은 가이드가 제시하는 준비 절차를 모두 충족하지 않습니다. 캐릭터 에셋은 이미지를 활용한 생성과 함께 사용할 수 있지만 영상 확장에서는 사용할 수 없습니다. 제작사는 기본적으로 사람을 닮은 캐릭터 업로드를 차단하며, 문서화된 API 흐름에서는 사람 얼굴이 포함된 참조 이미지를 거부합니다. Sora 앱의 개인 캐릭터 기능은 별도의 제품 워크플로입니다.

#### 완성된 클립 이어 만들기 또는 편집하기

확장은 완성된 원본 영상과 이어질 내용의 프롬프트를 입력받고, 원본 클립 전체를 움직임, 카메라 방향, 장면 연속성의 맥락으로 사용합니다. 가이드는 한 번의 확장으로 최대 20초를 추가할 수 있다고 설명합니다. 문서화된 확장 입력은 원본 영상과 텍스트이며, 이 모드에는 추가 캐릭터나 이미지 참조를 사용할 수 없습니다. 전환 없이 무관한 장면을 도입하기보다 기존 동작이 어떻게 이어지는지 설명하세요.

영상 편집은 기존 클립에 대한 명확한 변경을 대상으로 합니다. 특정 부분을 수정하여 나머지 샷은 유지하면서 사물의 색상이나 장면의 팔레트를 바꿀 수 있습니다. 제작사 가이드는 한 번에 하나의 명확한 변경을 권장하며, 생성된 영상 편집과 임의의 영상 업로드를 구분합니다. 후자는 별도의 이용 자격 조건이 있습니다. 다음 편집 전에 완성된 원본을 보관하고 필요한 수정 사항을 정확히 지정하세요.

#### 렌더링 작업과 완성된 영상

문서화된 제작사의 영상 흐름은 비동기 방식입니다. 제출한 작업은 완료되거나 실패하기 전에 대기열에 있거나 진행 중일 수 있습니다. 완료된 작업은 MP4 영상을 반환하며, 썸네일과 스프라이트 시트 에셋은 미리보기와 탐색을 지원합니다. 작업 식별 정보를 프롬프트, 참조 자료, 반환된 에셋과 연결하여 보관하세요. 최초 작업 응답이 최종 재생 가능한 영상은 아닙니다.

일반 다운로드 워크플로에 명시된 다운로드 URL의 유효기간은 1시간입니다. 확장된 배치 워크플로에서는 안정적인 항목 식별자, 업로드한 참조 자료, 각 샷에 다시 연결되는 결과를 갖춘 독립적인 JSON 렌더링 요청을 준비합니다. 이 워크플로의 완성된 에셋에는 최대 24시간의 별도 다운로드 기간이 적용됩니다. 완성된 클립을 신속히 보관하고, 실제 영상과 소리를 확인한 다음 선택한 테이크로 확정하세요.

제작사의 문서화된 API 콘텐츠 제한은 18세 미만 관객에게 적합한 자료를 요구하며, 저작권이 있는 캐릭터나 음악 및 실제 인물 생성을 거부합니다. 이에 맞춰 장면과 참조 자료를 준비하세요. 모델이 직접 반환하는 결과는 오디오가 포함된 영상이며, 생성된 정지 이미지나 대화형 도구 응답 또는 길이 제한 없는 영화가 아닙니다. 시각적 콘셉트를 이어 나갈 때 정확한 표준 모델의 식별 정보와 채택한 원본 클립을 보존하세요.

**Ailoot Ultra · Chat Completions** `POST /v1/chat/completions` `sora-2`

[`sora-2`](https://ailoot.ai/models/ko/#m=sora-2&route=Ultra&caller=sora-2&fmt=chat_completions)

기타 /`sora-2`

### 시작하기

Sora 2는 텍스트 또는 참조 이미지로부터 대사, 효과음, 배경음이 동기화된 영상을 생성합니다. 표준 프로필은 시각적 탐색과 콘셉트 클립을 지원하며, 재사용 가능한 비인간 캐릭터, 영상 이어 만들기, 특정 부분의 영상 편집은 제작사가 제공하는 별도 워크플로를 사용합니다.

허용 입력

텍스트

결과

json · sse

### Ailoot에서 사용 가능 · 입력 및 메서드

**Ailoot Ultra · Chat Completions** `POST /v1/chat/completions`

입력

`text`

출력

`json`, `sse`

출력 형식

JSON 또는 text/event-stream

| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
| --- | --- | --- | --- | --- |
| 필드`model` | 유형`string` | 요건필수 | 값과 한도 sora-2 | 기본값— |
| 필드`messages` | 유형`message[]` | 요건필수 | 값과 한도 | 기본값— |
| 필드`messages[].role` | 유형`string` | 요건필수 | 값과 한도 | 기본값— |
| 필드`messages[].content` | 유형`string` | 요건필수 | 값과 한도 | 기본값— |
| 필드`stream` | 유형`boolean` | 요건선택 사항 | 값과 한도 | 기본값false |

입력 자료 조합

**owned\_text\_messages**

메서드 매개변수와 수명 주기

| 매개변수 | 명세 |
| --- | --- |
| 매개변수`content_type` | 명세application/json |
| 매개변수`required` | 명세model, messages |
| 매개변수`material_types` | 명세text |
| 매개변수`messages` | 명세role과 리터럴 문자열 content가 있는 메시지 배열 |
| 매개변수`file_material` | 명세실제 UTF-8 자료는 리터럴 문자열 콘텐츠로 삽입할 수 있습니다. 파일 참조로 간주하지 않습니다. |
| 매개변수`optional_controls` | 명세stream |

수명 주기: `synchronous_json_or_sse`

### 요금

요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.

빠른 모드

미지정 빠른 모드를 선택한 경우

Flex 모드

미지정 flex 모드를 선택한 경우

최대 추론 수준

미지정 최대 추론 수준에 default 조정값을 적용하는 경우

#### Ailoot 요금

#### 설정별 가격

| 설정 | 요금표 | 요금 |
| --- | --- | --- |
| 설정토큰의 기본 단가 | 요금표기본 요금 | 요금 입력 · 입력 토큰 **$0** / 1K 토큰 출력 · 출력 토큰 **$0.2** / 1K 토큰 입력 · 캐시 읽기 **$0** / 1K 토큰 입력 · 캐시 쓰기 **$0** / 1K 토큰 입력 · 캐시 쓰기, 1시간 **—** / 1K 토큰 |

Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. [금액 확보와 정산 방식 →](https://ailoot.ai/docs/ko/billing/reserve/)

### 요청 예제

#### Ailoot Ultra · Chat Completions

curl · 완전한 JSON 응답Python SDK · 완전한 JSON 응답curl · SSE 스트림 보존

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
from pathlib import Path
print(Path("result.json").read_text(encoding="utf-8"))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="sora-2", messages=[{"role":"user","content":"hello"}], stream=False)
import json
from pathlib import Path

data = result.to_dict(mode="json")
Path("result.json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":true}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.sse
```

### 결과 수신 및 저장

#### Ailoot Ultra · Chat Completions

JSON 또는 text/event-stream

##### 완료된 결과 모두 보관

반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.

JSON 또는 SSE 전체 바이트, 응답 헤더, 반환된 사용량 및 제공된 모든 결과 필드를 보존하세요. 모델별 출력 유형을 단정하지 않습니다.

##### 원래 응답을 확인해야 할 경우

원본 응답과 시도 식별자를 보존하세요. 새 작업 폴링 또는 재제출을 허용한다고 해석하지 않습니다.

응답 필드

| 필드 | 유형 | 의미 |
| --- | --- | --- |
| 필드`complete response JSON` | 유형object | 의미모델별 결과 유형을 가정하지 말고 반환된 모든 필드를 보존하세요. |
| 필드`SSE data events` | 유형stream | 의미텍스트 필드만 골라내지 말고 반환된 모든 이벤트와 종료 표시를 보존하세요. |

### 별칭

#### 모델 별칭

**Ailoot Ultra** [`sora-2`](https://ailoot.ai/models/ko/#m=sora-2&route=Ultra&caller=sora-2&fmt=chat_completions)

#### 메서드 경로 별칭

위에 표시된 메서드 경로를 사용하세요.

#### 관련 호출용 ID

[`sora-2`](https://ailoot.ai/models/ko/#m=sora-2&route=Ultra&caller=sora-2&fmt=chat_completions)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `sora-2`

[`sora-2`](https://ailoot.ai/models/ko/#m=sora-2&route=Ultra&caller=sora-2&fmt=messages)

기타 /`sora-2`

### 시작하기

Sora 2는 텍스트 또는 참조 이미지로부터 대사, 효과음, 배경음이 동기화된 영상을 생성합니다. 표준 프로필은 시각적 탐색과 콘셉트 클립을 지원하며, 재사용 가능한 비인간 캐릭터, 영상 이어 만들기, 특정 부분의 영상 편집은 제작사가 제공하는 별도 워크플로를 사용합니다.

허용 입력

텍스트

결과

json · sse

### Ailoot에서 사용 가능 · 입력 및 메서드

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

입력

`text`

출력

`json`, `sse`

출력 형식

JSON 또는 SSE

| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
| --- | --- | --- | --- | --- |
| 필드`model` | 유형`string` | 요건필수 | 값과 한도 sora-2 | 기본값— |
| 필드`messages` | 유형`message[]` | 요건필수 | 값과 한도 | 기본값— |
| 필드`messages[].role` | 유형`string` | 요건필수 | 값과 한도 user, assistant | 기본값— |
| 필드`messages[].content` | 유형`string` | 요건필수 | 값과 한도 | 기본값— |
| 필드`max_tokens` | 유형`integer` | 요건필수 | 값과 한도 | 기본값— |
| 필드`stream` | 유형`boolean` | 요건선택 사항 | 값과 한도 | 기본값false |

입력 자료 조합

**텍스트** · UTF-8 텍스트

`messages[].content 문자열`

메서드 매개변수와 수명 주기

| 매개변수 | 명세 |
| --- | --- |
| 매개변수`content_type` | 명세application/json |
| 매개변수`required` | 명세model, messages, max\_tokens |
| 매개변수`optional_controls` | 명세stream |
| 매개변수`material_types` | 명세text |
| 매개변수`text_file_material` | 명세실제 UTF-8 문서를 읽고 그 텍스트를 지정된 입력 또는 메시지 콘텐츠 문자열에 넣으세요. |

수명 주기: `synchronous_or_streamed`

### 요금

요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.

빠른 모드

미지정 빠른 모드를 선택한 경우

Flex 모드

미지정 flex 모드를 선택한 경우

최대 추론 수준

미지정 최대 추론 수준에 default 조정값을 적용하는 경우

#### Ailoot 요금

#### 설정별 가격

| 설정 | 요금표 | 요금 |
| --- | --- | --- |
| 설정토큰의 기본 단가 | 요금표기본 요금 | 요금 입력 · 입력 토큰 **$0** / 1K 토큰 출력 · 출력 토큰 **$0.2** / 1K 토큰 입력 · 캐시 읽기 **$0** / 1K 토큰 입력 · 캐시 쓰기 **$0** / 1K 토큰 입력 · 캐시 쓰기, 1시간 **—** / 1K 토큰 |

Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. [금액 확보와 정산 방식 →](https://ailoot.ai/docs/ko/billing/reserve/)

### 요청 예제

#### Ailoot Ultra · Anthropic Messages

최소 구성의 완전한 JSON 본문curl · 자신의 UTF-8 문서 사용Python · 결과 전체 저장

```json
{
  "model": "sora-2",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### 결과 수신 및 저장

#### Ailoot Ultra · Anthropic Messages

JSON 또는 SSE

##### 완료된 결과 모두 보관

반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.

모든 콘텐츠 블록, 사고 서명, 실제 도구 사용 ID를 보존하세요. 모든 SSE 블록 증분을 조합하세요. 첫 텍스트 블록이 전체 출력은 아닙니다.

##### 원래 응답을 확인해야 할 경우

요청/응답 ID와 헤더를 보존하세요. 텍스트 작업을 조회하는 범용 URL은 제공되지 않습니다.

응답 필드

| 필드 | 유형 |
| --- | --- |
| 필드`id` | 유형string |
| 필드`model` | 유형string |
| 필드`content[]` | 유형text\|thinking\|tool\_use\|other content block |
| 필드`stop_reason` | 유형string\|null |
| 필드`usage` | 유형object |

오류와 다음 단계

| 응답 | 조건 | 다음 단계 |
| --- | --- | --- |
| 응답400 · `invalid_request_error` | 조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음 | 다음 단계새 생성 요청 전에 표시된 필드를 수정하세요. |

### 별칭

#### 모델 별칭

**Ailoot Ultra** [`sora-2`](https://ailoot.ai/models/ko/#m=sora-2&route=Ultra&caller=sora-2&fmt=messages)

#### 메서드 경로 별칭

위에 표시된 메서드 경로를 사용하세요.

#### 관련 호출용 ID

[`sora-2`](https://ailoot.ai/models/ko/#m=sora-2&route=Ultra&caller=sora-2&fmt=messages)

FAQ · sora-2

어떤 입력과 결과를 사용할 수 있나요?

`POST /v1/chat/completions` · `sora-2`: `text` → `json`, `sse` `POST /v1/messages` · `sora-2`: `text` → `json`, `sse`

요청은 어떤 필드를 사용하나요?

`POST /v1/chat/completions` · `sora-2`: `model`, `messages`, `stream` `POST /v1/messages` · `sora-2`: `model`, `messages`, `max_tokens`, `stream`

Claude Code, OpenCode, Hermes, 자체 앱에 Ailoot를 연결하세요.

## 회사와 그 프로젝트 포트폴리오

회사와 그 프로젝트 포트폴리오: 수백만 고객, 매월 수십억 규모의 매출.

## 할인받아 토큰을 구매하세요.

정기 작업에는 구독 할인, 토큰 구매에는 최대 50% 프로모션 코드.

구독

정기 요청에 맞는 할인 요금제를 선택하세요.

최대 50% 프로모션 코드

구매할 때 코드를 넣으면 진행 중 행사에 따라 가격을 다시 계산합니다.

이력의 지출

요청마다 모델, 토큰, 금액을 저장합니다.

[구독 선택](https://ailoot.ai/docs/ko/billing/subscriptions/) · [모델 가격 보기](https://ailoot.ai/models/ko/)

## 판매하는 제품에 API를 연결하세요.

Ailoot 공식 이용 조건과 라이선스 계약으로 SaaS, 앱, 봇에 사용하세요. 재판매에는 리셀러 라이선스를 요청하세요.

상업용 앱

서비스의 유료 기능에 텍스트, 이미지, 영상, 소리 생성을 넣으세요.

리셀러 라이선스

프로젝트 설명과 접근 구조를 보내 사용·재판매의 서면 조건을 요청하세요.

사이트의 문서

연결 전에 공식 이용 조건, 라이선스 계약, 데이터 처리 정책을 읽을 수 있습니다.

[리셀러 라이선스 요청](mailto:support@ailoot.ai) · [공식 이용 조건과 라이선스 계약](https://ailoot.ai/legal/offer?lang=ko)

## Ailoot · 회사와 그 프로젝트 포트폴리오





Ailoot는 축적된 운영 경험, 폭넓은 고객 기반, 안정적인 서비스, 지속적인 KPI 관리를 바탕으로 합니다.





회사와 그 프로젝트 포트폴리오: 수백만 고객, 매월 수십억 규모의 매출.





Ailoot는 이러한 운영 경험을 고객의 제품, 에이전트, 애플리케이션, 자동화에서 AI 기능을 이용할 수 있는 API 접근에 활용합니다.
