Recraft: Recraft V3
Recraft V3 tạo ảnh chụp, minh hoạ và bố cục đồ hoạ với cách sắp xếp có xét đến chữ cùng tuỳ chọn phong cách. Các biến thể raster và SVG riêng phù hợp áp phích, bộ ảnh thương hiệu, biểu tượng và thiết kế nơi nội dung chữ cùng cấu trúc thị giác cần phối hợp.
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.
Recraft V3 là mô hình tạo ảnh dành cho thiết kế đồ hoạ cũng như cảnh nhiếp ảnh và minh hoạ. Bản yêu cầu bằng văn bản mô tả chủ thể, bối cảnh và bố cục; kết quả là hình ảnh. V3 phát triển khả năng kết xuất chữ và tính chân thực của Recraft, đồng thời giữ phong cách nhất quán từ ảnh mẫu mà không huấn luyện lại.
Chữ là một phần của bố cục
V3 làm việc với chữ trong ảnh, gồm nội dung dài hơn và chữ cỡ trung. Recraft mô tả bước bố cục xác lập từ và vị trí trước khi tạo ảnh. Bố cục có thể được tạo tự động từ bản yêu cầu hoặc sắp xếp thủ công trong môi trường thiết kế Recraft. Điều này giúp liên kết tiêu đề, minh hoạ và chữ bổ trợ trong một bố cục. Nhà sản xuất còn công bố toạ độ bố cục chữ chỉ định rõ, biểu thị theo ảnh thay vì lưới pixel cố định. Mỗi yếu tố chữ chứa một từ đơn và bốn điểm góc ở toạ độ chuẩn hoá: (0, 0) là góc trên trái và (1, 1) là góc dưới phải. Toạ độ có thể vượt khoảng đó, khi ấy hình bị cắt. Các từ bố cục chữ chỉ định rõ phải tuân theo hạn chế ký tự được công bố.
Với áp phích hoặc bìa, cung cấp nội dung chính xác và mô tả thứ bậc: dòng nào dẫn đầu, nằm ở đâu và ảnh hỗ trợ nó thế nào. Kiểm tra chính tả và khoảng cách được kết xuất khi chọn kết quả.
Phong cách, bảng màu và định hướng mỹ thuật
V3 gồm phong cách nhiếp ảnh, minh hoạ và biểu trưng được tuyển chọn, cùng thư viện phong cách vector riêng. Recraft V3 Raw là phong cách mặc định của mô hình raster; Vector art là mặc định cho biến thể vector. Photorealism hướng đến diện mạo nhiếp ảnh, còn Illustration phù hợp kết cấu cách điệu, đổ bóng và chuyển màu phức tạp hơn. Phong cách vector thiên về hình khối, bảng màu hạn chế và tô phẳng hoặc chuyển sắc đơn giản.
Có thể xây phong cách tuỳ chỉnh từ ảnh tham chiếu, phong cách tương thích có sẵn hoặc kết hợp chúng. Chúng cung cấp định hướng thị giác dùng lại được qua chuỗi ảnh. Các tuỳ chọn phối trộn được công bố cho phép tham chiếu và phong cách nguồn có trọng số riêng; số trọng số khớp số nguồn. PaletteMatch và MaxWeight là hai chính sách phối trộn được liệt kê. Nhà sản xuất cho phép tối đa 10 ảnh tham chiếu phong cách và dùng chế độ khớp phong cách regular cho V3. Phong cách tuỳ chỉnh đã lưu và tham chiếu phong cách trực tiếp là đầu vào thay thế, và phong cách tuỳ chỉnh phải khớp mô hình dùng để tạo ảnh.
Màu ưu tiên và màu nền định hướng bảng màu. Tài liệu công bố tối đa 10 màu RGB, mỗi thành phần từ 0 đến 255. Trọng số tương đối tuỳ chọn từ 0 đến 1; phải cung cấp cho mọi màu hoặc không màu nào, và tổng không được vượt 1. Artistic level từ 0 cho cách thể hiện tĩnh, sạch đến 5 cho bố cục năng động, khác thường hơn. Câu lệnh phủ định mô tả yếu tố không mong muốn; tuỳ chọn no-text riêng tắt bố cục chữ nhúng. Có seed ngẫu nhiên để tái lập. Các tuỳ chọn này cung cấp cách tác động khác nhau đến cảnh, phong cách và bố cục thị giác.
Ảnh raster và biến thể SVG riêng
Recraft công bố hai biến thể V3. Mô hình raster tạo WebP không mất dữ liệu hoặc PNG và phù hợp chi tiết nhiếp ảnh, đổ bóng và minh hoạ có kết cấu. Recraft V3 Vector tạo SVG: đường dẫn và hình khối có thể phóng to mà không có độ phân giải pixel cố định. Mô hình phù hợp biểu tượng hình, ý tưởng logo, huy hiệu và tác phẩm vector chi tiết. Chuyển raster sang vector là thao tác riêng với tạo tác phẩm vector trực tiếp.
Hai biến thể đều có danh tính riêng. Ảnh có diện mạo giống vector và đầu ra SVG thực tế là lựa chọn khác nhau. Chọn đầu ra dự định khi chuẩn bị quy trình thiết kế, thay vì coi tên V3 chung là bằng chứng mọi thao tác trả cùng loại tệp.
Chỉnh sửa và hoàn thiện tác phẩm có sẵn
Tài liệu V3 của Recraft liệt kê tạo ảnh từ ảnh, vẽ bù vùng ảnh, mở rộng khung ảnh và thay hoặc tạo nền. Công việc ảnh thành ảnh kết hợp ảnh có sẵn với bản yêu cầu mới. Vẽ bù tái tạo vùng được chọn bằng ảnh và mặt nạ khớp; mở rộng khung thêm nội dung ngoài khung gốc. Thao tác nền xử lý môi trường xung quanh chủ thể.
Bộ công cụ kèm theo còn gồm xoá, tách nền, vector hoá và hai cách nâng độ phân giải. Nâng độ phân giải creative có thể thêm chi tiết mới; nâng crisp hướng đến bản lớn sắc hơn của nội dung có sẵn. Đây là thao tác riêng có đầu vào và kết quả riêng, thay vì nghĩa bổ sung của tên mô hình raster hoặc vector.
Giới hạn câu lệnh, kích thước và ảnh nguồn
Đặc tả tạo ảnh V3 của nhà sản xuất nhận câu lệnh tối đa 1000 ký tự và 1–6 ảnh mỗi yêu cầu. Mô hình hỗ trợ 14 tỷ lệ khung hình: 1:1, 2:1, 1:2, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 6:10, 14:10, 10:14, 16:9 và 9:16. Ví dụ raster được công bố gồm 1024x1024, 1820x1024 và 1024x1820. Kích thước raster chính xác phải thuộc danh sách hỗ trợ; SVG dùng tỷ lệ khung hình không có kích thước pixel cố định. Khi bỏ qua kích thước, hệ thống nhà sản xuất chọn từ câu lệnh.
Với thao tác có ảnh đầu vào, nhà sản xuất liệt kê PNG, JPG và WebP, cùng SVG khi thao tác cụ thể cho phép. Tệp phải dưới 20 MB, không lớn hơn 16 MP, cạnh dài tối đa 4096 pixel. Cạnh ngắn ít nhất 256 pixel, với ngoại lệ 32 pixel cho nâng độ phân giải crisp. Mặt nạ khớp kích thước ảnh và dùng đen trắng thuần; tham chiếu phong cách có giới hạn tổng 64 MB.
Với dự án Ailoot API, biến tác vụ thành bản yêu cầu ảnh có trọng tâm: nội dung chính xác, sắp xếp vật thể, phong cách thị giác và bố cục mong muốn. Áp phích, cảnh sản phẩm và chuỗi biểu tượng cần bản yêu cầu khác nhau; giữ phân biệt biến thể cùng thao tác V3 liên quan khi quyết định cách dùng từng kết quả.
Ailoot Ultra · Ảnh POST /v1/images/generations recraft/recraft-v3
recraft/recraft-v3Bắt đầu
Recraft V3 tạo ảnh chụp, minh hoạ và bố cục đồ hoạ với cách sắp xếp có xét đến chữ cùng tuỳ chọn phong cách. Các biến thể raster và SVG riêng phù hợp áp phích, bộ ảnh thương hiệu, biểu tượng và thiết kế nơi nội dung chữ cùng cấu trúc thị giác cần phối hợp.
- Đầ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- Đị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ườngmodel | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn recraft/recraft-v3 | Mặc định— |
Trườngprompt | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối thiểu: 1 | Mặc định— |
Trườngn | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 1 Tối đa: 6 | Mặc định— |
Trườngaspect_ratio | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 1:1, 4:3, 3:4, 16:9, 9:16, auto | Mặc định— |
Trườnginput_references | Loạiarray | 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: 1 | 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ốcontent_type | Hợp đồngapplication/json |
Tham sốrequired | Hợp đồngmodel, prompt |
Tham sốmaterial_types | Hợp đồngtext, image |
Tham sốoptional_controls | Hợp đồngaspect_ratio, n, input_references |
Tham sốexact_supported_parameters | Hợp đồng{"aspect_ratio":{"type":"enum","values":["1:1","4:3","3:4","16:9","9:16","auto"]},"n":{"type":"range","min":1,"max":6},"input_references":{"type":"range","min":0,"max":1}} |
Tham sốreference_material_rule | Hợp đồngChỉ dùng tham chiếu ảnh thực tế của khách hàng; các điều kiện của điểm cuối nhà cung cấp chi phối việc sử dụng chúng. |
Bí danh phương thức: /v1/images
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}
Dùng mô hình chính xác và các trường đầu vào theo tài liệu.
Giữ lại toàn bộ phản hồi, mọi đầu ra thực tế và các ID gốc được trả về.
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 | Đơn vị tính phí | 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— | Đơn vị tính phí— | 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ìnhUltra | Biểu mức phí— | Số lượng dự báo— | Đơn vị tính phímỗi ảnh đầu ra | Phí Đầu ra · Đầu ra hình ảnh · Ước tính chỉ để so sánh $0.08 mỗi ảnh đầu ra |
| 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 | Đơn vị tính phí— | Phí Đầu ra · Chi phí tạo ước tính · Ước tính chỉ để so sánh $0.08 ướ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 →
Chi tiết giá cước tham chiếu
Biểu tham chiếu cấp mô hình không thay đổi việc chọn phương thức, báo giá hoặc khoản phí. Khoản phí đang áp dụng dùng mức phí phương thức Ailoot đã chọn.
Các cấu hình giá ảnh
Giá theo cấu hình
| Cấu hình | Điều kiện tính phí | Phí |
|---|---|---|
| Cấu hìnhẢnh đầu ra | Điều kiện tính phíKhông khai báo biến thể giá. | Phí Đầu ra · Ảnh đầu ra $0.08 mỗi ảnh Các mục niêm yết tương đương mô tả cùng một khoản phí; không cộng thêm phí thứ hai. |
Ví dụ yêu cầu
Ailoot Ultra · Ảnh
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': 'recraft/recraft-v3', '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
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")
request={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
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])
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": "recraft/recraft-v3", "prompt": "a red panda astronaut floating in space, studio lighting"};
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 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}/contentGET /v1/media/assetsGET /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.
Giữ lại mọi mục dữ liệu và toàn bộ mức sử dụng; tiếp nhận quyền sở hữu và lưu tất cả ảnh thực tế được trả về. Không tự tạo URL hoặc ID.
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ườngcreated | Loạiinteger |
Trườngdata[].url | Loạistring |
Trườngdata[].b64_json | Loạibase64 string |
Trườngusage | Loạiobject |
Bí danh
Bí danh mô hình
Ailoot Ultra recraft/recraft-v3
Bí danh đường dẫn phương thức
/v1/images
ID gọi liên quan
FAQ · Recraft: Recraft V3
- Có những đầu vào và kết quả nào?
POST /v1/images/generations·recraft/recraft-v3:text,image→image- Yêu cầu sử dụng những trường nào?
POST /v1/images/generations·recraft/recraft-v3:model,prompt,n,aspect_ratio,input_references- Áp dụng những giới hạn nào?
POST /v1/images/generations·recraft/recraft-v3:n.minimum:1;n.maximum:6