Source: https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/
Canonical: https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/
Language: kk

# Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)

[Markdown](https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/index.md) · [JSON](https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/facts.json)

## [Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)](https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/)

Nano Banana 2 (Gemini 3.1 Flash Image Preview) мәтін мен көрнекі референстерден кескіндер жасайды және өңдейді. Құжатталған күшті жақтарына нысан бірізділігі, кескін ішіндегі мәтін және жергіліктендіру, диалогтік өзгерістер, сондай-ақ композицияны, кескін ені мен биіктігінің арақатынасын және ажыратымдылықты шығармашылық басқару кіреді.

- [**Ailoot Ultra · OpenAI чаты** `POST /v1/chat/completions` `google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/#method-0)
- [**Ailoot Ultra · Суреттер** `POST /v1/images/generations` `google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/#method-1)
- [**Ailoot Ultra · Anthropic хабарламалары** `POST /v1/messages` `google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/google-gemini-3-1-flash-image-preview/#method-2)

Модель туралы

Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.

Nano Banana 2 — кескін жасауға және диалогтік өңдеуге арналған Google компаниясының Gemini 3.1 Flash Image моделі. Осы жазбада нақты Preview нұсқасы сақталған. Жазбаша сипаттама жаңа көрнекілікті анықтай алады, ал кіріс кескіні өзгертілетін нысанды, келбетті не композицияны бере алады. Нәтижеде кескін және қосымша мәтін болуы мүмкін. Google іске қосу материалы өзара байланысты кезектер арқылы көріністі жетілдірумен қатар әлем туралы білімге, мәтін бейнелеуге және нысан бірізділігіне басымдық береді.

Дерекке негізделген көрнекілік жасау үшін құжатталған модель веб және кескін іздеу ақпаратын генерацияға пайдалана алады. Бұл белгілі орыннан шабыттанған иллюстрация немесе берілген ақпаратқа негізделген диаграмма сияқты тапсырмаларды қолдайды. Көрсетілуі тиіс бастапқы фактілерді анықтап, оларды көркемдік таңдаулардан ажыратыңыз. Іздеу ақпаратына сүйенген генерация соңғы суреттегі әр бөлшекті тексерілген мәлімдемеге айналдырмайды. Тауар, көрнекті орын не диаграмма дәл болуы керек болса, беделді референсін беріп, шығысты сонымен тексеріңіз.

Іске қосу материалы кескін ішіндегі мәтін бейнелеу мен жергіліктендіру жақсарғанын сипаттайды. Постер, инфографика немесе маркетинг макеті үшін әр мәтін элементінің нақты сөзін, тілін және рөлін беріңіз. Кескін нұсқаулығы ұсынғандай, алдымен мәтінді бекітіп, кейін сол мәтіні бар көрнекілікті сұраңыз. Тақырып, түсіндірме жазу және диаграмма белгісі шатаспау үшін оқу ретін және салыстырмалы екпінді түсіндіріңіз. Кескінді жариялауда қолданар алдында емлені, тыныс белгілерін және белгі мен суреттелген элементтің байланысын тексеріңіз.

Шығармашылық басқаруға кескін ені мен биіктігінің арақатынасы мен ажыратымдылық кіреді. Шығарылым 1K, 2K және 4K таңдауларымен қатар 512 пиксельдік шығысты және 4:1, 1:4, 8:1, 1:8 кескін ені мен биіктігінің арақатынастарын қосады. Әзірлеуші нұсқаулығы әдепкі ойлауды minimal, күрделірек композицияларға арналған таңдауды high деп көрсетеді. Композициядан бұрын қолданылуын таңдаңыз: тік сториске, кең баннерге және ықшам диаграммаға нысан мен мәтінге әртүрлі орын керек. Бұл параметрлер дайын материал өлшемінің автоматты өзгертілуін емес, өндірушінің осы желідегі генерация үдерісін сипаттайды.

Нысан бірізділігі үшін әр референстің рөлін белгілеңіз: тауар келбеті, кейіпкер бейнесі, фон немесе көрнекі стиль. Сақталатын бөлшектерді айтып, кейін өзгеретін элементтерді атаңыз. Мысал тапсырма берілген тауар фотосын оның пішінін, материалын және көрінетін бренд белгілерін сақтап, жаңа көрініске орналастыра алады. Иллюстрациялық тізбекте сол референстерді сақтап, қай көрініске тән бөлшектер өзгеретінін анықтаңыз. Көбірек референс әр кескіннің не қосатыны туралы айқын нұсқауды алмастырмайды.

Диалогтік өңдеу нақты түзетуге пайдалы. Қабылданған композицияны сақтап, бір нысанды, фонды немесе жарықты реттеуді сұраңыз. Өндіруші нұсқаулығы өңделетін аймақ сөзбен көрсетілетін семантикалық маскалауды сипаттайды. Көпкезекті жұмыста таңдалған интерфейстегі диалогты және қажетті пайымдау контексті метадеректерін сақтаңыз; Gemini 3 нұсқаулығы ойлау қолтаңбалары сол контексті тасымалдауға көмектесетінін түсіндіреді. Өзгермейтін аймақ сипаттамасы әр пиксельдің бірдей қалуына кепіл емес, түпнұсқамен салыстырып тексерілетін нұсқау.

Gemini 3 әзірлеуші кестесі gemini-3.1-flash-image-preview атауын 128K кіріс және 32K шығыс көлемімен нақты көрсетеді. Генерацияны тіркегенде дәл Preview модель атауын сақтаңыз. Түзетуді бірізді қайталау үшін қолжетімді референс, шығыс және ажыратымдылық параметрлерін бастапқы кескіндермен және сұраумен бірге сақтау керек. Түзетуде сол бастапқы референстерді қолданып, әр кірістің қабылданған рөлін сақтай отырып, дәл көрнекі өзгерісті көрсетіңіз.

Кескін нұсқаулығы сұралған кескін саны үнемі орындалмауы мүмкін екенін ескертіп, жасалған кескіндердегі SynthID белгісін атайды. Нәтижені бір бекітілген сурет деп болжамай, барлық қайтарылған кескіндер мен қосымша мәтінді тексеріңіз. Көзделген көрсету өлшемінде нысанның бастапқы бейнесіне сәйкестігін, нысан санын, кескін ішіндегі мәтінді, композицияны және референске дәлдікті қараңыз. Күрделі көріністе компоненттерді қисынды ретпен көрсетіп, қажетті келбетті оң тұжырыммен сипаттаңыз. Пайдалы нәтиже — келесі өңдеуге бастапқы референстері мен модельдің нақты атауы сақталған, тексерілген көрнекі материал.

Практикалық тапсырма

### Практикалық тапсырма

Ағылшын тіліндегі техникалық мысал

```
Create a four-stage growing guide

Create a friendly flat illustration for a gardening guide showing four tomato-growing stages from left to right: seed in soil, small seedling, leafy plant, mature plant with red tomatoes. Use a warm cream background, consistent pots and simple green shapes. Keep each stage clearly separated. Include no text, numbers, labels or decorative extra plants.
```

#### Күтілетін нәтиже

```
An image with four distinct growing stages in the specified order and a consistent illustration style.
```

#### Нәтижені тексеру

```
Inspect the actual image for exactly four stages, the left-to-right progression and absence of text or extra plants.
```

**Ailoot Ultra · OpenAI чаты** `POST /v1/chat/completions` `google/gemini-3.1-flash-image-preview`

[`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=chat)

Google /`google/gemini-3.1-flash-image-preview`

### Бастау

Nano Banana 2 (Gemini 3.1 Flash Image Preview) мәтін мен көрнекі референстерден кескіндер жасайды және өңдейді. Құжатталған күшті жақтарына нысан бірізділігі, кескін ішіндегі мәтін және жергіліктендіру, диалогтік өзгерістер, сондай-ақ композицияны, кескін ені мен биіктігінің арақатынасын және ажыратымдылықты шығармашылық басқару кіреді.

Қабылданатын кіріс деректері

Мәтін

Нәтижелер

Мәтін

### Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер

**Ailoot Ultra · OpenAI чаты** `POST /v1/chat/completions`

Кіріс

`text`

Шығыс

`text`

Шығыс пішімі

json немесе SSE

| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
| --- | --- | --- | --- | --- |
| Өріс`model` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер google/gemini-3.1-flash-image-preview | Әдепкі— |
| Өріс`messages` | Түрі`message[]` | ТалапМіндетті | Мәндер мен шектеулер Элементтердің ең аз саны: 1 | Әдепкі— |
| Өріс`messages[].role` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер Мысалдар: system, user, assistant, tool, function Шарттар: Бұл рөлдер бастапқы кодтағы үйлесімділік түрлерінде айқын көрсетілген; рөлдердің нақты жиыны әр модельге байланысты. Модельге байланысты | Әдепкі— |
| Өріс`messages[].content` | Түрі`string\|content_part[]\|null` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
| Өріс`messages[].tool_calls` | Түрі`tool_call[]` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
| Өріс`messages[].tool_call_id` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: role=tool; нақты қайтарылған ID мәнін пайдаланыңыз | Әдепкі— |
| Өріс`messages[].name` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
| Өріс`messages[].reasoning_content` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер Мына жағдайда қолданылады: Модель пайымдауды пайдаланса, нақты қайтарылған пайымдауды қайта жіберіңіз | Әдепкі— |
| Өріс`messages[].reasoning_details` | Түрі`object\|array` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`max_tokens` | Түрі`integer` | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
| Өріс`max_completion_tokens` | Түрі`integer` | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Модельге байланысты | Әдепкі— |
| Өріс`stream` | Түрі`boolean` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |
| Өріс`stream_options.include_usage` | Түрі`boolean` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`temperature` | Түрі`number` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`top_p` | Түрі`number` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`stop` | Түрі`string\|string[]` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`tools` | Түрі`function_tool[]` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`tools[].type` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер function Модельге байланысты | Әдепкі— |
| Өріс`tools[].function.name` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер Мына жағдайда қолданылады: функция құралы берілген | Әдепкі— |
| Өріс`tools[].function.description` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
| Өріс`tools[].function.parameters` | Түрі`JSON_schema` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |
| Өріс`tool_choice` | Түрі`string\|object` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`parallel_tool_calls` | Түрі`boolean` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`response_format` | Түрі`object` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`reasoning_effort` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`reasoning` | Түрі`object` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`service_tier` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`instructions` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер Үйлесімділік өрісі | Әдепкі— |
| Өріс`functions` | Түрі`function[]` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`function_call` | Түрі`string\|object` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`prompt_cache_options` | Түрі`object` | ТалапМіндетті емес | Мәндер мен шектеулер Модельге байланысты | Әдепкі— |
| Өріс`modalities` | Түрі`string[]` | ТалапМіндетті емес | Мәндер мен шектеулер text | Әдепкі— |
| Өріс`provider` | Түрі`object` | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Осы Ultra мәтіндік бағытында provider.options қабылданбайды | Әдепкі— |
| Өріс`cache_control.ttl` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер Шарттар: Сұрау кэшінің нақты орындарында 1h қабылданбайды | Әдепкі— |

Кіріс материалдарының үйлесімдері

**Мәтін** · UTF8 мәтіні

`messages[].content`

Әдіс параметрлері мен өмірлік циклі

| Параметр | Параметр талаптары |
| --- | --- |
| Параметр`content_type` | Параметр талаптарыapplication/json |
| Параметр`required` | Параметр талаптарыmodel, messages |
| Параметр`material_types` | Параметр талаптарыtext |
| Параметр`messages` | Параметр талаптарыrole/content құрылымы бар хабарламалар жиымы |
| Параметр`file_material` | Параметр талаптарынақты UTF-8 құжаты сөзбе-сөз мәтін ретінде енгізіледі; файл ID-і болжанбайды |
| Параметр`optional_controls` | Параметр талаптарыstream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Параметр`control_scope` | Параметр талаптарымодельге байланысты; пайдаланушының функция құралдары қызмет жағында орындалатын құралдардан өзгеше |
| Параметр`output_modalities` | Параметр талаптарыtext |
| Параметр`hosted_operations` | Параметр талаптарыfalse |
| Параметр`multimodal_input_binding` | Параметр талаптарыnull |

Өмірлік цикл: `synchronous_or_streamed`

Модельдің дәл ID мәнін messages деректерімен бірге жіберіңіз.

Контекст ұзындығы шығыстың жоғарғы шегі емес.

Мәтіндік файл сөзбе-сөз мәтінді бере алады; кіріс суреттері, аудио және файл нысандары дәл байланыстыруды қажет етеді.

### Тарифтер

Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.

Жылдам режим

Стандартты тариф Жылдам режим таңдалғанда

Икемді режим

Стандартты тариф flex режимі таңдалғанда

Ой қорытудың ең жоғары деңгейі

Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда

Ой қорыту деңгейі · high

Стандартты тариф Ой қорыту деңгейі high болғанда

Ой қорыту деңгейі · minimal

Стандартты тариф Ой қорыту деңгейі minimal болғанда

Айқын кэштеу бағасы

Қосылмаған Айқын кэштеу сұралғанда

#### Ailoot мөлшерлемелері

#### Баптаулар бойынша бағалар

Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.

| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
| --- | --- | --- | --- | --- |
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері **$0.001** / 1K токен Шығыс · Шығыс токендері **$0.006** / 1K токен Кіріс · Кэшті оқу **—** / 1K токен Кіріс · Кэшке жазу **—** / 1K токен Кіріс · Кэшке жазу, 1 сағ **—** / 1K токен Шығыс · Шығыс кескін токендері **$0.12** / 1K сурет токені |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері **$0.001** / 1K токен Шығыс · Шығыс токендері **$0.006** / 1K токен Кіріс · Кэшті оқу **—** / 1K токен Кіріс · Кэшке жазу **—** / 1K токен Кіріс · Кэшке жазу, 1 сағ **—** / 1K токен |

#### Анықтамалық тариф мәліметтері

Модельдің анықтамалық кестелері әдіс таңдауын, баға есебін не төлемді өзгертпейді. Қолданыстағы төлемдер таңдалған Ailoot әдісінің мөлшерлемелерімен есептеледі.

google/gemini-3.1-flash-image-preview

#### Баптаулар бойынша бағалар

| Баптау | Төлемді есептеу шарттары | Төлем |
| --- | --- | --- |
| Баптауgoogle/gemini-3.1-flash-image-preview · Әдепкі конфигурация | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс **0,001 $** / 1K токен Шығыс · Шығыс **0,12 $** / 1K токен |

google/gemini-3.1-flash-image-preview

#### Баптаулар бойынша бағалар

| Баптау | Төлемді есептеу шарттары | Төлем |
| --- | --- | --- |
| Баптауgoogle/gemini-3.1-flash-image-preview · Әдепкі баптау | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс **0,001 $** / 1K токен Шығыс · Шығыс **0,12 $** / 1K токен |

google/gemini-3.1-flash-image-preview

#### Баптаулар бойынша бағалар

| Баптау | Төлемді есептеу шарттары | Төлем |
| --- | --- | --- |
| Баптауgoogle/gemini-3.1-flash-image-preview · Әдепкі конфигурация | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс **0,00 $** әр шақыру үшін Шығыс · Шығыс **0,16 $** әр шақыру үшін |

google/gemini-3.1-flash-image-preview

#### Баптаулар бойынша бағалар

| Баптау | Төлемді есептеу шарттары | Төлем |
| --- | --- | --- |
| Баптауgoogle/gemini-3.1-flash-image-preview · Әдепкі конфигурация | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс **0,00 $** әр шақыру үшін Шығыс · Шығыс **0,32 $** әр шақыру үшін |

google/gemini-3.1-flash-image-preview

#### Баптаулар бойынша бағалар

| Баптау | Төлемді есептеу шарттары | Төлем |
| --- | --- | --- |
| Баптауgoogle/gemini-3.1-flash-image-preview · Әдепкі конфигурация | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс **0,00 $** әр шақыру үшін Шығыс · Шығыс **0,00 $** әр шақыру үшін |

Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)

#### Баптаулар бойынша бағалар

| Баптау | Төлемді есептеу шарттары | Төлем |
| --- | --- | --- |
| БаптауGoogle: Nano Banana 2 (Gemini 3.1 Flash Image Preview) · Әдепкі конфигурация | Төлемді есептеу шарттарыӘдепкі баптау | Төлем Кіріс · Кіріс токендері **0,001 $** / 1K токен Шығыс · Шығыс токендері **0,006 $** / 1K токен Шығыс · Шығыс кескін **0,12 $** / 1K токен Шығыс · Веб-іздеу **0,028 $** әр іздеу үшін |

Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. [Резервтеу мен төлемді есептеу тәртібі →](https://ailoot.ai/docs/kk/billing/reserve/)

### Сұрау мысалдары

#### Ailoot Ultra · OpenAI чаты

curlPython SDKPython ағыны

```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": "google/gemini-3.1-flash-image-preview", "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
```

```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='google/gemini-3.1-flash-image-preview',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"))
```

```python
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='google/gemini-3.1-flash-image-preview',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")
```

### Нәтижелерді алу және сақтау

#### Ailoot Ultra · OpenAI чаты

json немесе SSE

##### Барлық дайын нәтижені сақтау

Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.

Әр жауап нұсқасын оның мазмұнымен, құрал шақыруларымен және пайымдауымен бірге сақтаңыз. SSE өзгерістерін жауап нұсқасы мен құрал индексі бойынша жинап, соңғы аяқталу себебі мен пайдалану деректерін сақтаңыз.

##### Бастапқы жауапты тексеру қажет болса

Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.

Жауап өрістері

| Өріс | Түрі |
| --- | --- |
| Өріс`choices[].index` | Түріinteger |
| Өріс`choices[].message.content` | Түріstring\|null |
| Өріс`choices[].message.tool_calls` | Түріtool\_call\[\] |
| Өріс`choices[].message.reasoning_content` | Түріstring |
| Өріс`choices[].message.reasoning_details` | Түріobject\|array |
| Өріс`choices[].finish_reason` | Түріstring\|null |
| Өріс`usage` | Түріobject |

Қателер және келесі қадамдар

| Жауап | Шарт | Келесі қадам |
| --- | --- | --- |
| Жауап400 · `invalid_request_error` | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |

### Балама атаулар

#### Модельдердің балама атаулары

**Ailoot Ultra** [`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=chat)

#### Әдіс жолдарының балама атаулары

`/v1/images`

#### Шақыруға арналған байланысты ID

[`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=chat)

**Ailoot Ultra · Суреттер** `POST /v1/images/generations` `google/gemini-3.1-flash-image-preview`

[`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=images)

Google /`google/gemini-3.1-flash-image-preview`

### Бастау

Nano Banana 2 (Gemini 3.1 Flash Image Preview) мәтін мен көрнекі референстерден кескіндер жасайды және өңдейді. Құжатталған күшті жақтарына нысан бірізділігі, кескін ішіндегі мәтін және жергіліктендіру, диалогтік өзгерістер, сондай-ақ композицияны, кескін ені мен биіктігінің арақатынасын және ажыратымдылықты шығармашылық басқару кіреді.

Қабылданатын кіріс деректері

Мәтін · Суреттер

Нәтижелер

Суреттер

### Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер

**Ailoot Ultra · Суреттер** `POST /v1/images/generations`

Кіріс

`text`, `image`

Шығыс

`image`

| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
| --- | --- | --- | --- | --- |
| Өріс`model` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер google/gemini-3.1-flash-image-preview | Әдепкі— |
| Өріс`prompt` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер Ең аз ұзындық: 1 | Әдепкі— |
| Өріс`resolution` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер 512, 1K, 2K, 4K | Әдепкі— |
| Өріс`aspect_ratio` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер 1:1, 1:4, 1:8, 2:3, 3:2, 3:4, 4:1, 4:3, 4:5, 5:4, 8:1, 9:16, 16:9, 21:9 | Әдепкі— |
| Өріс`n` | Түрі`integer` | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Ең көбі: 1 | Әдепкі— |
| Өріс`input_references` | Түрі`array` | ТалапМіндетті емес | Мәндер мен шектеулер Элементтердің ең аз саны: 0 Элементтердің ең көп саны: 14 | Әдепкі— |
| Өріс`provider` | Түрі`object` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкі— |

Әдіс параметрлері мен өмірлік циклі

| Параметр | Параметр талаптары |
| --- | --- |
| Параметр`content_type` | Параметр талаптарыapplication/json |
| Параметр`required` | Параметр талаптарыmodel, prompt |
| Параметр`material_types` | Параметр талаптарыtext, image |

Өмірлік цикл: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Нақты қайтарылған task\_id немесе медиатека жазбасы

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

`GET /v1/media/assets`

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

### Тарифтер

##### Қорытынды төлем қалай есептеледі

Көрсетілген тарифтер генерация басталғанға дейінгі құнын бағалауға арналған. Соңғы төлем бастапқы генерация үшін тіркелген құннан есептеледі. Нәтиженің өлшенген ұзақтығы мен болжамды көлемдер төлемге негіз болатын түпкілікті көлем болып саналмайды.

Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.

Жылдам режим

Көрсетілмеген Жылдам режим таңдалғанда

Икемді режим

Көрсетілмеген flex режимі таңдалғанда

Ой қорытудың ең жоғары деңгейі

Көрсетілмеген Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда

#### Салыстыруға арналған болжамды мөлшерлемелер

#### Баптаулар бойынша бағалар

Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.

| Баптау | Мөлшерлемелер кестесі | Болжамды мөлшер | Төлем |
| --- | --- | --- | --- |
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Болжамды мөлшер— | Төлем Кіріс · Кіріс токендері · Тек салыстыруға арналған бағалау **—** / 1K токен Шығыс · Шығыс токендері · Тек салыстыруға арналған бағалау **—** / 1K токен Кіріс · Кэшті оқу · Тек салыстыруға арналған бағалау **—** / 1K токен Кіріс · Кэшке жазу · Тек салыстыруға арналған бағалау **—** / 1K токен Кіріс · Кэшке жазу, 1 сағ · Тек салыстыруға арналған бағалау **—** / 1K токен |
| БаптауГенерацияның болжамды құны | Мөлшерлемелер кестесі— | Болжамды мөлшербір генерацияға арналған болжам | Төлем Шығыс · Генерацияның болжамды құны · Тек салыстыруға арналған бағалау **$0.49152** жасауға дейінгі бағалау Бұл бағалау қосымша төлем де, аяқталған генерация үшін белгіленген тұрақты тариф те емес. |

Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. [Резервтеу мен төлемді есептеу тәртібі →](https://ailoot.ai/docs/kk/billing/reserve/)

### Сұрау мысалдары

#### Ailoot Ultra · Суреттер

curl

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

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

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

### Нәтижелерді алу және сақтау

#### Ailoot Ultra · Суреттер

Қайтарылған әр суретті жүктеп алыңыз немесе оның Base64 мазмұнын сақтаңыз

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

Басқа мазмұнды оқу

Өзіңізге тиесілі қолда бар материалдарды оқу

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

##### Барлық дайын нәтижені сақтау

Әр дайын суретті сақтаңыз; қайтарылған әр URL арқылы мазмұнды алыңыз немесе оның Base64 мазмұнын декодтаңыз.

Толық жауапты және тақырыптарды, алынған әрбір нәтижені, бастапқыда қайтарылған идентификаторларды және пайдалану туралы барлық өрістерді сақтаңыз. Жасау сұрауын қайта жібермей, бастапқы операцияны қалпына келтіріңіз.

##### Бастапқы жауапты тексеру қажет болса

Есептерді салыстырып тексеру үшін қайтарылған X-Client-Request-ID мәнін сақтаңыз. Тек нақты қайтарылған task\_id/asset\_id мәндері арқылы немесе өзіңізге тиесілі медиатекадан оқыңыз; операция ID мәнінен тапсырманың URL мекенжайын ешқашан құрастырмаңыз және жасау сұрауын ешқашан қайта жібермеңіз.

Жауап өрістері

| Өріс | Түрі |
| --- | --- |
| Өріс`created` | Түрі |
| Өріс`data[].url` | Түрі |
| Өріс`data[].b64_json` | Түрі |
| Өріс`usage` | Түрі |

### Балама атаулар

#### Модельдердің балама атаулары

**Ailoot Ultra** [`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=images)

#### Әдіс жолдарының балама атаулары

`/v1/images`

#### Шақыруға арналған байланысты ID

[`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=images)

**Ailoot Ultra · Anthropic хабарламалары** `POST /v1/messages` `google/gemini-3.1-flash-image-preview`

[`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=messages)

Google /`google/gemini-3.1-flash-image-preview`

### Бастау

Nano Banana 2 (Gemini 3.1 Flash Image Preview) мәтін мен көрнекі референстерден кескіндер жасайды және өңдейді. Құжатталған күшті жақтарына нысан бірізділігі, кескін ішіндегі мәтін және жергіліктендіру, диалогтік өзгерістер, сондай-ақ композицияны, кескін ені мен биіктігінің арақатынасын және ажыратымдылықты шығармашылық басқару кіреді.

Қабылданатын кіріс деректері

Мәтін

Нәтижелер

json · sse

### Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер

**Ailoot Ultra · Anthropic хабарламалары** `POST /v1/messages`

Кіріс

`text`

Шығыс

`json`, `sse`

Шығыс пішімі

JSON немесе SSE

| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
| --- | --- | --- | --- | --- |
| Өріс`model` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер google/gemini-3.1-flash-image-preview | Әдепкі— |
| Өріс`messages` | Түрі`message[]` | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
| Өріс`messages[].role` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер user, assistant | Әдепкі— |
| Өріс`messages[].content` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
| Өріс`max_tokens` | Түрі`integer` | ТалапМіндетті | Мәндер мен шектеулер | Әдепкі— |
| Өріс`stream` | Түрі`boolean` | ТалапМіндетті емес | Мәндер мен шектеулер | Әдепкіfalse |

Кіріс материалдарының үйлесімдері

**Мәтін** · UTF-8 мәтіні

`messages[].content жолы`

Әдіс параметрлері мен өмірлік циклі

| Параметр | Параметр талаптары |
| --- | --- |
| Параметр`content_type` | Параметр талаптарыapplication/json |
| Параметр`required` | Параметр талаптарыmodel, messages, max\_tokens |
| Параметр`optional_controls` | Параметр талаптарыstream |
| Параметр`material_types` | Параметр талаптарыtext |
| Параметр`text_file_material` | Параметр талаптарыНақты UTF-8 құжатын оқып, оның мәтінін көрсетілген кіріс жолына немесе хабарлама мазмұнының жолына қойыңыз. |

Өмірлік цикл: `synchronous_or_streamed`

### Тарифтер

Тариф анықтамасы сұрау мүмкіндіктерін қоспайды. Қолдау көрсетілетін параметрлер таңдалған әдісте берілген.

Жылдам режим

Стандартты тариф Жылдам режим таңдалғанда

Икемді режим

Стандартты тариф flex режимі таңдалғанда

Ой қорытудың ең жоғары деңгейі

Стандартты тариф Ой қорыту деңгейі ең жоғары болып, default түзетуі қолданылғанда

Ой қорыту деңгейі · high

Стандартты тариф Ой қорыту деңгейі high болғанда

Ой қорыту деңгейі · minimal

Стандартты тариф Ой қорыту деңгейі minimal болғанда

Айқын кэштеу бағасы

Қосылмаған Айқын кэштеу сұралғанда

#### Ailoot мөлшерлемелері

#### Баптаулар бойынша бағалар

Әр төлемді көрсетілген шарттармен салыстырыңыз. Балама баптаулардың әр жиыны үшін бір мөлшерлемені қолданыңыз.

| Баптау | Мөлшерлемелер кестесі | Контекст токендерінің саны мынадан көп | Контекст токендерінің саны мынадан аспайды, шегі кіреді | Төлем |
| --- | --- | --- | --- | --- |
| БаптауТокендердің базалық тарифтері | Мөлшерлемелер кестесіНегізгі мөлшерлеме | Контекст токендерінің саны мынадан көп— | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері **$0.001** / 1K токен Шығыс · Шығыс токендері **$0.006** / 1K токен Кіріс · Кэшті оқу **—** / 1K токен Кіріс · Кэшке жазу **—** / 1K токен Кіріс · Кэшке жазу, 1 сағ **—** / 1K токен Шығыс · Шығыс кескін токендері **$0.12** / 1K сурет токені |
| БаптауСұрау ұзындығының 1-деңгейі | Мөлшерлемелер кестесі— | Контекст токендерінің саны мынадан көп0 | Контекст токендерінің саны мынадан аспайды, шегі кіредіЖоғарғы шегі жоқ | Төлем Кіріс · Кіріс токендері **$0.001** / 1K токен Шығыс · Шығыс токендері **$0.006** / 1K токен Кіріс · Кэшті оқу **—** / 1K токен Кіріс · Кэшке жазу **—** / 1K токен Кіріс · Кэшке жазу, 1 сағ **—** / 1K токен |

Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. [Резервтеу мен төлемді есептеу тәртібі →](https://ailoot.ai/docs/kk/billing/reserve/)

### Сұрау мысалдары

#### Ailoot Ultra · Anthropic хабарламалары

Ең ықшам толық JSON сұрау денесіcurl · өзіңіздің UTF-8 құжатыңызды қолданыңызPython · нәтижені толық сақтаңыз

```json
{
  "model": "google/gemini-3.1-flash-image-preview",
  "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': 'google/gemini-3.1-flash-image-preview', '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': 'google/gemini-3.1-flash-image-preview', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

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

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

### Нәтижелерді алу және сақтау

#### Ailoot Ultra · Anthropic хабарламалары

JSON немесе SSE

##### Барлық дайын нәтижені сақтау

Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.

Барлық мазмұн блоктарын, пайымдау қолтаңбаларын және құрал қолданудың нақты ID мәндерін сақтаңыз. SSE блоктарының барлық өзгерістерін жинаңыз; алғашқы мәтіндік блок толық шығыс емес.

##### Бастапқы жауапты тексеру қажет болса

Сұрау мен жауаптың ID мәндерін және тақырыптарын сақтаңыз. Мәтіндік тапсырманы алуға арналған ортақ URL берілмеген.

Жауап өрістері

| Өріс | Түрі |
| --- | --- |
| Өріс`id` | Түріstring |
| Өріс`model` | Түріstring |
| Өріс`content[]` | Түріtext\|thinking\|tool\_use\|other content block |
| Өріс`stop_reason` | Түріstring\|null |
| Өріс`usage` | Түріobject |

Қателер және келесі қадамдар

| Жауап | Шарт | Келесі қадам |
| --- | --- | --- |
| Жауап400 · `invalid_request_error` | ШартМіндетті өрістер, материалды ұсыну тәсілі немесе параметр мәні қате | Келесі қадамЖаңадан жасау сұрауын жібермес бұрын көрсетілген өрістерді түзетіңіз. |

### Балама атаулар

#### Модельдердің балама атаулары

**Ailoot Ultra** [`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=messages)

#### Әдіс жолдарының балама атаулары

`/v1/images`

#### Шақыруға арналған байланысты ID

[`google/gemini-3.1-flash-image-preview`](https://ailoot.ai/models/kk/#m=google%2Fgemini-3.1-flash-image-preview&route=Ultra&caller=google%2Fgemini-3.1-flash-image-preview&fmt=messages)

FAQ · Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)

Қандай кіріс деректері мен нәтижелер қолжетімді?

`POST /v1/chat/completions` · `google/gemini-3.1-flash-image-preview`: `text` → `text` `POST /v1/images/generations` · `google/gemini-3.1-flash-image-preview`: `text`, `image` → `image` `POST /v1/messages` · `google/gemini-3.1-flash-image-preview`: `text` → `json`, `sse`

Сұрау қандай өрістерді пайдаланады?

`POST /v1/chat/completions` · `google/gemini-3.1-flash-image-preview`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/images/generations` · `google/gemini-3.1-flash-image-preview`: `model`, `prompt`, `resolution`, `aspect_ratio`, `n`, `input_references`, `provider` `POST /v1/messages` · `google/gemini-3.1-flash-image-preview`: `model`, `messages`, `max_tokens`, `stream`

Қандай шектеулер қолданылады?

`POST /v1/chat/completions` · `google/gemini-3.1-flash-image-preview`: `messages.min_items`: `1` `POST /v1/images/generations` · `google/gemini-3.1-flash-image-preview`: `n.minimum`: `1`; `n.maximum`: `1`

Ailoot-ты Claude Code, OpenCode, Hermes не қолданбаңызға қосыңыз.

## Компания және оның жобалар портфелі

Компания және оның жобалар портфелі: миллиондаған клиент; ай сайынғы сату көлемі миллиардтармен есептеледі.

## Токенді жеңілдікпен сатып алыңыз.

Тұрақты жұмысқа жазылым жеңілдігі. Токен сатып алуға промокодтар — 50% дейін.

Жазылым

Тұрақты сұрауыңызға жеңілдікті тариф таңдаңыз.

50% дейінгі промокод

Сатып алғанда код енгізіңіз. Баға қазіргі науқанмен қайта есептеледі.

Тарихтағы шығындар

Әр сұрауға модель, токен және сома сақталады.

[Жазылым таңдау](https://ailoot.ai/docs/kk/billing/subscriptions/) · [Модель бағасын көру](https://ailoot.ai/models/kk/)

## API-ді сататын өніміңізге қосыңыз.

SaaS, қолданба мен бот Ailoot офертасы және лицензиялық шартына сай. Қайта сатуға реселлер лицензиясын сұраңыз.

Коммерциялық қолданба

Қызметіңіздің ақылы функциясына мәтін, сурет, бейне және дыбыс жасауды қосыңыз.

Реселлер лицензиясы

Жоба сипаттамасы мен кіру схемасын жіберіңіз. Пайдалану мен қайта сатуға жазбаша шарт сұраңыз.

Сайттағы құжаттар

Оферта, лицензиялық шарт және дерек саясаты қоспай тұрып қолжетімді.

[Реселлер лицензиясын сұрау](mailto:support@ailoot.ai) · [Оферта мен лицензиялық шарт](https://ailoot.ai/legal/offer?lang=kk)

## Ailoot · Компания және оның жобалар портфелі





Ailoot жинақталған жұмыс тәжірибесіне, кең клиенттік базаға, тұрақты қызметке және KPI көрсеткіштерін үздіксіз бақылауға сүйенеді.





Компания және оның жобалар портфелі: миллиондаған клиент; ай сайынғы сату көлемі миллиардтармен есептеледі.





Ailoot осы тәжірибені клиенттердің өнімдерінде, агенттерінде, қолданбаларында және автоматтандыруларында жасанды интеллект мүмкіндіктеріне API арқылы қол жеткізуді қамтамасыз етуге пайдаланады.
