model

OpenAI: GPT-5.6 Luna

Markdown · JSON

OpenAI: GPT-5.6 Luna

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Tentang model

Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.

GPT-5.6 Luna adalah anggota keluarga GPT-5.6 OpenAI untuk volume pekerjaan yang tinggi. Model ini sesuai untuk tugas berulang yang terfokus, seperti respons percakapan, klasifikasi, ekstraksi, dan langkah agen yang ringan. Teks serta gambar dapat mendukung jawaban teks. Alur Luna yang berguna memiliki masukan yang jelas, hasil yang ditentukan, serta sejumlah kecil kondisi untuk memutuskan apakah hasil dapat digunakan.

Tugas berulang dengan arahan yang konsisten

Untuk klasifikasi, jelaskan kategori dan berikan contoh yang memperjelas batasnya. Untuk ekstraksi, sebutkan kolom yang harus dikembalikan dan cara menyajikan informasi yang tidak tersedia. Untuk respons dukungan, berikan permintaan pelanggan, informasi produk yang relevan, dan tindakan yang telah dilakukan. Pertahankan instruksi yang stabil pada item sebanding sambil mengganti bukti untuk setiap item.

Tugas visual dapat memberikan tangkapan layar atau foto yang terbaca dan menunjukkan detail yang penting. Minta informasi terlihat yang diperlukan berikutnya, seperti label, pesan antarmuka, atau perbedaan antara dua gambar yang diberikan. Jawaban tetap berupa teks yang berasal dari masukan tersebut. Simpan label gambar atau dokumen bersama hasil agar fakta yang diekstrak dapat ditelusuri ke sumber yang benar.

Penalaran dan bentuk keluaran

OpenAI mendokumentasikan pilihan upaya penalaran none, low, medium, high, xhigh, dan max, dengan medium sebagai nilai bawaan. Sesuaikan kedalaman yang diminta dengan tugas serta buktinya. Klasifikasi rutin mungkin memerlukan hasil yang ringkas, sedangkan kasus ambigu dapat memerlukan penjelasan lebih jelas tentang fakta yang mendukung keputusan. Tentukan jawaban akhir secara terpisah dari banyaknya analisis yang diperlukan untuk mencapainya.

Model mendukung keluaran berstruktur dan panggilan fungsi. Untuk rekaman data berstruktur, tentukan kolom serta jenis yang diwajibkan, lalu periksa isi yang dikembalikan terhadap sumber. Dalam alur yang mendukung alat, panggilan fungsi mengusulkan tindakan untuk aplikasi; aplikasi menyediakan hasil sebenarnya sebelum digunakan oleh langkah berikutnya. Ini memisahkan tindakan yang direncanakan dari bukti bahwa tindakan itu telah terjadi.

Konteks dan kemampuan integrasi

Produsen mencantumkan jendela konteks 1050000 token dan keluaran maksimum 128000 token. Susun bahan panjang berdasarkan pertanyaan saat ini dan sisakan ruang untuk jawaban. Pertahankan keputusan yang diperlukan bagi langkah berikutnya sambil membuang pengulangan yang tidak terkait dari arahan kerja.

OpenAI juga mendokumentasikan pengaliran dan, dalam lingkungan yang mendukung alat, pencarian web, pencarian berkas, pembuatan gambar, interpretasi kode, pekerjaan shell, penerapan patch, penggunaan komputer, serta alat MCP. Kemampuan itu bergantung pada lingkungan dan alat yang terhubung ke permintaan. Pilih operasi yang diperlukan untuk tugas dan periksa pengamatan atau artefak yang benar-benar dihasilkannya. Keluaran langsung model berupa teks; gambar atau berkas yang diubah adalah hasil operasi alat yang sesuai.

Simpan setiap item yang telah selesai bersama pengenal masukan dan hasil akhirnya. Untuk alur berulang, tinjau contoh sulit dari kumpulan masukan sebenarnya dan pertahankan definisi kategori atau kolom yang konsisten agar hasil tetap dapat dibandingkan.

Tugas praktis

Tugas praktis

Contoh teknis dalam bahasa Inggris

Extract a support follow-up record

Extract a follow-up record from this message: 'I am Noor, order N48. The blue mug arrived chipped yesterday. A replacement would be fine; mornings are best for contact.' Return customer name, order ID, item, reported problem, requested resolution and contact preference. Mark any delivery address or phone number as not supplied.

Hasil yang diharapkan

A compact named-field record preserving source wording and marking absent contact details.

Periksa hasil

Check that the requested replacement is recorded without claiming one was already dispatched.
Ailoot · Anthropic Messages POST /v1/messages gpt-5.6-luna

gpt-5.6-luna

OpenAI /gpt-5.6-luna

Mulai

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Masukan yang diterima
Teks · Gambar
Hasil
Teks

Tersedia di Ailoot · masukan & metode

Ailoot · Anthropic Messages POST /v1/messages
Masukan
text, image
Keluaran
text
Konteks
1.050.000 tokens
Keluaran maksimum
128.000 tokens
Format keluaran
json atau SSE
KolomJenisPersyaratanNilai & batasanBawaan
KolommodelJenisstringPersyaratanWajibNilai & batasan
gpt-5.6-luna
Bawaan—
KolommessagesJenismessage[]PersyaratanWajibNilai & batasan
Item minimum: 1
Bawaan—
Kolommessages[].roleJenisstringPersyaratanWajibNilai & batasan
user, assistant
Bawaan—
Kolommessages[].contentJenisstring|content_block[]PersyaratanWajibNilai & batasanBawaan—
KolomsystemJenisstring|content_block[]PersyaratanOpsionalNilai & batasanBawaan—
Kolommax_tokensJenisintegerPersyaratanWajibNilai & batasan
Minimum: 1
Batas berlaku untuk: batas maksimum yang tepat untuk model/kartu yang dipilih
Bawaan—
KolomstreamJenisbooleanPersyaratanOpsionalNilai & batasanBawaanfalse
KolomtemperatureJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtop_pJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomstop_sequencesJenisstring[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomtoolsJenistool[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtools[].nameJenisstringPersyaratanOpsionalNilai & batasan
Berlaku jika: alat disediakan
Bawaan—
Kolomtools[].descriptionJenisstringPersyaratanOpsionalNilai & batasanBawaan—
Kolomtools[].input_schemaJenisJSON_schemaPersyaratanOpsionalNilai & batasanBawaan—
Kolomtool_choiceJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomthinking.typeJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomthinking.budget_tokensJenisintegerPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomoutput_config.effortJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolommetadataJenisobjectPersyaratanOpsionalNilai & batasanBawaan—
Kolomcache_controlJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kombinasi bahan masukan

Teks · Teks UTF8

messages[].content atau blok type=text

Teks + gambar

{type:image,source:{type:base64,media_type,data}} atau sumber dengan type=url

Parameter metode dan siklus hidup
ParameterKontrak
Parametermaterial_typesKontraktext, image
ParameterrequiredKontrakmodel, messages, max_tokens
Parameteroptional_controlsKontraknull
Parametercontent_typeKontrakapplication/json
Parametertext_file_materialKontrakkonten UTF-8 aktual dimasukkan sebagai teks; ID file atau alamat URL (URLs) memerlukan dukungan yang tepat dan terpisah

Siklus hidup: exact retained published method

Struktur metode dan ID bersifat eksak; kemampuan pemasok terpisah dari penerimaan permintaan.

Paket

Tarif metode Ailoot

Ailoot Anthropic MessagesPOST /v1/messages
Masukan
US$0,0002 / 1K
Keluaran
US$0,0012 / 1K
Pembacaan cache
US$0,00002 / 1K
Penulisan cache
US$0,00025 / 1K
Penulisan cache, 5 menit
US$0,00025 / 1K tokens

Harga menurut panjang permintaan · Anthropic Messages

Ukuran permintaan, dalam tokenMasukanKeluaranPembacaan cachePenulisan cacheCache 5 menitCache 1 jam
Ukuran permintaan, dalam token(0; 272.000]MasukanUS$0,0002KeluaranUS$0,0012Pembacaan cacheUS$0,00002Penulisan cacheUS$0,00025Cache 5 menitUS$0,00025Cache 1 jamTarif dasar: —
Ukuran permintaan, dalam token(272.000; ∞)MasukanUS$0,0004KeluaranUS$0,0018Pembacaan cacheUS$0,00004Penulisan cacheUS$0,0005Cache 5 menitUS$0,0005Cache 1 jamTarif dasar: —

Tarif dalam USD per 1K token. Jika tidak ada tarif yang ditetapkan, tarif dasar metode ini diwarisi; «—» berarti tidak ada tarif dasar yang ditetapkan.

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →

Detail tarif referensi

Jadwal referensi tingkat model tidak mengubah pemilihan metode, estimasi harga, atau biaya. Biaya aktif menggunakan tarif metode Ailoot yang dipilih.

Jadwal referensi model

Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

KonfigurasiJadwal tarifToken konteks, lebih dariToken konteks, hingga dan termasukBiaya
KonfigurasiOpenAI Chat · Tarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tingkat 1 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tingkat 2 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tingkat 1 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tingkat 2 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token

Contoh permintaan

Ailoot · Anthropic Messages

Contoh teksMasukan, gambarPython SDKNode.js SDKAliran Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-luna", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+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/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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-luna", "max_tokens": 1024, "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image","source":{"type":"base64","media_type":mime,"data":b64}})
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/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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="gpt-5.6-luna",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "gpt-5.6-luna",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='gpt-5.6-luna',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")

Terima dan simpan hasil

Ailoot · Anthropic Messages

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Simpan semua blok konten, tanda tangan penalaran, dan ID penggunaan alat yang sebenarnya. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan keluaran.

Jika respons asli perlu diperiksa

Simpan ID permintaan/respons dan header. URL umum untuk pengambilan tugas teks tidak disediakan.

Kolom respons
KolomJenis
KolomidJenisstring
KolommodelJenisstring
Kolomcontent[]Jenistext|thinking|tool_use|other content block
Kolomstop_reasonJenisstring|null
KolomusageJenisobject
Kesalahan dan langkah berikutnya
ResponsKondisiLangkah berikutnya
Respons400 · invalid_request_errorKondisiBidang wajib, representasi materi, atau nilai parameter tidak validLangkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.

Alias

Alias model

Ailoot gpt-5.6-luna
Ailoot Ultra gpt-5.6-luna, openai/gpt-5.6-luna

Alias jalur metode

/chat/completions

ID pemanggil terkait

openai/gpt-5.6-luna, gpt-5.6-luna, gpt-5.6-luna

Ailoot · OpenAI Responses POST /v1/responses gpt-5.6-luna

gpt-5.6-luna

OpenAI /gpt-5.6-luna

Mulai

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Masukan yang diterima
Teks · Gambar
Hasil
Teks

Tersedia di Ailoot · masukan & metode

Ailoot · OpenAI Responses POST /v1/responses
Masukan
text, image
Keluaran
text
Konteks
1.050.000 tokens
Keluaran maksimum
128.000 tokens
Format keluaran
json atau SSE
KolomJenisPersyaratanNilai & batasanBawaan
KolommodelJenisstringPersyaratanWajibNilai & batasan
gpt-5.6-luna
Bawaan—
KolominputJenisstring|input_item[]PersyaratanWajibNilai & batasanBawaan—
KolominstructionsJenisstringPersyaratanOpsionalNilai & batasanBawaan—
Kolominput[].typeJenisstringPersyaratanOpsionalNilai & batasan
message, reasoning, function_call, function_call_output
Bawaan—
Kolominput[].contentJenisstring|content_part[]PersyaratanOpsionalNilai & batasanBawaan—
Kolominput[].call_idJenisstringPersyaratanOpsionalNilai & batasan
Berlaku jika: function_call_output; pertahankan call_id yang benar-benar dikembalikan
Bawaan—
Kolominput[].outputJenisstring|content_part[]PersyaratanOpsionalNilai & batasan
Berlaku jika: function_call_output
Bawaan—
Kolommax_output_tokensJenisintegerPersyaratanOpsionalNilai & batasan
Minimum: 1
Bergantung pada model
Bawaan—
KolomstreamJenisbooleanPersyaratanOpsionalNilai & batasanBawaanfalse
KolomtemperatureJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtop_pJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomtoolsJenistool[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtool_choiceJenisstring|objectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomparallel_tool_callsJenisbooleanPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomreasoning.effortJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomreasoning.summaryJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtext.formatJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtext.verbosityJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomincludeJenisstring[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomstoreJenisbooleanPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomprevious_response_idJenisstringPersyaratanOpsionalNilai & batasan
Persyaratan ID: Hanya ID respons yang benar-benar diperoleh dari kelanjutan yang didukung
Bergantung pada model
Bawaan—
Kolomservice_tierJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomprompt_cache_keyJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomprompt_cache_optionsJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kombinasi bahan masukan

Teks · Teks UTF8

Teks masukan atau bagian input_text

Teks + gambar

{type:input_image,image_url}

Parameter metode dan siklus hidup
ParameterKontrak
Parametermaterial_typesKontraktext, image
ParameterrequiredKontrakmodel, input
Parameteroptional_controlsKontraknull
Parametercontent_typeKontrakapplication/json
Parametertext_file_materialKontrakkonten UTF-8 aktual dimasukkan sebagai teks; ID file atau alamat URL (URLs) memerlukan dukungan yang tepat dan terpisah

Siklus hidup: exact retained published method

Struktur metode dan ID bersifat eksak; kemampuan pemasok terpisah dari penerimaan permintaan.

Paket

Tarif metode Ailoot

Ailoot OpenAI ResponsesPOST /v1/responses
Masukan
US$0,0002 / 1K
Keluaran
US$0,0012 / 1K
Pembacaan cache
US$0,00002 / 1K
Penulisan cache
US$0,00025 / 1K
Penulisan cache, 5 menit
US$0,00025 / 1K tokens

Harga menurut panjang permintaan · OpenAI Responses

Ukuran permintaan, dalam tokenMasukanKeluaranPembacaan cachePenulisan cacheCache 5 menitCache 1 jam
Ukuran permintaan, dalam token(0; 272.000]MasukanUS$0,0002KeluaranUS$0,0012Pembacaan cacheUS$0,00002Penulisan cacheUS$0,00025Cache 5 menitUS$0,00025Cache 1 jamTarif dasar: —
Ukuran permintaan, dalam token(272.000; ∞)MasukanUS$0,0004KeluaranUS$0,0018Pembacaan cacheUS$0,00004Penulisan cacheUS$0,0005Cache 5 menitUS$0,0005Cache 1 jamTarif dasar: —

Tarif dalam USD per 1K token. Jika tidak ada tarif yang ditetapkan, tarif dasar metode ini diwarisi; «—» berarti tidak ada tarif dasar yang ditetapkan.

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →

Detail tarif referensi

Jadwal referensi tingkat model tidak mengubah pemilihan metode, estimasi harga, atau biaya. Biaya aktif menggunakan tarif metode Ailoot yang dipilih.

Jadwal referensi model

Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

KonfigurasiJadwal tarifToken konteks, lebih dariToken konteks, hingga dan termasukBiaya
KonfigurasiOpenAI Chat · Tarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tingkat 1 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tingkat 2 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tingkat 1 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tingkat 2 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token

Contoh permintaan

Ailoot · OpenAI Responses

Contoh teksMasukan, gambarPython SDKNode.js SDKAliran Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-luna", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]="Summarize this material and quote supporting source passages.\n\n"+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/responses \
  -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
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-luna", "input": [{"role": "user", "content": [{"type": "input_text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["input"][0]["content"].append({"type":"input_image","image_url":"data:"+mime+";base64,"+b64})
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/responses \
  -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
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(json.loads(Path("result.json").read_text(encoding="utf-8")))
PY_RESULT
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)
resp = client.responses.create(model="gpt-5.6-luna", input="Explain the difference between an observation and a hypothesis in three sentences.")
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.responses.create({ model: "gpt-5.6-luna", input: "Explain the difference between an observation and a hypothesis in three sentences." });
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

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)
with client.responses.stream(model="gpt-5.6-luna", input="Explain the difference between an observation and a hypothesis in three sentences.") as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_response()
    save_result(final.to_dict(mode="json"),"stream-result")

Terima dan simpan hasil

Ailoot · OpenAI Responses

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Simpan setiap item keluaran dan bagian konten, call_id fungsi yang sebenarnya, penalaran terenkripsi, dan data penggunaan. Saat streaming, pertahankan identitas peristiwa/item secara lengkap.

Jika respons asli perlu diperiksa

Simpan ID permintaan/respons dan header. URL umum untuk pengambilan tugas teks tidak disediakan.

Kolom respons
KolomJenis
KolomidJenisstring
KolomstatusJenisstring
Kolomoutput[]Jenismessage|reasoning|function_call|other item
Kolomoutput[].content[]Jeniscontent part
KolomusageJenisobject
Kesalahan dan langkah berikutnya
ResponsKondisiLangkah berikutnya
Respons400 · invalid_request_errorKondisiBidang wajib, representasi materi, atau nilai parameter tidak validLangkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.

Alias

Alias model

Ailoot gpt-5.6-luna
Ailoot Ultra gpt-5.6-luna, openai/gpt-5.6-luna

Alias jalur metode

/chat/completions

ID pemanggil terkait

openai/gpt-5.6-luna, gpt-5.6-luna, gpt-5.6-luna

Ailoot · OpenAI Chat POST /v1/chat/completions gpt-5.6-luna

gpt-5.6-luna

OpenAI /gpt-5.6-luna

Mulai

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Masukan yang diterima
Teks · Gambar
Hasil
Teks

Tersedia di Ailoot · masukan & metode

Ailoot · OpenAI Chat POST /v1/chat/completions
Masukan
text, image
Keluaran
text
Konteks
1.050.000 tokens
Keluaran maksimum
128.000 tokens
Format keluaran
json atau SSE
KolomJenisPersyaratanNilai & batasanBawaan
KolommodelJenisstringPersyaratanWajibNilai & batasan
gpt-5.6-luna
Bawaan—
KolommessagesJenismessage[]PersyaratanWajibNilai & batasan
Item minimum: 1
Bawaan—
Kolommessages[].roleJenisstringPersyaratanWajibNilai & batasan
Contoh: system, user, assistant, tool, function
Kondisi: Peran ini direpresentasikan secara eksplisit oleh tipe kompatibilitas dalam kode sumber; kumpulan peran model yang tepat tetap khusus untuk tiap model.
Bergantung pada model
Bawaan—
Kolommessages[].contentJenisstring|content_part[]|nullPersyaratanOpsionalNilai & batasanBawaan—
Kolommessages[].tool_callsJenistool_call[]PersyaratanOpsionalNilai & batasanBawaan—
Kolommessages[].tool_call_idJenisstringPersyaratanOpsionalNilai & batasan
Berlaku jika: role=tool; gunakan ID yang benar-benar dikembalikan
Bawaan—
Kolommessages[].nameJenisstringPersyaratanOpsionalNilai & batasanBawaan—
Kolommessages[].reasoning_contentJenisstringPersyaratanOpsionalNilai & batasan
Berlaku jika: Kirim kembali penalaran yang benar-benar dikembalikan jika model ini menggunakannya
Bawaan—
Kolommessages[].reasoning_detailsJenisobject|arrayPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolommax_tokensJenisintegerPersyaratanOpsionalNilai & batasan
Minimum: 1
Bergantung pada model
Bawaan—
Kolommax_completion_tokensJenisintegerPersyaratanOpsionalNilai & batasan
Minimum: 1
Bergantung pada model
Bawaan—
KolomstreamJenisbooleanPersyaratanOpsionalNilai & batasanBawaanfalse
Kolomstream_options.include_usageJenisbooleanPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomtemperatureJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtop_pJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomstopJenisstring|string[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomtoolsJenisfunction_tool[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtools[].typeJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtools[].function.nameJenisstringPersyaratanWajibNilai & batasan
Berlaku jika: alat fungsi disediakan
Bawaan—
Kolomtools[].function.descriptionJenisstringPersyaratanOpsionalNilai & batasanBawaan—
Kolomtools[].function.parametersJenisJSON_schemaPersyaratanOpsionalNilai & batasanBawaan—
Kolomtool_choiceJenisstring|objectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomparallel_tool_callsJenisbooleanPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomresponse_formatJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomreasoning_effortJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomreasoningJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomservice_tierJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolominstructionsJenisstringPersyaratanOpsionalNilai & batasan
Kolom kompatibilitas
Bawaan—
KolomfunctionsJenisfunction[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomfunction_callJenisstring|objectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomprompt_cache_optionsJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kombinasi bahan masukan

Teks · Teks UTF8

messages[].content

Teks + gambar

{type:image_url,image_url:{url,detail}}

Parameter metode dan siklus hidup
ParameterKontrak
Parametermaterial_typesKontraktext, image
ParameterrequiredKontrakmodel, messages
Parameteroptional_controlsKontraknull
Parametercontent_typeKontrakapplication/json
Parametertext_file_materialKontrakkonten UTF-8 aktual dimasukkan sebagai teks; ID file atau alamat URL (URLs) memerlukan dukungan yang tepat dan terpisah

Siklus hidup: exact retained published method

Struktur metode dan ID bersifat eksak; kemampuan pemasok terpisah dari penerimaan permintaan.

Paket

Tarif metode Ailoot

Ailoot OpenAI ChatPOST /v1/chat/completions
Masukan
US$0,0002 / 1K
Keluaran
US$0,0012 / 1K
Pembacaan cache
US$0,00002 / 1K
Penulisan cache
US$0,00025 / 1K
Penulisan cache, 5 menit
US$0,00025 / 1K tokens

Harga menurut panjang permintaan · OpenAI Chat

Ukuran permintaan, dalam tokenMasukanKeluaranPembacaan cachePenulisan cacheCache 5 menitCache 1 jam
Ukuran permintaan, dalam token(0; 272.000]MasukanUS$0,0002KeluaranUS$0,0012Pembacaan cacheUS$0,00002Penulisan cacheUS$0,00025Cache 5 menitUS$0,00025Cache 1 jamTarif dasar: —
Ukuran permintaan, dalam token(272.000; ∞)MasukanUS$0,0004KeluaranUS$0,0018Pembacaan cacheUS$0,00004Penulisan cacheUS$0,0005Cache 5 menitUS$0,0005Cache 1 jamTarif dasar: —

Tarif dalam USD per 1K token. Jika tidak ada tarif yang ditetapkan, tarif dasar metode ini diwarisi; «—» berarti tidak ada tarif dasar yang ditetapkan.

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →

Detail tarif referensi

Jadwal referensi tingkat model tidak mengubah pemilihan metode, estimasi harga, atau biaya. Biaya aktif menggunakan tarif metode Ailoot yang dipilih.

Jadwal referensi model

Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

KonfigurasiJadwal tarifToken konteks, lebih dariToken konteks, hingga dan termasukBiaya
KonfigurasiOpenAI Chat · Tarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tingkat 1 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiOpenAI Chat · Tingkat 2 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tingkat 1 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiAnthropic Messages · Tingkat 2 berdasarkan panjang permintaanJadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token

Contoh permintaan

Ailoot · OpenAI Chat

Contoh teksMasukan, gambarPython SDKNode.js SDKAliran Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-luna", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+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/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'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_FILE:?Set your actual PNG JPEG or WebP image}"
export AILOOT_IMAGE_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-5.6-luna", "messages": [{"role": "user", "content": [{"type": "text", "text": "Read labels and numbers in this image; flag unreadable text."}]}]}')
import base64
f=Path(os.environ["AILOOT_IMAGE_FILE"])
if not f.is_file():raise SystemExit("Choose an actual PNG JPEG or WebP image")
raw=f.read_bytes()
mime="image/png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "image/jpeg" if raw.startswith(b"\xff\xd8") else "image/webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else None
if not mime:raise SystemExit("Use PNG JPEG or WebP")
b64=base64.b64encode(raw).decode()
p["messages"][0]["content"].append({"type":"image_url","image_url":{"url":"data:"+mime+";base64,"+b64}})
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'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
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)
resp = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "gpt-5.6-luna",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? "png" : raw[0]===255 && raw[1]===216 ? "jpg" : raw.subarray(0,4).toString()==="RIFF" && raw.subarray(8,12).toString()==="WEBP" ? "webp" : suffix;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
from openai import OpenAI
import os
from pathlib import Path

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)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='gpt-5.6-luna',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Terima dan simpan hasil

Ailoot · OpenAI Chat

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Simpan setiap alternatif jawaban beserta konten, panggilan alat, dan penalarannya. Dalam SSE, gabungkan delta menurut indeks alternatif jawaban/alat, lalu pertahankan alasan penghentian akhir dan data penggunaan.

Jika respons asli perlu diperiksa

Simpan ID permintaan/respons dan header. URL umum untuk pengambilan tugas teks tidak disediakan.

Kolom respons
KolomJenis
Kolomchoices[].indexJenisinteger
Kolomchoices[].message.contentJenisstring|null
Kolomchoices[].message.tool_callsJenistool_call[]
Kolomchoices[].message.reasoning_contentJenisstring
Kolomchoices[].message.reasoning_detailsJenisobject|array
Kolomchoices[].finish_reasonJenisstring|null
KolomusageJenisobject
Kesalahan dan langkah berikutnya
ResponsKondisiLangkah berikutnya
Respons400 · invalid_request_errorKondisiBidang wajib, representasi materi, atau nilai parameter tidak validLangkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.

Alias

Alias model

Ailoot gpt-5.6-luna
Ailoot Ultra gpt-5.6-luna, openai/gpt-5.6-luna

Alias jalur metode

/chat/completions

ID pemanggil terkait

openai/gpt-5.6-luna, gpt-5.6-luna, gpt-5.6-luna

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gpt-5.6-luna

gpt-5.6-luna

OpenAI /gpt-5.6-luna
ID model
  • gpt-5.6-luna
  • openai/gpt-5.6-luna

Mulai

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Masukan yang diterima
Teks
Hasil
Teks

Tersedia di Ailoot · masukan & metode

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Masukan
text
Keluaran
text
Format keluaran
json atau SSE
KolomJenisPersyaratanNilai & batasanBawaan
KolommodelJenisstringPersyaratanWajibNilai & batasan
gpt-5.6-luna
Bawaan—
KolommessagesJenismessage[]PersyaratanWajibNilai & batasan
Item minimum: 1
Bawaan—
Kolommessages[].roleJenisstringPersyaratanWajibNilai & batasan
Bergantung pada model
Bawaan—
Kolommessages[].contentJenisstringPersyaratanOpsionalNilai & batasan
Berlaku jika: Percakapan teks
Bawaan—
KolomstreamJenisbooleanPersyaratanOpsionalNilai & batasanBawaanfalse
Kombinasi bahan masukan

Teks · Teks UTF8

messages[].content

Parameter metode dan siklus hidup
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages
Parametermaterial_typesKontraktext
ParametermessagesKontrakarray pesan dengan struktur role/content
Parameterfile_materialKontrakdokumen UTF-8 yang sebenarnya dimasukkan sebagai teks apa adanya; ID file tidak disimpulkan
Parameteroptional_controlsKontrakstream
Parametercontrol_scopeKontrakPercakapan teks; stream adalah nilai boolean dengan false sebagai bawaan.
Parameteroutput_modalitiesKontraktext
Parameterhosted_operationsKontrakfalse
Parametermultimodal_input_bindingKontraknull

Alias metode: /chat/completions

Siklus hidup: synchronous_or_streamed

Kirim ID model yang tepat bersama messages.

Panjang konteks bukan batas keluaran.

File teks dapat menyediakan teks apa adanya; masukan gambar/audio/objek file memerlukan pengikatan yang tepat.

Paket

Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.

Mode Fast
Tarif standar Saat mode fast dipilih
Mode Flex
Tarif standar Saat mode flex dipilih
Upaya penalaran maksimum
Tarif standar Saat upaya penalaran maksimum menggunakan penyesuaian default
Upaya penalaran · high
Tarif standar Saat upaya penalaran bernilai high
Upaya penalaran · low
Tarif standar Saat upaya penalaran bernilai low
Upaya penalaran · max
Tarif standar Saat upaya penalaran bernilai max
Upaya penalaran · medium
Tarif standar Saat upaya penalaran bernilai medium
Upaya penalaran · none
Tarif standar Saat upaya penalaran bernilai none
Upaya penalaran · xhigh
Tarif standar Saat upaya penalaran bernilai xhigh

Tarif Ailoot

Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

KonfigurasiJadwal tarifToken konteks, lebih dariToken konteks, hingga dan termasukBiaya
KonfigurasiTarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 1Jadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 2Jadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →

Contoh permintaan

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gpt-5.6-luna","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'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
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="gpt-5.6-luna", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))

Terima dan simpan hasil

Ailoot Ultra · OpenAI Chat

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Simpan setiap alternatif jawaban beserta konten, panggilan alat, dan penalarannya. Dalam SSE, gabungkan delta menurut indeks alternatif jawaban/alat, lalu pertahankan alasan penghentian akhir dan data penggunaan.

Jika respons asli perlu diperiksa

Simpan ID permintaan/respons dan header. URL umum untuk pengambilan tugas teks tidak disediakan.

Kolom respons
KolomJenis
Kolomchoices[].indexJenisinteger
Kolomchoices[].message.contentJenisstring|null
Kolomchoices[].message.tool_callsJenistool_call[]
Kolomchoices[].message.reasoning_contentJenisstring
Kolomchoices[].message.reasoning_detailsJenisobject|array
Kolomchoices[].finish_reasonJenisstring|null
KolomusageJenisobject
Kesalahan dan langkah berikutnya
ResponsKondisiLangkah berikutnya
Respons400 · invalid_request_errorKondisiBidang wajib, representasi materi, atau nilai parameter tidak validLangkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.

Alias

Alias model

Ailoot gpt-5.6-luna
Ailoot Ultra gpt-5.6-luna, openai/gpt-5.6-luna

Alias jalur metode

/chat/completions

ID pemanggil terkait

openai/gpt-5.6-luna, gpt-5.6-luna, gpt-5.6-luna

Ailoot Ultra · Anthropic Messages POST /v1/messages gpt-5.6-luna

gpt-5.6-luna

OpenAI /gpt-5.6-luna
ID model
  • gpt-5.6-luna
  • openai/gpt-5.6-luna

Mulai

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Masukan yang diterima
Teks
Hasil
json · sse

Tersedia di Ailoot · masukan & metode

Ailoot Ultra · Anthropic Messages POST /v1/messages
Masukan
text
Keluaran
json, sse
Format keluaran
JSON atau SSE
KolomJenisPersyaratanNilai & batasanBawaan
KolommodelJenisstringPersyaratanWajibNilai & batasan
gpt-5.6-luna
Bawaan—
KolommessagesJenismessage[]PersyaratanWajibNilai & batasanBawaan—
Kolommessages[].roleJenisstringPersyaratanWajibNilai & batasan
user, assistant
Bawaan—
Kolommessages[].contentJenisstringPersyaratanWajibNilai & batasanBawaan—
Kolommax_tokensJenisintegerPersyaratanWajibNilai & batasanBawaan—
KolomstreamJenisbooleanPersyaratanOpsionalNilai & batasanBawaanfalse
Kombinasi bahan masukan

Teks · Teks UTF-8

string messages[].content

Parameter metode dan siklus hidup
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages, max_tokens
Parameteroptional_controlsKontrakstream
Parametermaterial_typesKontraktext
Parametertext_file_materialKontrakBaca dokumen UTF-8 yang sebenarnya dan masukkan teksnya ke string masukan atau konten pesan yang ditunjukkan.

Siklus hidup: synchronous_or_streamed

Paket

Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.

Mode Fast
Tarif standar Saat mode fast dipilih
Mode Flex
Tarif standar Saat mode flex dipilih
Upaya penalaran maksimum
Tarif standar Saat upaya penalaran maksimum menggunakan penyesuaian default
Upaya penalaran · high
Tarif standar Saat upaya penalaran bernilai high
Upaya penalaran · low
Tarif standar Saat upaya penalaran bernilai low
Upaya penalaran · max
Tarif standar Saat upaya penalaran bernilai max
Upaya penalaran · medium
Tarif standar Saat upaya penalaran bernilai medium
Upaya penalaran · none
Tarif standar Saat upaya penalaran bernilai none
Upaya penalaran · xhigh
Tarif standar Saat upaya penalaran bernilai xhigh

Tarif Ailoot

Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

KonfigurasiJadwal tarifToken konteks, lebih dariToken konteks, hingga dan termasukBiaya
KonfigurasiTarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 1Jadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 2Jadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →

Contoh permintaan

Ailoot Ultra · Anthropic Messages

Isi permintaan JSON minimal yang lengkapcurl · gunakan dokumen UTF-8 AndaPython · simpan hasil secara lengkap
{
  "model": "gpt-5.6-luna",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
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': 'gpt-5.6-luna', '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
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': 'gpt-5.6-luna', '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))

Terima dan simpan hasil

Ailoot Ultra · Anthropic Messages

JSON atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Simpan semua blok konten, tanda tangan penalaran, dan ID penggunaan alat yang sebenarnya. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan keluaran.

Jika respons asli perlu diperiksa

Simpan ID permintaan/respons dan header. URL umum untuk pengambilan tugas teks tidak disediakan.

Kolom respons
KolomJenis
KolomidJenisstring
KolommodelJenisstring
Kolomcontent[]Jenistext|thinking|tool_use|other content block
Kolomstop_reasonJenisstring|null
KolomusageJenisobject
Kesalahan dan langkah berikutnya
ResponsKondisiLangkah berikutnya
Respons400 · invalid_request_errorKondisiBidang wajib, representasi materi, atau nilai parameter tidak validLangkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.

Alias

Alias model

Ailoot gpt-5.6-luna
Ailoot Ultra gpt-5.6-luna, openai/gpt-5.6-luna

Alias jalur metode

/chat/completions

ID pemanggil terkait

openai/gpt-5.6-luna, gpt-5.6-luna, gpt-5.6-luna

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions openai/gpt-5.6-luna

openai/gpt-5.6-luna

OpenAI /openai/gpt-5.6-luna
ID model
  • gpt-5.6-luna
  • openai/gpt-5.6-luna

Mulai

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Masukan yang diterima
Teks
Hasil
Teks

Tersedia di Ailoot · masukan & metode

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Masukan
text
Keluaran
text
Format keluaran
json atau SSE
KolomJenisPersyaratanNilai & batasanBawaan
KolommodelJenisstringPersyaratanWajibNilai & batasan
openai/gpt-5.6-luna
Bawaan—
KolommessagesJenismessage[]PersyaratanWajibNilai & batasan
Item minimum: 1
Bawaan—
Kolommessages[].roleJenisstringPersyaratanWajibNilai & batasan
Contoh: system, user, assistant, tool, function
Kondisi: Peran ini direpresentasikan secara eksplisit oleh tipe kompatibilitas dalam kode sumber; kumpulan peran model yang tepat tetap khusus untuk tiap model.
Bergantung pada model
Bawaan—
Kolommessages[].contentJenisstring|content_part[]|nullPersyaratanOpsionalNilai & batasanBawaan—
Kolommessages[].tool_callsJenistool_call[]PersyaratanOpsionalNilai & batasanBawaan—
Kolommessages[].tool_call_idJenisstringPersyaratanOpsionalNilai & batasan
Berlaku jika: role=tool; gunakan ID yang benar-benar dikembalikan
Bawaan—
Kolommessages[].nameJenisstringPersyaratanOpsionalNilai & batasanBawaan—
Kolommessages[].reasoning_contentJenisstringPersyaratanOpsionalNilai & batasan
Berlaku jika: Kirim kembali penalaran yang benar-benar dikembalikan jika model ini menggunakannya
Bawaan—
Kolommessages[].reasoning_detailsJenisobject|arrayPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolommax_tokensJenisintegerPersyaratanOpsionalNilai & batasan
Minimum: 1
Bergantung pada model
Bawaan—
Kolommax_completion_tokensJenisintegerPersyaratanOpsionalNilai & batasan
Minimum: 1
Bergantung pada model
Bawaan—
KolomstreamJenisbooleanPersyaratanOpsionalNilai & batasanBawaanfalse
Kolomstream_options.include_usageJenisbooleanPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomtemperatureJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtop_pJenisnumberPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomstopJenisstring|string[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomtoolsJenisfunction_tool[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomtools[].typeJenisstringPersyaratanOpsionalNilai & batasan
function
Bergantung pada model
Bawaan—
Kolomtools[].function.nameJenisstringPersyaratanWajibNilai & batasan
Berlaku jika: alat fungsi disediakan
Bawaan—
Kolomtools[].function.descriptionJenisstringPersyaratanOpsionalNilai & batasanBawaan—
Kolomtools[].function.parametersJenisJSON_schemaPersyaratanOpsionalNilai & batasanBawaan—
Kolomtool_choiceJenisstring|objectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomparallel_tool_callsJenisbooleanPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomresponse_formatJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomreasoning_effortJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolomreasoningJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomservice_tierJenisstringPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolominstructionsJenisstringPersyaratanOpsionalNilai & batasan
Kolom kompatibilitas
Bawaan—
KolomfunctionsJenisfunction[]PersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomfunction_callJenisstring|objectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
Kolomprompt_cache_optionsJenisobjectPersyaratanOpsionalNilai & batasan
Bergantung pada model
Bawaan—
KolommodalitiesJenisstring[]PersyaratanOpsionalNilai & batasan
text
Bawaan—
KolomproviderJenisobjectPersyaratanOpsionalNilai & batasan
Kondisi: provider.options ditolak pada rute teks Ultra ini
Bawaan—
Kolomcache_control.ttlJenisstringPersyaratanOpsionalNilai & batasan
Kondisi: 1h ditolak pada lokasi cache prompt yang digunakan
Bawaan—
Kombinasi bahan masukan

Teks · Teks UTF8

messages[].content

Parameter metode dan siklus hidup
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages
Parametermaterial_typesKontraktext
ParametermessagesKontrakarray pesan dengan struktur role/content
Parameterfile_materialKontrakdokumen UTF-8 yang sebenarnya dimasukkan sebagai teks apa adanya; ID file tidak disimpulkan
Parameteroptional_controlsKontrakstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeKontrakkhusus model; alat fungsi pengguna berbeda dari alat yang dihosting
Parameteroutput_modalitiesKontraktext
Parameterhosted_operationsKontrakfalse
Parametermultimodal_input_bindingKontraknull

Siklus hidup: synchronous_or_streamed

Kirim ID model yang tepat bersama messages.

Panjang konteks bukan batas keluaran.

File teks dapat menyediakan teks apa adanya; masukan gambar/audio/objek file memerlukan pengikatan yang tepat.

Paket

Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.

Mode Fast
Tarif standar Saat mode fast dipilih
Mode Flex
Tarif standar Saat mode flex dipilih
Upaya penalaran maksimum
Tarif standar Saat upaya penalaran maksimum menggunakan penyesuaian default
Upaya penalaran · high
Tarif standar Saat upaya penalaran bernilai high
Upaya penalaran · low
Tarif standar Saat upaya penalaran bernilai low
Upaya penalaran · max
Tarif standar Saat upaya penalaran bernilai max
Upaya penalaran · medium
Tarif standar Saat upaya penalaran bernilai medium
Upaya penalaran · none
Tarif standar Saat upaya penalaran bernilai none
Upaya penalaran · xhigh
Tarif standar Saat upaya penalaran bernilai xhigh

Tarif Ailoot

Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

KonfigurasiJadwal tarifToken konteks, lebih dariToken konteks, hingga dan termasukBiaya
KonfigurasiTarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 1Jadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 2Jadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →

Contoh permintaan

Ailoot Ultra · OpenAI Chat

curlPython SDKAliran Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/gpt-5.6-luna", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

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'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
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='openai/gpt-5.6-luna',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path

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)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='openai/gpt-5.6-luna',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

Terima dan simpan hasil

Ailoot Ultra · OpenAI Chat

json atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Simpan setiap alternatif jawaban beserta konten, panggilan alat, dan penalarannya. Dalam SSE, gabungkan delta menurut indeks alternatif jawaban/alat, lalu pertahankan alasan penghentian akhir dan data penggunaan.

Jika respons asli perlu diperiksa

Simpan ID permintaan/respons dan header. URL umum untuk pengambilan tugas teks tidak disediakan.

Kolom respons
KolomJenis
Kolomchoices[].indexJenisinteger
Kolomchoices[].message.contentJenisstring|null
Kolomchoices[].message.tool_callsJenistool_call[]
Kolomchoices[].message.reasoning_contentJenisstring
Kolomchoices[].message.reasoning_detailsJenisobject|array
Kolomchoices[].finish_reasonJenisstring|null
KolomusageJenisobject
Kesalahan dan langkah berikutnya
ResponsKondisiLangkah berikutnya
Respons400 · invalid_request_errorKondisiBidang wajib, representasi materi, atau nilai parameter tidak validLangkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.

Alias

Alias model

Ailoot gpt-5.6-luna
Ailoot Ultra gpt-5.6-luna, openai/gpt-5.6-luna

Alias jalur metode

/chat/completions

ID pemanggil terkait

openai/gpt-5.6-luna, gpt-5.6-luna, gpt-5.6-luna

Ailoot Ultra · Anthropic Messages POST /v1/messages openai/gpt-5.6-luna

openai/gpt-5.6-luna

OpenAI /openai/gpt-5.6-luna
ID model
  • gpt-5.6-luna
  • openai/gpt-5.6-luna

Mulai

GPT-5.6 Luna adalah model OpenAI untuk percakapan bervolume tinggi, klasifikasi, dan tugas agen yang terfokus. Model ini menerima teks dan gambar untuk jawaban teks, dengan kontrol penalaran, panggilan fungsi, keluaran berstruktur, dan jendela konteks 1050000 token.

Masukan yang diterima
Teks
Hasil
json · sse

Tersedia di Ailoot · masukan & metode

Ailoot Ultra · Anthropic Messages POST /v1/messages
Masukan
text
Keluaran
json, sse
Format keluaran
JSON atau SSE
KolomJenisPersyaratanNilai & batasanBawaan
KolommodelJenisstringPersyaratanWajibNilai & batasan
openai/gpt-5.6-luna
Bawaan—
KolommessagesJenismessage[]PersyaratanWajibNilai & batasanBawaan—
Kolommessages[].roleJenisstringPersyaratanWajibNilai & batasan
user, assistant
Bawaan—
Kolommessages[].contentJenisstringPersyaratanWajibNilai & batasanBawaan—
Kolommax_tokensJenisintegerPersyaratanWajibNilai & batasanBawaan—
KolomstreamJenisbooleanPersyaratanOpsionalNilai & batasanBawaanfalse
Kombinasi bahan masukan

Teks · Teks UTF-8

string messages[].content

Parameter metode dan siklus hidup
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, messages, max_tokens
Parameteroptional_controlsKontrakstream
Parametermaterial_typesKontraktext
Parametertext_file_materialKontrakBaca dokumen UTF-8 yang sebenarnya dan masukkan teksnya ke string masukan atau konten pesan yang ditunjukkan.

Siklus hidup: synchronous_or_streamed

Paket

Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.

Mode Fast
Tarif standar Saat mode fast dipilih
Mode Flex
Tarif standar Saat mode flex dipilih
Upaya penalaran maksimum
Tarif standar Saat upaya penalaran maksimum menggunakan penyesuaian default
Upaya penalaran · high
Tarif standar Saat upaya penalaran bernilai high
Upaya penalaran · low
Tarif standar Saat upaya penalaran bernilai low
Upaya penalaran · max
Tarif standar Saat upaya penalaran bernilai max
Upaya penalaran · medium
Tarif standar Saat upaya penalaran bernilai medium
Upaya penalaran · none
Tarif standar Saat upaya penalaran bernilai none
Upaya penalaran · xhigh
Tarif standar Saat upaya penalaran bernilai xhigh

Tarif Ailoot

Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

KonfigurasiJadwal tarifToken konteks, lebih dariToken konteks, hingga dan termasukBiaya
KonfigurasiTarif dasar tokenJadwal tarifTarif dasarToken konteks, lebih dari—Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 1Jadwal tarif—Token konteks, lebih dari0Token konteks, hingga dan termasuk272.000Biaya
Masukan · Token masukan $0.0004 / 1K token
Keluaran · Token keluaran $0.0024 / 1K token
Masukan · Pembacaan cache $0.00004 / 1K token
Masukan · Penulisan cache $0.0005 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token
KonfigurasiPanjang permintaan · tingkat 2Jadwal tarif—Token konteks, lebih dari272.000Token konteks, hingga dan termasukTanpa batas atasBiaya
Masukan · Token masukan $0.0008 / 1K token
Keluaran · Token keluaran $0.0036 / 1K token
Masukan · Pembacaan cache $0.00008 / 1K token
Masukan · Penulisan cache $0.001 / 1K token
Masukan · Penulisan cache, 1 jam — / 1K token

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →

Contoh permintaan

Ailoot Ultra · Anthropic Messages

Isi permintaan JSON minimal yang lengkapcurl · gunakan dokumen UTF-8 AndaPython · simpan hasil secara lengkap
{
  "model": "openai/gpt-5.6-luna",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
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': 'openai/gpt-5.6-luna', '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
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': 'openai/gpt-5.6-luna', '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))

Terima dan simpan hasil

Ailoot Ultra · Anthropic Messages

JSON atau SSE

Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Simpan semua blok konten, tanda tangan penalaran, dan ID penggunaan alat yang sebenarnya. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan keluaran.

Jika respons asli perlu diperiksa

Simpan ID permintaan/respons dan header. URL umum untuk pengambilan tugas teks tidak disediakan.

Kolom respons
KolomJenis
KolomidJenisstring
KolommodelJenisstring
Kolomcontent[]Jenistext|thinking|tool_use|other content block
Kolomstop_reasonJenisstring|null
KolomusageJenisobject
Kesalahan dan langkah berikutnya
ResponsKondisiLangkah berikutnya
Respons400 · invalid_request_errorKondisiBidang wajib, representasi materi, atau nilai parameter tidak validLangkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.

Alias

Alias model

Ailoot gpt-5.6-luna
Ailoot Ultra gpt-5.6-luna, openai/gpt-5.6-luna

Alias jalur metode

/chat/completions

ID pemanggil terkait

openai/gpt-5.6-luna, gpt-5.6-luna, gpt-5.6-luna

FAQ · OpenAI: GPT-5.6 Luna
Input dan hasil apa yang tersedia?

POST /v1/messages · gpt-5.6-luna: text, image → text

POST /v1/responses · gpt-5.6-luna: text, image → text

POST /v1/chat/completions · gpt-5.6-luna: text, image → text

POST /v1/chat/completions · gpt-5.6-luna: text → text

POST /v1/messages · gpt-5.6-luna: text → json, sse

POST /v1/chat/completions · openai/gpt-5.6-luna: text → text

POST /v1/messages · openai/gpt-5.6-luna: text → json, sse

Kolom apa yang digunakan permintaan?

POST /v1/messages · gpt-5.6-luna: model, messages, system, max_tokens, stream, metadata

POST /v1/responses · gpt-5.6-luna: model, input, instructions, stream

POST /v1/chat/completions · gpt-5.6-luna: model, messages, stream

POST /v1/chat/completions · gpt-5.6-luna: model, messages, stream

POST /v1/messages · gpt-5.6-luna: model, messages, max_tokens, stream

POST /v1/chat/completions · openai/gpt-5.6-luna: model, messages, stream, modalities, provider

POST /v1/messages · openai/gpt-5.6-luna: model, messages, max_tokens, stream

Batasan apa yang berlaku?

POST /v1/messages · gpt-5.6-luna: ctx: 1050000; max_out: 128000; messages.min_items: 1; max_tokens.minimum: 1

POST /v1/responses · gpt-5.6-luna: ctx: 1050000; max_out: 128000

POST /v1/chat/completions · gpt-5.6-luna: ctx: 1050000; max_out: 128000; messages.min_items: 1

POST /v1/chat/completions · gpt-5.6-luna: messages.min_items: 1

POST /v1/chat/completions · openai/gpt-5.6-luna: messages.min_items: 1

Rincian selengkapnya

Hubungkan Ailoot ke Claude Code, OpenCode, Hermes, atau aplikasi Anda.

Perusahaan dan portofolio proyeknya

Perusahaan dan portofolio proyeknya: jutaan pelanggan; penjualan miliaran setiap bulan.

Beli token dengan diskon.

Diskon langganan untuk pekerjaan rutin. Kode promo — hingga 50% untuk pembelian token.

Langganan
Pilih paket dengan diskon untuk permintaan rutin Anda.
Kode promo hingga 50%
Masukkan kode saat membeli. Harga dihitung ulang sesuai promosi aktif.
Biaya dalam riwayat
Model, token, dan jumlah tagihan disimpan untuk setiap permintaan.

Pilih langganan · Lihat harga model

Hubungkan API ke produk yang Anda jual.

SaaS, aplikasi, dan bot — sesuai penawaran dan perjanjian lisensi Ailoot. Untuk penjualan kembali, mintalah lisensi reseller.

Aplikasi komersial
Integrasikan pembuatan teks, gambar, video, dan suara dalam fitur berbayar layanan Anda.
Lisensi reseller
Kirim deskripsi proyek dan skema akses. Mintalah ketentuan penggunaan dan penjualan kembali secara tertulis.
Dokumen di situs
Penawaran, perjanjian lisensi, dan kebijakan pemrosesan data tersedia sebelum koneksi.

Minta lisensi reseller · Penawaran dan perjanjian lisensi