Source: https://ailoot.ai/models/id/farui-plus/
Canonical: https://ailoot.ai/models/id/farui-plus/
Language: id

# farui-plus

[Markdown](https://ailoot.ai/models/id/farui-plus/index.md) · [JSON](https://ailoot.ai/models/id/farui-plus/facts.json)

## [farui-plus](https://ailoot.ai/models/id/farui-plus/)

Tongyi FaRui Plus dari Alibaba adalah model teks yang dikhususkan untuk pertanyaan hukum, analisis perkara, penyusunan dokumen hukum, dan peninjauan kontrak. Siapkan fakta dan klausul yang relevan dalam bentuk teks, lalu gunakan pertanyaan atau dialog yang terarah untuk memperoleh analisis atau draf tertulis.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `farui-plus`](https://ailoot.ai/models/id/farui-plus/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `farui-plus`](https://ailoot.ai/models/id/farui-plus/#method-1)

Tentang model

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

#### Model teks untuk bidang hukum

Tongyi FaRui Plus, yang diidentifikasi produsen sebagai farui-plus, dibangun di atas fondasi Qwen dan dikhususkan menggunakan data serta pengetahuan hukum. Produsen menjelaskan pengembangannya melalui penyetelan halus model, pembelajaran penguatan, augmentasi pengambilan informasi, dan teknologi agen hukum. Cakupan tugasnya meliputi pertanyaan hukum, identifikasi ketentuan hukum yang berlaku, analisis perkara, pembuatan dokumen hukum, dan peninjauan klausul kontrak.

Masukan dan keluaran yang didokumentasikan berbentuk teks. Siapkan kutipan, fakta, atau klausul yang akan dianalisis sebagai teks yang dapat dibaca, lalu tentukan hasil yang diinginkan. Artefak yang berguna dapat berupa draf suatu bagian, daftar persoalan, penjelasan ketentuan yang disediakan, atau perbandingan redaksi kontrak.

#### Siapkan satu permintaan atau dialog berkelanjutan

Contoh dari produsen mendukung satu instruksi maupun percakapan berbasis messages. Setiap pesan memuat peran dan konten; instruksi sistem opsional ditempatkan di awal, diikuti giliran pengguna dan asisten. Panduan tersebut menyarankan messages untuk dialog berkelanjutan, dengan tetap menyertakan jawaban sebelumnya yang relevan ketika pertanyaan lanjutan mengubah suatu fakta atau persyaratan.

Untuk pertanyaan tentang perkara, berikan peran para pihak, kronologi, pokok sengketa, dan bukti yang relevan dengan pertanyaan. Sebutkan yurisdiksi dan tanggal yang penting bagi tugas tersebut, serta sertakan teks hukum yang akan diperiksa jika jawaban harus bertumpu pada ketentuan tertentu. Pisahkan fakta yang dinyatakan dari dalil yang diperselisihkan atau asumsi.

Untuk pertanyaan lanjutan, jelaskan dengan tepat apa yang berubah. Misalnya, berikan tanggal yang telah dikoreksi atau klausul tambahan, lalu tanyakan bagian mana dari draf sebelumnya yang perlu direvisi. Menyertakan jawaban sebelumnya yang sebenarnya membuat perubahan yang diminta menjadi konkret, alih-alih mendorong analisis baru atas perkara yang informasinya tidak lengkap.

#### Minta analisis atau draf dokumen

Untuk pertanyaan hukum, tentukan persoalan dan bentuk jawabannya. Minta kesimpulan, ketentuan pendukung, dan fakta yang dapat mengubah analisis. Ketika sumber tidak menetapkan suatu detail penting, minta hasilnya mengidentifikasi informasi yang belum tersedia itu.

Untuk penyusunan draf, tentukan jenis dokumen, sasaran pembaca, bagian yang wajib ada, dan fakta yang disediakan. Contoh instruksi yang berguna: “Susun draf bagian yang diminta menggunakan kronologi dan fakta ini, pertahankan peran para pihak yang telah ditentukan, dan identifikasi informasi yang masih diperlukan untuk melengkapi dokumen.” Periksa nama, tanggal, jumlah, dan ketentuan yang dikutip terhadap materi aslinya.

Untuk peninjauan kontrak, berikan klausul persisnya dan persoalan yang ingin diperiksa. Minta perbandingan redaksi, persoalan yang ditimbulkannya, dan usulan revisi yang mempertahankan makna komersial yang dimaksud. Simpan klausul asli berdampingan dengan teks usulan agar perubahannya dapat diperiksa.

#### Bekerja dalam batas respons yang didokumentasikan

Ikhtisar model yang diterbitkan mencantumkan masukan maksimum 12.000 token dan keluaran maksimum 2.000 token. Pilih kutipan yang relevan dan panjang jawaban yang sesuai dengan tugas, dengan menyisakan ruang untuk respons yang diminta dalam konfigurasi percakapan yang berlaku. Peninjauan kontrak yang panjang dapat dibagi menjadi persoalan atau bagian berlabel jelas, sambil tetap menyertakan klausul apa pun yang diperlukan untuk memahami hubungan di antaranya.

Pengaturan panjang respons dari produsen dapat mengurangi alokasi keluaran untuk penjelasan singkat atau draf bagian tertentu. Nilai bawaan yang didokumentasikan adalah 2.000 token. Periksa apakah jawaban yang dikembalikan sudah lengkap sebelum menganggapnya sebagai dokumen yang selesai.

#### Pilih pengaturan pembuatan dan penyampaian

Referensi produsen mendokumentasikan top\_p dalam interval terbuka antara 0 dan 1, dengan nilai bawaan 0,8. Pengaturan top\_k membatasi himpunan kandidat; membiarkannya tidak diatur, atau menetapkannya di atas 100, menonaktifkan strategi tersebut. Pertahankan tugas dan materi sumber yang sama ketika membandingkan pengaruh pengaturan pembuatan yang didukung.

Alur kerja bawaan menggunakan mode non-streaming. Streaming menyampaikan teks selagi proses pembuatan berlanjut. Potongan streaming bawaan yang didokumentasikan memuat konten yang terakumulasi; mengaktifkan keluaran inkremental akan mengembalikan bagian baru saja. Rakit format yang dipilih dengan benar agar teks kumulatif yang berulang tidak ditambahkan dua kali, dan simpan jawaban lengkap untuk ditinjau.

Respons dapat menggunakan pembungkus text atau message. Pembungkus ini adalah struktur penyampaian di sekeliling teks hukum yang dihasilkan; tabel kemampuan model tidak mencantumkan keluaran terstruktur yang dipaksakan oleh skema, pemanggilan fungsi, atau pencarian web bawaan. Sediakan bukti dan ketentuan yang diperlukan untuk tugas, alih-alih menganggap pencarian eksternal telah dilakukan.

#### Pastikan analisis dapat diperiksa

Simpan teks sumber, fakta yang disediakan, bentuk dokumen yang diminta, dan respons akhir secara bersama. Periksa redaksi referensi yang sebenarnya serta yurisdiksi atau tanggal yang menjadi dasar suatu penafsiran. Perbandingan klausul atau penjelasan perkara paling berguna ketika asumsi dan kutipan pendukungnya tetap dapat diidentifikasi.

Gunakan Farui Plus untuk alur kerja teks hukum yang disebutkan. Artefak akhir harus menghubungkan pertanyaan hukum atau draf yang diminta dengan materi yang benar-benar disediakan.

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `farui-plus`

[`farui-plus`](https://ailoot.ai/models/id/#m=farui-plus&route=Ultra&caller=farui-plus&fmt=chat)

Lainnya /`farui-plus`

### Mulai

Tongyi FaRui Plus dari Alibaba adalah model teks yang dikhususkan untuk pertanyaan hukum, analisis perkara, penyusunan dokumen hukum, dan peninjauan kontrak. Siapkan fakta dan klausul yang relevan dalam bentuk teks, lalu gunakan pertanyaan atau dialog yang terarah untuk memperoleh analisis atau draf tertulis.

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

| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
| --- | --- | --- | --- | --- |
| Kolom`model` | Jenis`string` | PersyaratanWajib | Nilai & batasan farui-plus | Bawaan— |
| Kolom`messages` | Jenis`message[]` | PersyaratanWajib | Nilai & batasan Item minimum: 1 | Bawaan— |
| Kolom`messages[].role` | Jenis`string` | PersyaratanWajib | Nilai & batasan Bergantung pada model | Bawaan— |
| Kolom`messages[].content` | Jenis`string` | PersyaratanOpsional | Nilai & batasan Berlaku jika: Percakapan teks | Bawaan— |
| Kolom`stream` | Jenis`boolean` | PersyaratanOpsional | Nilai & batasan | Bawaanfalse |

Kombinasi bahan masukan

**Teks** · Teks UTF8

`messages[].content`

Parameter metode dan siklus hidup

| Parameter | Kontrak |
| --- | --- |
| Parameter`content_type` | Kontrakapplication/json |
| Parameter`required` | Kontrakmodel, messages |
| Parameter`material_types` | Kontraktext |
| Parameter`messages` | Kontrakarray pesan dengan struktur role/content |
| Parameter`file_material` | Kontrakdokumen UTF-8 yang sebenarnya dimasukkan sebagai teks apa adanya; ID file tidak disimpulkan |
| Parameter`optional_controls` | Kontrakstream |
| Parameter`control_scope` | KontrakPercakapan teks; stream adalah nilai boolean dengan false sebagai bawaan. |
| Parameter`output_modalities` | Kontraktext |
| Parameter`hosted_operations` | Kontrakfalse |
| Parameter`multimodal_input_binding` | Kontraknull |

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

#### Tarif Ailoot

#### Harga menurut konfigurasi

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

| Konfigurasi | Jadwal tarif | Token konteks, lebih dari | Token konteks, hingga dan termasuk | Biaya |
| --- | --- | --- | --- | --- |
| KonfigurasiTarif dasar token | Jadwal tarifTarif dasar | Token konteks, lebih dari— | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan **$0.0058** / 1K token Keluaran · Token keluaran **$0.0058** / 1K token Masukan · Pembacaan cache **—** / 1K token Masukan · Penulisan cache **—** / 1K token Masukan · Penulisan cache, 1 jam **—** / 1K token |
| KonfigurasiPanjang permintaan · tingkat 1 | Jadwal tarif— | Token konteks, lebih dari0 | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan **$0.0058** / 1K token Keluaran · Token keluaran **$0.0058** / 1K token Masukan · Pembacaan cache **—** / 1K token Masukan · Penulisan cache **—** / 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 →](https://ailoot.ai/docs/id/billing/reserve/)

### Contoh permintaan

#### Ailoot Ultra · OpenAI Chat

curlPython SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"farui-plus","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
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="farui-plus", 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

| Kolom | Jenis |
| --- | --- |
| Kolom`choices[].index` | Jenisinteger |
| Kolom`choices[].message.content` | Jenisstring\|null |
| Kolom`choices[].message.tool_calls` | Jenistool\_call\[\] |
| Kolom`choices[].message.reasoning_content` | Jenisstring |
| Kolom`choices[].message.reasoning_details` | Jenisobject\|array |
| Kolom`choices[].finish_reason` | Jenisstring\|null |
| Kolom`usage` | Jenisobject |

Kesalahan dan langkah berikutnya

| Respons | Kondisi | Langkah berikutnya |
| --- | --- | --- |
| Respons400 · `invalid_request_error` | KondisiBidang wajib, representasi materi, atau nilai parameter tidak valid | Langkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru. |

### Alias

#### Alias model

**Ailoot Ultra** [`farui-plus`](https://ailoot.ai/models/id/#m=farui-plus&route=Ultra&caller=farui-plus&fmt=chat)

#### Alias jalur metode

`/chat/completions`

#### ID pemanggil terkait

[`farui-plus`](https://ailoot.ai/models/id/#m=farui-plus&route=Ultra&caller=farui-plus&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `farui-plus`

[`farui-plus`](https://ailoot.ai/models/id/#m=farui-plus&route=Ultra&caller=farui-plus&fmt=messages)

Lainnya /`farui-plus`

### Mulai

Tongyi FaRui Plus dari Alibaba adalah model teks yang dikhususkan untuk pertanyaan hukum, analisis perkara, penyusunan dokumen hukum, dan peninjauan kontrak. Siapkan fakta dan klausul yang relevan dalam bentuk teks, lalu gunakan pertanyaan atau dialog yang terarah untuk memperoleh analisis atau draf tertulis.

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

| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
| --- | --- | --- | --- | --- |
| Kolom`model` | Jenis`string` | PersyaratanWajib | Nilai & batasan farui-plus | Bawaan— |
| Kolom`messages` | Jenis`message[]` | PersyaratanWajib | Nilai & batasan | Bawaan— |
| Kolom`messages[].role` | Jenis`string` | PersyaratanWajib | Nilai & batasan user, assistant | Bawaan— |
| Kolom`messages[].content` | Jenis`string` | PersyaratanWajib | Nilai & batasan | Bawaan— |
| Kolom`max_tokens` | Jenis`integer` | PersyaratanWajib | Nilai & batasan | Bawaan— |
| Kolom`stream` | Jenis`boolean` | PersyaratanOpsional | Nilai & batasan | Bawaanfalse |

Kombinasi bahan masukan

**Teks** · Teks UTF-8

`string messages[].content`

Parameter metode dan siklus hidup

| Parameter | Kontrak |
| --- | --- |
| Parameter`content_type` | Kontrakapplication/json |
| Parameter`required` | Kontrakmodel, messages, max\_tokens |
| Parameter`optional_controls` | Kontrakstream |
| Parameter`material_types` | Kontraktext |
| Parameter`text_file_material` | KontrakBaca 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

#### Tarif Ailoot

#### Harga menurut konfigurasi

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

| Konfigurasi | Jadwal tarif | Token konteks, lebih dari | Token konteks, hingga dan termasuk | Biaya |
| --- | --- | --- | --- | --- |
| KonfigurasiTarif dasar token | Jadwal tarifTarif dasar | Token konteks, lebih dari— | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan **$0.0058** / 1K token Keluaran · Token keluaran **$0.0058** / 1K token Masukan · Pembacaan cache **—** / 1K token Masukan · Penulisan cache **—** / 1K token Masukan · Penulisan cache, 1 jam **—** / 1K token |
| KonfigurasiPanjang permintaan · tingkat 1 | Jadwal tarif— | Token konteks, lebih dari0 | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan **$0.0058** / 1K token Keluaran · Token keluaran **$0.0058** / 1K token Masukan · Pembacaan cache **—** / 1K token Masukan · Penulisan cache **—** / 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 →](https://ailoot.ai/docs/id/billing/reserve/)

### Contoh permintaan

#### Ailoot Ultra · Anthropic Messages

Isi permintaan JSON minimal yang lengkapcurl · gunakan dokumen UTF-8 AndaPython · simpan hasil secara lengkap

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

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

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

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

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

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'farui-plus', '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

| Kolom | Jenis |
| --- | --- |
| Kolom`id` | Jenisstring |
| Kolom`model` | Jenisstring |
| Kolom`content[]` | Jenistext\|thinking\|tool\_use\|other content block |
| Kolom`stop_reason` | Jenisstring\|null |
| Kolom`usage` | Jenisobject |

Kesalahan dan langkah berikutnya

| Respons | Kondisi | Langkah berikutnya |
| --- | --- | --- |
| Respons400 · `invalid_request_error` | KondisiBidang wajib, representasi materi, atau nilai parameter tidak valid | Langkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru. |

### Alias

#### Alias model

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

#### Alias jalur metode

`/chat/completions`

#### ID pemanggil terkait

[`farui-plus`](https://ailoot.ai/models/id/#m=farui-plus&route=Ultra&caller=farui-plus&fmt=messages)

FAQ · farui-plus

Input dan hasil apa yang tersedia?

`POST /v1/chat/completions` · `farui-plus`: `text` → `text` `POST /v1/messages` · `farui-plus`: `text` → `json`, `sse`

Kolom apa yang digunakan permintaan?

`POST /v1/chat/completions` · `farui-plus`: `model`, `messages`, `stream` `POST /v1/messages` · `farui-plus`: `model`, `messages`, `max_tokens`, `stream`

Batasan apa yang berlaku?

`POST /v1/chat/completions` · `farui-plus`: `messages.min_items`: `1`

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](https://ailoot.ai/docs/id/billing/subscriptions/) · [Lihat harga model](https://ailoot.ai/models/id/)

## 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](mailto:support@ailoot.ai) · [Penawaran dan perjanjian lisensi](https://ailoot.ai/legal/offer?lang=id)

## Ailoot · Perusahaan dan portofolio proyeknya





Ailoot bertumpu pada pengalaman operasional yang teruji, basis pelanggan yang besar, layanan yang stabil, dan pemantauan KPI berkelanjutan.





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





Ailoot memanfaatkan pengalaman operasional ini untuk akses API ke fitur AI dalam produk pelanggan, agen, aplikasi, dan otomatisasi.
