Source: https://ailoot.ai/models/vi/gpt-image-2/
Canonical: https://ailoot.ai/models/vi/gpt-image-2/
Language: vi

# OpenAI: GPT Image 2

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

## [OpenAI: GPT Image 2](https://ailoot.ai/models/vi/gpt-image-2/)

GPT Image 2 tạo và chỉnh sửa hình ảnh từ văn bản cùng tham chiếu trực quan. Mô hình hỗ trợ kích thước khung linh hoạt và tự động xử lý ảnh đầu vào ở độ trung thực cao, với điều khiển riêng về chất lượng, định dạng và nền cho tài nguyên hoàn chỉnh.

- [**Ailoot · Ảnh** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/vi/gpt-image-2/#method-0)
- [**Ailoot Ultra · Ảnh** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/vi/gpt-image-2/#method-1)
- [**Ailoot Ultra · Ảnh** `POST /v1/images/generations` `openai/gpt-image-2`](https://ailoot.ai/models/vi/gpt-image-2/#method-2)

Về mô hình

Mô tả này trình bày khả năng của mô hình. Đầu vào, đầu ra và tùy chọn có trên Ailoot được liệt kê bên dưới cho phương thức đã chọn.

GPT Image 2 là mô hình của OpenAI để tạo và chỉnh sửa hình ảnh từ văn bản cùng đầu vào trực quan. Mô hình tạo ảnh mới từ bản yêu cầu viết và có thể dùng ảnh nguồn để sửa hoặc làm việc theo tham chiếu. Nhiệm vụ thực tế gồm minh họa, ý tưởng sản phẩm, bố cục hình ảnh và thay đổi tài nguyên hiện có. Đây là phiên bản riêng, khác GPT Image 2.5 Sunburst và Flare, có dải chất lượng và hành vi độ trung thực đầu vào riêng.

Để tạo ảnh, mô tả chủ thể, cảnh, bố cục, ánh sáng và phong cách mong muốn. Để sửa, nêu điều cần thay đổi và điều cần giữ hình thức. Bản yêu cầu sản phẩm có thể đề nghị đèn gốm trên bề mặt nhạt, hình dáng ở giữa và chỗ cho chú thích; chỉnh sửa tiếp theo có thể đổi nền nhưng giữ hình dạng đèn và góc nhìn. Các quy trình tạo và sửa trực tiếp được ghi nhận nhận lời nhắc tối đa 32,000 ký tự và có thể trả từ một đến mười ảnh.

Chỉnh sửa theo tham chiếu nhận tối đa mười sáu ảnh đầu vào. Xác định mục đích từng tham chiếu để không nhầm chủ thể, nền và cách thể hiện. GPT Image 2 tự động xử lý mọi ảnh đầu vào ở độ trung thực cao; cần bỏ input\_fidelity vì phiên bản này không cho điều chỉnh. Điều này khác lựa chọn high hoặc low trên GPT Image 1 và chế độ độ trung thực đầu vào chỉ low của GPT Image 1 Mini. Xử lý đầu vào ở độ trung thực cao hỗ trợ chi tiết nguồn nhưng không bảo đảm mọi chi tiết được tái tạo nguyên vẹn.

Mặt nạ có thể xác định vùng cần sửa. Ảnh nguồn và mặt nạ phải cùng định dạng, kích thước và dưới 50 MB theo yêu cầu chuẩn bị của hướng dẫn; mặt nạ còn cần kênh alpha. Nếu cung cấp nhiều ảnh đầu vào, mặt nạ áp dụng cho ảnh đầu tiên. Mô hình xem mặt nạ là chỉ dẫn dựa trên lời nhắc thay vì ranh giới hình học nghiêm ngặt. Mô tả thay đổi cục bộ và yêu cầu bảo toàn, rồi kiểm tra vùng xung quanh để tìm khác biệt ngoài ý muốn.

GPT Image 2 hỗ trợ chất lượng low, medium, high và auto, mặc định auto. Các mức xhigh và max của họ 2.5 không thuộc dải chất lượng của phiên bản này. Kích thước có thể vuông, ngang, dọc, tự động hoặc cặp rộng và cao tùy chỉnh hợp lệ. Ví dụ của nhà cung cấp gồm 1024 × 1024, 1536 × 1024, 1024 × 1536, 2048 × 2048, 2048 × 1152, 3840 × 2160 và 2160 × 3840 pixel. Chọn hướng khung và mức chi tiết cho bố cục thực tế thay vì coi chất lượng với kích thước là cùng điều khiển.

Kích thước tùy chỉnh phải là bội số của mười sáu pixel, cạnh tối đa 3840 pixel, tỷ lệ cạnh dài trên cạnh ngắn không quá 3:1 và diện tích từ 655,360 đến 8,294,400 pixel. Các điều kiện áp dụng đồng thời. Độ phân giải trên 2560 × 1440 được đánh dấu thử nghiệm. Khung thỏa một quy tắc vẫn có thể vi phạm quy tắc khác, nên chọn cặp kích thước được hỗ trợ và mô tả yếu tố nhạy với cắt ảnh trong bản yêu cầu.

Đầu ra mặc định là PNG, cũng có JPEG hoặc WebP. Mức nén từ 0 đến 100 được hỗ trợ cho JPEG và WebP. Nền có thể đục hoặc tự động; tài liệu tham chiếu chính xác hiện tại mô tả khả năng tạo nền trong suốt của GPT Image 2 là tính năng đang ở giai đoạn xem trước (preview). Khi yêu cầu trong suốt, dùng PNG hoặc WebP để giữ kênh alpha. Quy trình truyền phát được ghi nhận cho phép tối đa ba ảnh từng phần trước ảnh hoàn tất; lưu tài nguyên cuối thay vì bản xem tiến độ. Giao diện nhà sản xuất cũng hỗ trợ xử lý theo lô.

Đánh giá độ rõ của chữ, vị trí vật thể và việc giữ chi tiết nguồn trong kết quả thực tế. GPT Image có thể gặp khó với chữ chính xác, bố cục nhạy về vị trí và danh tính hình ảnh lặp lại qua các lần tạo riêng. Với chuỗi chỉnh sửa, dùng kết quả đã chọn làm nguồn tiếp theo và nêu thay đổi cụ thể gắn với vấn đề nhìn thấy. Đầu ra hữu ích của GPT Image 2 là ảnh liên hệ với bản yêu cầu tạo hoặc sửa rõ ràng, có đầu vào độ trung thực cao, kích thước và chất lượng được chọn cho nhiệm vụ cụ thể đó.

**Ailoot · Ảnh** `POST /v1/images/generations` `gpt-image-2`

[`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)

OpenAI /`gpt-image-2`

### Bắt đầu

GPT Image 2 tạo và chỉnh sửa hình ảnh từ văn bản cùng tham chiếu trực quan. Mô hình hỗ trợ kích thước khung linh hoạt và tự động xử lý ảnh đầu vào ở độ trung thực cao, với điều khiển riêng về chất lượng, định dạng và nền cho tài nguyên hoàn chỉnh.

Đầu vào được chấp nhận

Văn bản

Kết quả

Ảnh

### Có trên Ailoot · đầu vào & phương thức

**Ailoot · Ảnh** `POST /v1/images/generations`

Đầu vào

`text`

Đầu ra

`image`

Định dạng đầu ra

Tệp ảnh

| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
| --- | --- | --- | --- | --- |
| Trường`model` | Loại`string` | Yêu cầuBắt buộc | Giá trị & giới hạn gpt-image-2 | Mặc định— |
| Trường`prompt` | Loại`string` | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối thiểu: 1 | Mặc định— |
| Trường`n` | Loại`integer` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 1 | Mặc định1 |
| Trường`response_format` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn url, b64\_json | Mặc định— |
| Trường`stream` | Loại`boolean` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc địnhfalse |
| Trường`size` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`quality` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`background` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`output_format` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`output_compression` | Loại`integer` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`moderation` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`input_fidelity` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`style` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |
| Trường`partial_images` | Loại`integer` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tùy thuộc vào mô hình | Mặc định— |

Tổ hợp tư liệu đầu vào

**Văn bản thành ảnh** · Bắt buộc: prompt

Tham số phương thức và vòng đời

| Tham số | Hợp đồng |
| --- | --- |
| Tham số`material_types` | Hợp đồngtext |
| Tham số`required` | Hợp đồngmodel, prompt |
| Tham số`optional_controls` | Hợp đồngnull |
| Tham số`content_type` | Hợp đồngapplication/json |

Vòng đời: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Giá trị task\_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu.

### Bảng giá

#### Mức phí phương thức Ailoot

Đầu vào văn bản

0,0025 US$ */ 1K*

Đầu vào, hình ảnh

0,004 US$ */ 1K tokens*

Đầu ra, hình ảnh

0,015 US$ */ 1K tokens*

Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. [Cách hoạt động của cơ chế tạm giữ và quyết toán →](https://ailoot.ai/docs/vi/billing/reserve/)

### Ví dụ yêu cầu

#### Ailoot · Ảnh

curlPython SDKNode.js SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-image-2", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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/images/generations \
  -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'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

```python
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
```

```js
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
```

### Nhận và lưu kết quả

#### Ailoot · Ảnh

Tải xuống từng ảnh trả về hoặc lưu nội dung Base64 của ảnh

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Lưu tất cả kết quả đã hoàn tất

Lưu mọi ảnh đã hoàn tất; truy xuất từng URL trả về hoặc giải mã nội dung Base64 của ảnh.

Lưu mọi phần tử dữ liệu. Giải mã từng b64\_json hoặc tải xuống từ mọi URL có chữ ký đã trả về. Chọn phần mở rộng tệp dựa trên MIME/nội dung byte thực tế.

##### Nếu cần kiểm tra phản hồi gốc

Nếu kết quả tạo hoặc chỉnh sửa ảnh cần được kiểm tra, giữ lại operation\_id/X-Client-Request-ID gốc và thông tin kết quả đã trả về. Khôi phục các kết quả hiện có thuộc quyền sở hữu của bạn qua thư viện nội dung đa phương tiện bằng các giá trị task\_id hoặc asset\_id thực tế. Không gửi lại yêu cầu tạo/chỉnh sửa ảnh hoặc tạo URL truy vấn trạng thái từ operation\_id.

Trường phản hồi

| Trường | Loại |
| --- | --- |
| Trường`created` | Loạiinteger |
| Trường`data[].url` | Loạistring |
| Trường`data[].b64_json` | Loạibase64 string |
| Trường`usage` | Loạiobject |

Lỗi và bước tiếp theo

| Phản hồi | Điều kiện | Bước tiếp theo |
| --- | --- | --- |
| Phản hồi400 · `invalid_request_error` | Điều kiệnTrường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ | Bước tiếp theoSửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới. |
| Phản hồi`server_error` | Điều kiệnPhản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra | Bước tiếp theoGiữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo. |

### Bí danh

#### Bí danh mô hình

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Bí danh đường dẫn phương thức

`/v1/images`

#### ID gọi liên quan

[`openai/gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

**Ailoot Ultra · Ảnh** `POST /v1/images/generations` `gpt-image-2`

[`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

OpenAI /`gpt-image-2`

ID mô hình

- `gpt-image-2`
- `openai/gpt-image-2`

### Bắt đầu

GPT Image 2 tạo và chỉnh sửa hình ảnh từ văn bản cùng tham chiếu trực quan. Mô hình hỗ trợ kích thước khung linh hoạt và tự động xử lý ảnh đầu vào ở độ trung thực cao, với điều khiển riêng về chất lượng, định dạng và nền cho tài nguyên hoàn chỉnh.

Đầu vào được chấp nhận

Văn bản

Kết quả

Ảnh

### Có trên Ailoot · đầu vào & phương thức

**Ailoot Ultra · Ảnh** `POST /v1/images/generations`

Đầu vào

`text`

Đầu ra

`image`

| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
| --- | --- | --- | --- | --- |
| Trường`model` | Loại`string` | Yêu cầuBắt buộc | Giá trị & giới hạn gpt-image-2 | Mặc định— |
| Trường`prompt` | Loại`string` | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối đa: 32.000 | Mặc định— |
| Trường`size` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Điều kiện: Dùng auto hoặc WIDTHxHEIGHT với cả hai kích thước chia hết cho 16. Cạnh dài nhất tối đa 3,840 pixel và tổng kích thước tối đa 8,300,000 pixel. | Mặc địnhauto |
| Trường`background` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn transparent, opaque, auto | Mặc địnhauto |
| Trường`moderation` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn low, auto Điều kiện: Dùng auto để kiểm duyệt nội dung tiêu chuẩn. | Mặc định— |
| Trường`n` | Loại`integer` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 1 Tối đa: 10 | Mặc định1 |
| Trường`quality` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn auto, high, medium, low | Mặc địnhauto |
| Trường`output_compression` | Loại`integer` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 0 Tối đa: 100 Điều kiện: Áp dụng cho đầu ra JPEG và WebP; gửi giá trị số nguyên theo tài liệu. | Mặc định100 |
| Trường`output_format` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn webp, png, jpeg | Mặc địnhpng |
| Trường`stream` | Loại`boolean` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn false Điều kiện: Tuyến này trả về một phản hồi JSON hoàn chỉnh. | Mặc địnhfalse |

Tham số phương thức và vòng đời

| Tham số | Hợp đồng |
| --- | --- |
| Tham số`content_type` | Hợp đồngapplication/json |
| Tham số`required` | Hợp đồngprompt, model |
| Tham số`material_types` | Hợp đồngtext |
| Tham số`optional` | Hợp đồngsize, background, moderation, n, quality, output\_compression, output\_format, stream |
| Tham số`conditions` | Hợp đồngNền trong suốt yêu cầu định dạng PNG hoặc WebP., Nén đầu ra áp dụng cho JPEG hoặc WebP., Phương thức đã chọn tạo từ văn bản. Các tùy chọn chỉnh sửa và truyền trực tuyến mà nhà sản xuất mô tả là những khả năng riêng biệt. |

Vòng đời: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Giá trị task\_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Bảng giá

##### Cách tính phí cuối cùng

Các đơn giá hiển thị dùng để ước tính chi phí trước khi tạo. Khoản phí cuối cùng được tính dựa trên chi phí ghi nhận cho lượt tạo gốc. Thời lượng đầu ra đo được và số lượng dự kiến không phải là số lượng cuối cùng dùng để tính phí.

Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.

Chế độ nhanh

Chưa chỉ định Khi chọn chế độ nhanh

Chế độ Flex

Chưa chỉ định Khi chọn chế độ flex

Mức độ suy luận tối đa

Chưa chỉ định Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa

#### Mức phí ước tính để so sánh

#### Giá theo cấu hình

Đối chiếu từng khoản phí với điều kiện hiển thị. Dùng một mức phí cho mỗi nhóm cấu hình thay thế.

| Cấu hình | Biểu mức phí | Số lượng dự báo | Phí |
| --- | --- | --- | --- |
| Cấu hìnhGiá cơ sở cho token | Biểu mức phíMức phí cơ bản | Số lượng dự báo— | Phí Đầu vào · Token đầu vào · Ước tính chỉ để so sánh **—** / 1K token Đầu ra · Token đầu ra · Ước tính chỉ để so sánh **—** / 1K token Đầu vào · Đọc bộ nhớ đệm · Ước tính chỉ để so sánh **—** / 1K token Đầu vào · Ghi bộ nhớ đệm · Ước tính chỉ để so sánh **—** / 1K token Đầu vào · Ghi bộ nhớ đệm, 1 giờ · Ước tính chỉ để so sánh **—** / 1K token |
| Cấu hìnhChi phí tạo ước tính | Biểu mức phí— | Số lượng dự báoước tính cho một lần tạo | Phí Đầu ra · Chi phí tạo ước tính · Ước tính chỉ để so sánh **$0.24576** ước tính trước khi tạo Ước tính này không phải là khoản phí bổ sung hay mức giá cố định cho lượt tạo đã hoàn tất. |

Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. [Cách hoạt động của cơ chế tạm giữ và quyết toán →](https://ailoot.ai/docs/vi/billing/reserve/)

### Ví dụ yêu cầu

#### Ailoot Ultra · Ảnh

curl

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'prompt': 'A cute baby sea otter', 'model': 'gpt-image-2', 'size': '1024x1024', 'n': 1, 'background': 'auto', 'moderation': 'auto', 'output_format': 'png'}

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/images/generations \
  -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'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

### Nhận và lưu kết quả

#### Ailoot Ultra · Ảnh

Tải xuống từng ảnh trả về hoặc lưu nội dung Base64 của ảnh

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Lượt đọc nội dung khác

Đọc tài nguyên hiện có thuộc về bạn

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
```

##### Lưu tất cả kết quả đã hoàn tất

Lưu mọi ảnh đã hoàn tất; truy xuất từng URL trả về hoặc giải mã nội dung Base64 của ảnh.

Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.

##### Nếu cần kiểm tra phản hồi gốc

Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task\_id/asset\_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo.

Trường phản hồi

| Trường | Loại |
| --- | --- |
| Trường`created` | Loại |
| Trường`data[].url` | Loại |
| Trường`data[].b64_json` | Loại |
| Trường`usage` | Loại |

### Bí danh

#### Bí danh mô hình

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Bí danh đường dẫn phương thức

`/v1/images`

#### ID gọi liên quan

[`openai/gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

**Ailoot Ultra · Ảnh** `POST /v1/images/generations` `openai/gpt-image-2`

[`openai/gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

OpenAI /`openai/gpt-image-2`

ID mô hình

- `gpt-image-2`
- `openai/gpt-image-2`

### Bắt đầu

GPT Image 2 tạo và chỉnh sửa hình ảnh từ văn bản cùng tham chiếu trực quan. Mô hình hỗ trợ kích thước khung linh hoạt và tự động xử lý ảnh đầu vào ở độ trung thực cao, với điều khiển riêng về chất lượng, định dạng và nền cho tài nguyên hoàn chỉnh.

Đầu vào được chấp nhận

Văn bản · Ảnh

Kết quả

Ảnh

### Có trên Ailoot · đầu vào & phương thức

**Ailoot Ultra · Ảnh** `POST /v1/images/generations`

Đầu vào

`text`, `image`

Đầu ra

`image`

| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
| --- | --- | --- | --- | --- |
| Trường`model` | Loại`string` | Yêu cầuBắt buộc | Giá trị & giới hạn openai/gpt-image-2 | Mặc định— |
| Trường`prompt` | Loại`string` | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối thiểu: 1 | Mặc định— |
| Trường`aspect_ratio` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto | Mặc định— |
| Trường`quality` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn auto, low, medium, high | Mặc định— |
| Trường`background` | Loại`string` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn auto, opaque | Mặc định— |
| Trường`n` | Loại`integer` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 1 Tối đa: 10 | Mặc định— |
| Trường`input_references` | Loại`array` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Số mục tối thiểu: 0 Số mục tối đa: 16 | Mặc định— |
| Trường`output_compression` | Loại`integer` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 0 Tối đa: 100 | Mặc định— |
| Trường`provider` | Loại`object` | Yêu cầuKhông bắt buộc | Giá trị & giới hạn | Mặc định— |

Tham số phương thức và vòng đời

| Tham số | Hợp đồng |
| --- | --- |
| Tham số`content_type` | Hợp đồngapplication/json |
| Tham số`required` | Hợp đồngmodel, prompt |
| Tham số`material_types` | Hợp đồngtext, image |

Vòng đời: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Giá trị task\_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Bảng giá

##### Cách tính phí cuối cùng

Các đơn giá hiển thị dùng để ước tính chi phí trước khi tạo. Khoản phí cuối cùng được tính dựa trên chi phí ghi nhận cho lượt tạo gốc. Thời lượng đầu ra đo được và số lượng dự kiến không phải là số lượng cuối cùng dùng để tính phí.

Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.

Chế độ nhanh

Chưa chỉ định Khi chọn chế độ nhanh

Chế độ Flex

Chưa chỉ định Khi chọn chế độ flex

Mức độ suy luận tối đa

Chưa chỉ định Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa

#### Mức phí ước tính để so sánh

#### Giá theo cấu hình

Đối chiếu từng khoản phí với điều kiện hiển thị. Dùng một mức phí cho mỗi nhóm cấu hình thay thế.

| Cấu hình | Biểu mức phí | Số lượng dự báo | Phí |
| --- | --- | --- | --- |
| Cấu hìnhGiá cơ sở cho token | Biểu mức phíMức phí cơ bản | Số lượng dự báo— | Phí Đầu vào · Token đầu vào · Ước tính chỉ để so sánh **—** / 1K token Đầu ra · Token đầu ra · Ước tính chỉ để so sánh **—** / 1K token Đầu vào · Đọc bộ nhớ đệm · Ước tính chỉ để so sánh **—** / 1K token Đầu vào · Ghi bộ nhớ đệm · Ước tính chỉ để so sánh **—** / 1K token Đầu vào · Ghi bộ nhớ đệm, 1 giờ · Ước tính chỉ để so sánh **—** / 1K token |
| Cấu hìnhChi phí tạo ước tính | Biểu mức phí— | Số lượng dự báoước tính cho một lần tạo | Phí Đầu ra · Chi phí tạo ước tính · Ước tính chỉ để so sánh **$0.24576** ước tính trước khi tạo Ước tính này không phải là khoản phí bổ sung hay mức giá cố định cho lượt tạo đã hoàn tất. |

Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. [Cách hoạt động của cơ chế tạm giữ và quyết toán →](https://ailoot.ai/docs/vi/billing/reserve/)

### Ví dụ yêu cầu

#### Ailoot Ultra · Ảnh

curl

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-image-2', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

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/images/generations \
  -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'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

### Nhận và lưu kết quả

#### Ailoot Ultra · Ảnh

Tải xuống từng ảnh trả về hoặc lưu nội dung Base64 của ảnh

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Lượt đọc nội dung khác

Đọc tài nguyên hiện có thuộc về bạn

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
```

##### Lưu tất cả kết quả đã hoàn tất

Lưu mọi ảnh đã hoàn tất; truy xuất từng URL trả về hoặc giải mã nội dung Base64 của ảnh.

Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.

##### Nếu cần kiểm tra phản hồi gốc

Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task\_id/asset\_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo.

Trường phản hồi

| Trường | Loại |
| --- | --- |
| Trường`created` | Loại |
| Trường`data[].url` | Loại |
| Trường`data[].b64_json` | Loại |
| Trường`usage` | Loại |

### Bí danh

#### Bí danh mô hình

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Bí danh đường dẫn phương thức

`/v1/images`

#### ID gọi liên quan

[`openai/gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/vi/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

FAQ · OpenAI: GPT Image 2

Có những đầu vào và kết quả nào?

`POST /v1/images/generations` · `gpt-image-2`: `text` → `image` `POST /v1/images/generations` · `gpt-image-2`: `text` → `image` `POST /v1/images/generations` · `openai/gpt-image-2`: `text`, `image` → `image`

Yêu cầu sử dụng những trường nào?

`POST /v1/images/generations` · `gpt-image-2`: `model`, `prompt`, `n`, `response_format`, `stream` `POST /v1/images/generations` · `gpt-image-2`: `model`, `prompt`, `size`, `background`, `moderation`, `n`, `quality`, `output_compression`, `output_format`, `stream` `POST /v1/images/generations` · `openai/gpt-image-2`: `model`, `prompt`, `aspect_ratio`, `quality`, `background`, `n`, `input_references`, `output_compression`, `provider`

Áp dụng những giới hạn nào?

`POST /v1/images/generations` · `gpt-image-2`: `n.minimum`: `1` `POST /v1/images/generations` · `gpt-image-2`: `prompt.maximum_length`: `32000`; `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100` `POST /v1/images/generations` · `openai/gpt-image-2`: `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100`

Kết nối Ailoot với Claude Code, OpenCode, Hermes hoặc ứng dụng của bạn.

## Công ty và danh mục dự án của công ty

Công ty và danh mục dự án của công ty: hàng triệu khách hàng; doanh số hàng tỷ mỗi tháng.

## Mua token với giá ưu đãi.

Ưu đãi thuê bao cho nhu cầu thường xuyên. Mã khuyến mãi giảm đến 50% khi mua token.

Thuê bao

Chọn gói ưu đãi cho các yêu cầu thường xuyên của bạn.

Mã giảm đến 50%

Nhập mã khi mua. Giá được tính lại theo chương trình đang áp dụng.

Chi phí trong lịch sử

Mô hình, token và số tiền được lưu cho mỗi yêu cầu.

[Chọn gói thuê bao](https://ailoot.ai/docs/vi/billing/subscriptions/) · [Xem giá mô hình](https://ailoot.ai/models/vi/)

## Kết nối API vào sản phẩm bạn đang bán.

SaaS, ứng dụng và bot — theo đề nghị giao kết chính thức và thỏa thuận cấp phép Ailoot. Muốn bán lại, hãy yêu cầu giấy phép bán lại.

Ứng dụng thương mại

Tích hợp tạo văn bản, ảnh, video và âm thanh vào các tính năng trả phí của dịch vụ.

Giấy phép bán lại

Gửi mô tả dự án và cách cung cấp quyền truy cập. Yêu cầu điều khoản sử dụng và bán lại bằng văn bản.

Tài liệu trên website

Đề nghị giao kết, thỏa thuận cấp phép và chính sách xử lý dữ liệu có sẵn trước khi kết nối.

[Yêu cầu giấy phép bán lại](mailto:support@ailoot.ai) · [Đề nghị giao kết và thỏa thuận cấp phép](https://ailoot.ai/legal/offer?lang=vi)

## Ailoot · Công ty và danh mục dự án của công ty





Ailoot dựa trên kinh nghiệm vận hành tích lũy, cơ sở khách hàng lớn, dịch vụ ổn định và việc kiểm soát KPI liên tục.





Công ty và danh mục dự án của công ty: hàng triệu khách hàng; doanh số hàng tỷ mỗi tháng.





Ailoot áp dụng kinh nghiệm vận hành này để cung cấp quyền truy cập API vào các tính năng AI trong sản phẩm của khách hàng, tác tử, ứng dụng và quy trình tự động hóa.
