วิธีแชตกับ Google Flow Agent ผ่าน Google Flow API
อ่าน 8 นาที • 17 ตุลาคม 2026 (10 พฤศจิกายน 2026)
useapi.net เป็น API ของบุคคลที่สาม (third-party) ไม่มีส่วนเกี่ยวข้องกับ Google และไม่ได้รับการรับรองจาก Google
สารบัญ
- บทนำ
- ก่อนเริ่ม
- แชตทำงานอย่างไร
- ขั้นที่ 1: เริ่มแชต
- ขั้นที่ 2: รับคำตอบแบบสตรีม
- ขั้นที่ 3: อนุมัติการใช้เครดิต
- ขั้นที่ 4: ดาวน์โหลดไฟล์
- ขั้นที่ 5: ทำต่อหรือแก้ไข
- ขั้นที่ 6: อ่าน แสดงรายการ เปลี่ยนชื่อ และลบแชต
- ขั้นที่ 7: การตั้งค่าการอนุมัติ คำสั่ง และโมเดลเริ่มต้น
- ทำแบบเดียวกันจากผู้ช่วย AI
- ตัวอย่าง
- คำถามที่พบบ่อย
- สรุป
บทนำ
Google Flow API ของ useapi.net ทำให้โค้ดของคุณแชตกับ Google Flow Agent ได้ ซึ่งเป็นผู้ช่วยด้านงานสร้างสรรค์ที่อยู่ใน Google Flow: เริ่มแชตด้วย curl คำสั่งเดียว รับคำตอบแบบสตรีม อนุมัติสิ่งที่เอเจนต์ต้องการใช้เครดิต แล้วดาวน์โหลดภาพและวิดีโอที่มันสร้าง Google ให้ใช้ Flow Agent ได้เฉพาะในเว็บแอป Google Flow เท่านั้น ไม่มี API สาธารณะ (ข้อมูล ณ พฤศจิกายน 2026) useapi.net เป็น API ของบุคคลที่สาม ไม่มีส่วนเกี่ยวข้องกับ Google และแชตจะทำงานบนบัญชี Google Flow ของคุณ จะเป็นบัญชีฟรีหรือแบบชำระเงินก็ได้ การแชตกับเอเจนต์ไม่ใช้เครดิต ส่วนภาพและวิดีโอที่มันสร้างคิดราคาปกติของ Google Flow
คู่มือนี้คือการรันจริงหนึ่งครั้งตั้งแต่ต้นจนจบ เราขอให้เอเจนต์ถ่ายภาพสินค้าแก้วกาแฟเซรามิกสองภาพ และทำวิดีโอแก้วใบนั้นยาว 6 วินาที อนุมัติการใช้เครดิต เก็บไฟล์ผลลัพธ์ จากนั้นขอให้แก้ไขอีกครั้งและปฏิเสธการแก้ไขนั้น ทุกคำตอบด้านล่างมาจากการรันครั้งนี้ ตัดให้สั้นลงและเปลี่ยนอีเมลของบัญชีแล้ว
เอเจนต์วางแผนงานเอง มันเลือกเครื่องมือและโมเดลตามการตั้งค่าของโปรเจกต์ และเก็บบทสนทนาทั้งหมดไว้ฝั่ง Google จึงแชตต่อได้แม้ผ่านไปหลายชั่วโมงหรือหลายวันโดยบริบทยังครบ กฎและข้อจำกัดทั้งหมดอยู่ในภาพรวม Agent
ก่อนเริ่ม
คุณต้องมี API token ของ useapi.net และบัญชี Google ที่เชื่อมต่อผ่านการตั้งค่า Google Flow เอเจนต์ใช้ได้กับทุกแพ็กเกจ Google AI รวมถึงบัญชีฟรี และสิ่งที่มันสร้างได้ขึ้นกับแพ็กเกจของบัญชี เหมือนกับ POST /images และ POST /videos
แต่ละเทิร์นใช้แคปต์ชาหนึ่งครั้ง ซึ่ง API แก้ให้ด้วยผู้ให้บริการแคปต์ชาของคุณ หรือเครดิตแคปต์ชาฟรีของบัญชีแรก คุณไม่ต้องส่งอะไรเพิ่มสำหรับเรื่องนี้
ขั้นตอนต่อไปนี้ใช้ curl, jq และตัวแปร shell สามตัว:
export USEAPI_TOKEN="user:12345-..." # API token ของ useapi.net
export EMAIL="[email protected]" # บัญชี Google Flow ที่เชื่อมต่อแล้ว
API="https://api.useapi.net/v1/google-flow/agent"
ทุกคำสั่งด้านล่างมีอยู่ใน Postman collection ด้วย
แชตทำงานอย่างไร
หนึ่งเทิร์น (turn) คือข้อความหนึ่งข้อความจากคุณ กับทุกอย่างที่เอเจนต์ทำเพื่อตอบ แชตหนึ่งรันทีละเทิร์น:
- POST /agent/chats เริ่มแชต และตอบ
202พร้อมchatId - GET /agent/chats/
chatId/stream ติดตามเอเจนต์แบบสดผ่าน Server-Sent Events - เมื่อเอเจนต์ต้องการใช้เครดิต มันจะหยุดและถาม POST /agent/chats/
chatId/approval ใช้ตอบ - POST /agent/chats/
chatId/messages ส่งข้อความถัดไป - GET /agent/chats/
chatIdอ่านแชตทั้งหมด พร้อมลิงก์ไฟล์ใหม่
ขั้นที่ 1: เริ่มแชต
ส่งโจทย์ในฟิลด์ message คำสั่งจะตอบกลับทันทีที่ Google รับเทิร์น ซึ่งปกติใช้เวลาไม่กี่วินาที และอาจนานถึงราว 100 วินาที จึงควรตั้ง timeout ของ curl ไว้ 150 วินาที:
curl -s --max-time 150 -X POST "$API/chats" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "'"$EMAIL"'",
"message": "Create two product shots of a matte sage-green ceramic coffee mug on a light oak table in soft morning window light, square format, with Nano Banana 2.1. Then make one 6 second video of the same mug with steam slowly rising from the coffee, with Omni 1.1 Flash."
}'
ของเราตอบ 202 ภายในราว 10 วินาที:
{
"chatId": "c-u12345-email:[email protected]:74262ac8-a54f-4ad7-80d7-3d44a4d6c6c1-chat:55023a0f-5e70-4545-bb4a-d878038dcf35-bot:google-flow",
"email": "[email protected]",
"turn": 1,
"status": "running"
}
chatId ระบุบัญชีและโปรเจกต์ไว้แล้ว คำสั่งถัดไปจึงไม่ต้องส่งทั้งสองอย่าง มันมี : และ @ จึงต้องเข้ารหัส URL เมื่อใส่ในพาธ เก็บไว้ทั้งสองรูปแบบ:
CHATID="c-u12345-email:[email protected]:74262ac8-...-bot:google-flow"
CHAT=$(jq -rn --arg v "$CHATID" '$v|@uri')
ถ้าไม่ระบุ projectId แชตจะอยู่ในโปรเจกต์เอเจนต์ของบัญชีเอง ซึ่งสร้างขึ้นตอนแชตครั้งแรกและตั้งชื่อประมาณ My Agents Work Fri, Oct 16 ช่วยแยกงานของเอเจนต์ออกจากไฟล์อื่นใน Google Flow ของคุณ คุณยังแนบภาพได้สูงสุด 7 ภาพ วิดีโอ 1 รายการ เสียง 5 เสียง และตัวละคร 7 ตัว กับข้อความใดก็ได้ โดยใช้ไวยากรณ์ @ แบบเดียวกับ POST /videos ดู POST /agent/chats
ขั้นที่ 2: รับคำตอบแบบสตรีม
เปิดสตรีมด้วย -N เพื่อให้อีเวนต์แสดงทันทีที่มาถึง EventSource ของเบราว์เซอร์ส่งเฮดเดอร์ Authorization ไม่ได้ ในแอปจึงควรใช้ fetch() หรือ HTTP client ตัวใดก็ได้:
curl -s -N "$API/chats/$CHAT/stream" \
-H "Authorization: Bearer $USEAPI_TOKEN"
สตรีมใหม่จะส่งอีเวนต์ chat ก่อน เล่นประวัติแชตซ้ำ แล้วส่ง replayed ทุกอย่างหลัง replayed เป็นแบบสด ในกรณีนี้เทิร์นแรกจบไปแล้วตอนเราเชื่อมต่อ จึงมาในส่วนที่เล่นซ้ำ เอเจนต์บอกแผนของมัน แล้วขออนุญาตใช้ 10 เครดิตสำหรับภาพ 2 ภาพและวิดีโอ 1 รายการ (ตัด ui และฟิลด์ยาวอื่นออก):
event: chat
data: {"chatId":"c-u12345-email:[email protected]:74262ac8-...-bot:google-flow","status":"waiting_approval","turns":1}
id: 1:505e78d7-bd79-4938-b0ec-8117bdb933dc
event: message
data: {"id":"1:505e78d7-...","turn":1,"items":[{"kind":"text","text":"I'm going to generate two images of a matte sage-green ceramic coffee mug, then I'll create a 6-second video of the same mug with rising steam using Omni 1.1 Flash."}]}
id: 1:00c21a03-a687-4173-9fd9-190fcdf2447b
event: message
data: {"id":"1:00c21a03-...","turn":1,"items":[{"kind":"tool_call","tool":"open_chat_panel","args":{"_synthetic":true}},{"kind":"tool_call","tool":"ask_for_permission","args":{"num_total":3,"total_cost":10,"num_videos":1,"num_images":2}}]}
id: 1:approval
event: approval
data: {"turn":1,"cost":10,"images":2,"videos":1,"total":3}
event: replayed
data: {"turns":1}
อีเวนต์ที่คุณต้องจัดการ:
| อีเวนต์ | ความหมาย |
|---|---|
message | ข้อความที่สมบูรณ์หนึ่งข้อความของเอเจนต์: ข้อความ ความคิด การเรียกเครื่องมือ และผลของเครื่องมือ |
approval | เอเจนต์ขออนุญาตก่อนใช้เครดิต Flow จำนวน cost |
turn | เทิร์นจบแล้ว: completed, waiting_approval หรือ failed พร้อม error |
media | ภาพหรือวิดีโอที่เอเจนต์สร้าง หรือการเปลี่ยนสถานะของมัน พร้อม url เมื่อเป็น completed |
keepalive มาทุก 15 วินาที สตรีมเดียวครอบคลุมทั้งแชตข้ามทุกเทิร์น จึงเปิดค้างไว้ระหว่างที่คุณอนุมัติและส่งข้อความได้ ถ้าหลุด ให้เชื่อมต่อใหม่โดยใส่ id ล่าสุดในเฮดเดอร์ Last-Event-ID แล้วมันจะต่อจากจุดเดิม เทิร์นยังทำงานต่อแม้คุณปิดสตรีม จึงไม่มีอะไรหาย
ขั้นที่ 3: อนุมัติการใช้เครดิต
ในโหมดอนุมัติ ask เอเจนต์จะหยุดก่อนใช้อะไรก็ตาม status ของแชตเป็น waiting_approval และอีเวนต์ approval แสดงค่าใช้จ่าย ตอบด้วย approve, always หรือ reject ภายในราว 4 นาที:
curl -s --max-time 150 -X POST "$API/chats/$CHAT/approval" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "decision": "approve" }'
ตั้งแต่ Google เปลี่ยน Flow Agent เมื่อ 10 พฤศจิกายน 2026 คำตอบจะต่อเนื่องในเทิร์นที่ถาม (ในที่นี้คือเทิร์น 1 ไม่ใช่เทิร์น 2 ใหม่) และ Google รับคำตอบเฉพาะตอนที่เทิร์นนั้นยังเปิดอยู่ ราว 4 นาทีหลังคำขอ คำตอบที่ช้ากว่านั้นจะได้ 409: ให้ส่งข้อความอีกครั้ง หรือตั้งโปรเจกต์เป็น approval: "auto" ในขั้นที่ 7 เพื่อให้เอเจนต์ไม่ถามอีก การรันด้านล่างบันทึกไว้ก่อนการเปลี่ยนแปลงนี้ คำตอบจึงเริ่มเทิร์น 2 และชื่อเครื่องมือในนั้น (generate_video_from_text) ตอนนี้จะแสดงเป็น generate_image และ generate_video
คำตอบทำให้เอเจนต์กลับไปทำงานต่อ:
{
"chatId": "c-u12345-email:[email protected]:74262ac8-...-bot:google-flow",
"email": "[email protected]",
"turn": 2,
"status": "running"
}
บนสตรีมที่เปิดอยู่ เทิร์น 2 ส่งวิดีโอเข้าคิว สร้างภาพทั้งสอง และจบภายในราว 30 วินาที choices ของเอเจนต์ (Option 1, Option 2) คือไทล์ที่เว็บแอป Google Flow แสดงสำหรับแต่ละผลลัพธ์:
id: 2:5feb253e-0848-422a-bcb8-936995b3c0df
event: message
data: {"id":"2:5feb253e-...","turn":2,"items":[{"kind":"tool_result","tool":"generate_video_from_text","result":{"status":"queued","media_id":"5732c66d-a971-4cd0-92d2-508ef0aecc07","display_name":"Steam rising from coffee mug","model_key":"abra_t2v_6s","aspect_ratio":"VIDEO_ASPECT_RATIO_LANDSCAPE"}}]}
id: 2:m:5732c66d-a971-4cd0-92d2-508ef0aecc07
event: media
data: {"turn":2,"referenceId":"user:12345-email:6a6f...-video:5732c66d-a971-4cd0-92d2-508ef0aecc07","mediaId":"5732c66d-a971-4cd0-92d2-508ef0aecc07","type":"video","status":"queued","tool":"generate_video_from_text","model":"abra_t2v_6s","displayName":"Steam rising from coffee mug"}
id: 2:m:377ecb33-ab2c-4bce-92d4-7bfcf53a9af2
event: media
data: {"turn":2,"referenceId":"user:12345-email:6a6f...-image:377ecb33-ab2c-4bce-92d4-7bfcf53a9af2","mediaId":"377ecb33-ab2c-4bce-92d4-7bfcf53a9af2","type":"image","status":"completed","tool":"generate_image","displayName":"Ceramic coffee mug on table","url":"https://flow-content.google/image/377ecb33-...?Expires=...&Signature=..."}
id: 2:4e37b051-c49c-4331-bc0c-06ccc539b950
event: message
data: {"id":"2:4e37b051-...","turn":2,"items":[{"kind":"text","text":"I've generated your two product shots. Your 6-second video has been scheduled and is waiting in the queue due to high demand. Feel free to check back in a few minutes."}]}
id: 2:end
event: turn
data: {"turn":2,"status":"completed"}
always อนุมัติและเปลี่ยนโปรเจกต์เป็นโหมด auto ด้วย เอเจนต์จึงหยุดถามในทุกแชตของโปรเจกต์ reject คือปฏิเสธ ดูได้ในขั้นที่ 5 ระหว่างที่คำขอรออยู่ ข้อความใหม่จะได้ 409: ให้ตอบคำขอก่อน
ขั้นที่ 4: ดาวน์โหลดไฟล์
ภาพพร้อมเมื่อเทิร์นจบ วิดีโอมักเสร็จหลังจากนั้นหนึ่งถึงสองนาที และเมื่อเสร็จ สตรีมจะส่งอีเวนต์ media ครั้งที่สองสำหรับวิดีโอ ของเรามาถึงไม่ถึงหนึ่งนาทีหลังเทิร์นจบ:
id: 2:m:5732c66d-a971-4cd0-92d2-508ef0aecc07
event: media
data: {"turn":2,"referenceId":"user:12345-email:6a6f...-video:5732c66d-a971-4cd0-92d2-508ef0aecc07","mediaId":"5732c66d-a971-4cd0-92d2-508ef0aecc07","type":"video","status":"completed","tool":"generate_video_from_text","model":"abra_t2v_6s","displayName":"Steam rising from coffee mug","url":"https://flow-content.google/video/5732c66d-...?Expires=...&Signature=...","durationSec":6}
ดาวน์โหลดแต่ละ url ขณะที่ลิงก์ยังใหม่:
curl -s -L -o mug-steam.mp4 "https://flow-content.google/video/5732c66d-...?Expires=...&Signature=..."
ลิงก์ชี้ไปที่ Google และหมดอายุราว 6 ชั่วโมงหลังออก อ่านแชตอีกครั้งด้วย GET /agent/chats/chatId เพื่อรับลิงก์ใหม่ หรือขอลิงก์ของรายการเดียวจาก GET /assets/mediaGenerationId ด้วย referenceId ของมัน referenceId ยังใช้เป็น referenceImage_N หรือ referenceVideo_1 ได้ใน POST /images, POST /videos และข้อความถัดไปถึงเอเจนต์ ภาพทั้งสองและวิดีโอ 1280×720 อยู่ในตัวอย่าง
การรันนี้ใช้ 10 เครดิต: ภาพ Nano Banana 2.1 สองภาพใช้ 0 บนแพ็กเกจของบัญชีนี้ และวิดีโอ Omni 1.1 Flash 6 วินาทีใช้ 10
ขั้นที่ 5: ทำต่อหรือแก้ไข
ส่งข้อความถัดไปไปยังแชตเดิม Google เก็บบทสนทนาไว้ เอเจนต์จึงรู้ว่า “วิดีโอนั้น” คือวิดีโอไหน:
curl -s --max-time 150 -X POST "$API/chats/$CHAT/messages" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "message": "Nice. Revise the video: make it 8 seconds, with a slow camera push-in toward the mug while the steam rises." }'
มันตอบ 202 พร้อม "turn": 3 และเอเจนต์ขออนุญาตอีกครั้ง คราวนี้ 12 เครดิต:
id: 3:approval
event: approval
data: {"turn":3,"cost":12,"images":0,"videos":1,"total":1}
id: 3:end
event: turn
data: {"turn":3,"status":"waiting_approval"}
เรามีวิดีโอแล้ว จึงปฏิเสธ:
curl -s --max-time 150 -X POST "$API/chats/$CHAT/approval" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "decision": "reject" }'
เทิร์น 4 จบด้วยคำตอบหนึ่งข้อความ ไม่มีภาพหรือวิดีโอใหม่ และไม่มีการใช้เครดิต:
id: 4:91e06fb7-ba5b-4e32-b2a6-ce210be491ba
event: message
data: {"id":"4:91e06fb7-...","turn":4,"items":[{"kind":"text","text":"I've cancelled that generation. Are there any changes you'd like to make to the prompt or concept before we try again?"}]}
id: 4:end
event: turn
data: {"turn":4,"status":"completed"}
การส่งข้อความขณะเทิร์นกำลังทำงานจะได้ 409 จึงควรรออีเวนต์ turn ก่อน ถ้าต้องการเลือกตัวเลือกหนึ่งของเอเจนต์ ให้ส่งข้อความของตัวเลือกนั้นเป็นข้อความถัดไป เหมือนที่เว็บแอป Google Flow ทำ
ขั้นที่ 6: อ่าน แสดงรายการ เปลี่ยนชื่อ และลบแชต
อ่านแชตทั้งหมดจาก Google ได้ทุกเมื่อ แต่ละเทิร์นมีข้อความของคุณ ทุกอย่างที่เอเจนต์ทำ และไฟล์พร้อมลิงก์ใหม่:
curl -s "$API/chats/$CHAT" -H "Authorization: Bearer $USEAPI_TOKEN"
แชตของเราหลังสี่เทิร์น (ตัดรายการ agent และ media ให้สั้นลง ตัด ui ออก):
{
"chatId": "c-u12345-email:[email protected]:74262ac8-...-bot:google-flow",
"email": "[email protected]",
"projectId": "74262ac8-a54f-4ad7-80d7-3d44a4d6c6c1",
"title": "Sage Green Ceramic Mug Concept",
"created": "2026-10-18T00:47:54.000Z",
"updated": "2026-10-18T00:50:47.236Z",
"status": "idle",
"pendingApproval": null,
"lastError": null,
"turns": [
{
"turn": 1,
"message": { "text": "Create two product shots of a matte sage-green ceramic coffee mug ...", "references": [] },
"agent": [
{ "kind": "text", "text": "I'm going to generate two images of a matte sage-green ceramic coffee mug, then I'll create a 6-second video ..." },
{ "kind": "tool_call", "tool": "ask_for_permission", "args": { "num_total": 3, "total_cost": 10, "num_videos": 1, "num_images": 2 } }
],
"media": []
},
{
"turn": 2,
"message": { "text": "Approve", "references": [] },
"agent": [
{ "kind": "tool_call", "tool": "generate_video_from_text", "args": { "duration": 6, "aspect_ratio": "16:9", "model_display_name": "Omni 1.1 Flash", "prompt": "Cinematic product video of a matte sage-green ceramic coffee mug ..." } },
{ "kind": "tool_call", "tool": "generate_image", "args": { "aspect_ratio": "1:1", "prompt": "A professional product shot of a matte sage-green ceramic coffee mug ..." } },
{ "kind": "text", "text": "I've generated your two product shots. Your 6-second video has been scheduled ..." }
],
"media": [
{ "referenceId": "user:12345-email:6a6f...-video:5732c66d-...", "type": "video", "status": "completed", "model": "abra_t2v_6s", "displayName": "Steam rising from coffee mug", "url": "https://flow-content.google/video/5732c66d-...", "durationSec": 6 },
{ "referenceId": "user:12345-email:6a6f...-image:377ecb33-...", "type": "image", "status": "completed", "displayName": "Ceramic coffee mug on table", "url": "https://flow-content.google/image/377ecb33-..." },
{ "referenceId": "user:12345-email:6a6f...-image:a2d3cd0c-...", "type": "image", "status": "completed", "displayName": "Ceramic coffee mug on wooden sur…", "url": "https://flow-content.google/image/a2d3cd0c-..." }
]
},
{ "turn": 3, "message": { "text": "Nice. Revise the video: make it 8 seconds, ...", "references": [] }, "agent": ["..."], "media": [] },
{
"turn": 4,
"message": { "text": "Reject", "references": [] },
"agent": [{ "kind": "text", "text": "I've cancelled that generation. Are there any changes you'd like to make to the prompt or concept before we try again?" }],
"media": []
}
]
}
Google ตั้งชื่อแชตให้เอง status เป็น idle เมื่อไม่มีอะไรทำงานอยู่ และ pendingApproval เก็บค่าใช้จ่ายไว้ระหว่างที่เอเจนต์รอ ใส่ ?media=false เพื่ออ่านเร็วขึ้นโดยไม่รีเฟรชลิงก์
แสดงรายการแชตของบัญชี เรียงตามกิจกรรมล่าสุดก่อน รายการมาจาก Google จึงรวมแชตที่เริ่มในเว็บแอป Google Flow ในโปรเจกต์เดียวกันด้วย และเป็นวิธีหา chatId ที่หายไป:
curl -s "$API/chats?email=$EMAIL" -H "Authorization: Bearer $USEAPI_TOKEN"
เปลี่ยนชื่อแชต ชื่อใหม่จะแสดงในเว็บแอป Google Flow ด้วย:
curl -s -X PATCH "$API/chats/$CHAT" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "title": "Sage mug product shoot" }'
{
"chatId": "c-u12345-email:[email protected]:74262ac8-...-bot:google-flow",
"title": "Sage mug product shoot"
}
จากนั้นรายการเป็นดังนี้:
{
"chats": [
{
"chatId": "c-u12345-email:[email protected]:74262ac8-...-chat:55023a0f-...-bot:google-flow",
"email": "[email protected]",
"title": "Sage mug product shoot",
"created": "2026-10-18T00:47:54.000Z",
"updated": "2026-10-18T00:51:01.773Z",
"running": false
},
{
"chatId": "c-u12345-email:[email protected]:74262ac8-...-chat:1d9d42ed-...-bot:google-flow",
"email": "[email protected]",
"title": "Stylish Female Character Action Sequence",
"created": "2026-10-17T03:50:34.000Z",
"updated": "2026-10-17T04:57:26.375Z",
"running": false
}
]
}
ลบบทสนทนาของแชต จะได้ 204 โดยไม่มี body แชตหายไปจากรายการและจากเว็บแอป Google Flow ส่วนภาพและวิดีโอที่มันสร้างยังอยู่ในโปรเจกต์:
curl -s -X DELETE "$API/chats/$CHAT" -H "Authorization: Bearer $USEAPI_TOKEN"
การเปลี่ยนชื่อและการลบจะได้ 409 ระหว่างที่เทิร์นกำลังทำงาน
ขั้นที่ 7: การตั้งค่าการอนุมัติ คำสั่ง และโมเดลเริ่มต้น
แต่ละโปรเจกต์ Google Flow มีการตั้งค่าเอเจนต์ เหมือนแผงเอเจนต์ในเว็บแอป Google Flow GET /agent/settings อ่านค่าเหล่านี้ และแสดงรายการโมเดลภาพและวิดีโอที่แพ็กเกจ Google ของบัญชีมี พร้อมราคาภาพหนึ่งภาพหรือวิดีโอหนึ่งรายการบนแพ็กเกจนั้น:
curl -s "$API/settings?email=$EMAIL" -H "Authorization: Bearer $USEAPI_TOKEN"
PUT /agent/settings เปลี่ยนเฉพาะฟิลด์ที่คุณส่ง ก่อนการรัน เราตั้งโหมด ask และค่าเริ่มต้นไว้:
curl -s -X PUT "$API/settings" \
-H "Authorization: Bearer $USEAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "'"$EMAIL"'",
"approval": "ask",
"imageDefaults": { "model": "nano-banana-2", "aspectRatio": "1:1", "count": 2 },
"videoDefaults": { "model": "omni-flash", "aspectRatio": "16:9", "count": 1 }
}'
คำตอบคือการตั้งค่าของโปรเจกต์หลังการเปลี่ยน:
{
"projectId": "74262ac8-a54f-4ad7-80d7-3d44a4d6c6c1",
"approval": "ask",
"instructions": [],
"imageDefaults": { "model": "nano-banana-2", "aspectRatio": "1:1", "count": 2 },
"videoDefaults": { "model": "omni-flash", "aspectRatio": "16:9", "count": 1 },
"models": {
"image": [
{ "model": "nano-banana-pro", "label": "Nano Banana Pro", "credits": 0 },
{ "model": "nano-banana-2-lite", "label": "Nano Banana 2 Lite", "credits": 0 },
{ "model": "nano-banana-2", "label": "Nano Banana 2.1", "credits": 0 }
],
"video": [
{ "model": "omni-flash", "label": "Omni 1.1 Flash", "credits": 4 },
{ "model": "veo-3.1-lite", "label": "Veo 3.1 - Lite", "credits": 5 },
{ "model": "veo-3.1-fast", "label": "Veo 3.1 - Fast", "credits": 10 },
{ "model": "veo-3.1-quality", "label": "Veo 3.1 - Quality", "credits": 100 }
]
}
}
credits คือราคาต่ำสุดของภาพหนึ่งภาพหรือวิดีโอหนึ่งรายการบนแพ็กเกจของบัญชี วิดีโอที่ยาวขึ้นหรือความละเอียดสูงขึ้นจึงแพงกว่า: วิดีโอ Omni 1.1 Flash 6 วินาที 720p ของเราใช้ 10 และเวอร์ชันแก้ไข 8 วินาทีจะใช้ 12 แพ็กเกจของคุณอาจแสดงตัวเลขต่างไป ฟิลด์การตั้งค่า:
approval:ask(เอเจนต์หยุดและแสดงค่าใช้จ่าย) หรือauto(ใช้เครดิตโดยไม่ถาม)instructions: คำสั่งประจำสูงสุด 3 ข้อที่เอเจนต์ทำตามในทุกแชตของโปรเจกต์ แต่ละข้อแนบภาพอ้างอิงได้ อาร์เรย์นี้แทนที่คำสั่งเดิมของโปรเจกต์ จึงต้องส่งรายการทั้งหมดimageDefaultsและvideoDefaults: โมเดล อัตราส่วนภาพ และจำนวนที่เอเจนต์ใช้เมื่อข้อความไม่ได้ระบุเป็นอย่างอื่น เลือกจากmodels
การตั้งค่ามีผลกับทุกแชตในโปรเจกต์ รวมถึงแชตในเว็บแอป Google Flow
ทำแบบเดียวกันจากผู้ช่วย AI
MCP server ของ Google Flow แบบโฮสต์ให้ Claude Code, Cursor, VS Code และ MCP client อื่นใช้แชตเดียวกันนี้ในรูป 12 เครื่องมือ โดยไม่ต้องติดตั้งอะไร ใน Claude Code:
claude mcp add --transport http useapi-google-flow https://api.useapi.net/v1/google-flow/mcp --header "Authorization: Bearer YOUR_API_TOKEN"
จากนั้นขอภาพแก้วจากผู้ช่วยด้วยภาษาธรรมดา ผู้ช่วยส่งโจทย์ด้วย flow_agent_chat และตอบคำขอใช้เครดิตของเอเจนต์ด้วย flow_agent_answer_approval เซิร์ฟเวอร์นี้อยู่ใน MCP Registry ทางการในชื่อ net.useapi/google-flow
ถ้าอยากเห็นไคลเอนต์แชตที่สมบูรณ์ก่อน เปิดเดโมสด วาง API token เลือกบัญชี แล้วแชตกับเอเจนต์ได้เลย พร้อมภาพและวิดีโอในแชต ไฟล์แนบ การ์ดอนุมัติ และการตั้งค่า ซอร์สโค้ดเป็นไฟล์เล็ก ๆ ห้าไฟล์ ไม่ต้องบิลด์ อยู่บน GitHub ที่ google-flow-api/demo และหน้า Agent Live Demo จับคู่แต่ละฟีเจอร์กับคำสั่ง API ของมัน
ตัวอย่าง
ผลงานจากการรันครั้งนี้ ไม่ได้แก้ไข พรอมต์เขียนโดยเอเจนต์เองจากโจทย์ของเรา
Nano Banana 2.1 » ภาพสินค้าแก้วสีเขียวเสจสองภาพ (เทิร์น 2)
ทั้งสองภาพเป็น JPEG 1024×1024 ใช้ 0 เครดิตบนแพ็กเกจของบัญชีนี้
Omni 1.1 Flash » ไอน้ำลอยขึ้นจากแก้ว 6 วินาที (เทิร์น 2)
1280×720 มีเสียง 6 วินาที 10 เครดิต
บทความที่เกี่ยวข้อง: วิดีโอ Veo 3.1 ผ่าน Google Flow API, วิดีโอพร้อมเสียงในตัวด้วย Omni Flash และภาพ Nano Banana ผ่าน Google Flow API
คำถามที่พบบ่อย
- มี API ของ Google Flow Agent ไหม? ผ่าน useapi.net มี: Agent API เริ่มแชต สตรีมคำตอบผ่าน Server-Sent Events ตอบการอนุมัติ และส่งภาพและวิดีโอกลับมา ใช้ได้กับทุกแพ็กเกจ Google AI รวมถึงบัญชีฟรี Google ให้ใช้ Flow Agent เฉพาะในเว็บแอป Google Flow ไม่มี API สาธารณะของตัวเอง (ข้อมูล ณ พฤศจิกายน 2026)
- แชตกับ Google Flow Agent มีค่าใช้จ่ายเท่าไร? ผ่าน useapi.net การแชตไม่ใช้เครดิต Flow ส่วนสิ่งที่เอเจนต์สร้างคิดราคาปกติของ Google Flow ซึ่งโหมด
askแสดงให้เห็นก่อนใช้จริง วิดีโอ Omni 1.1 Flash 6 วินาที 720p ในการรันนี้ราคา $0.08 บน Google AI Ultra $199.99 เทียบกับ $0.61 บน Gemini API ทางการ (ข้อมูล ณ พฤศจิกายน 2026) - แชตที่เริ่มในเว็บแอป Google Flow แสดงใน API ไหม? ผ่าน useapi.net แสดง ถ้าอยู่ในโปรเจกต์เดียวกัน GET /agent/chats แสดงรายการแชตเหล่านั้น และทุก endpoint ด้านบนใช้กับแชตเหล่านั้นได้ แชตที่เริ่มผ่าน API ก็แสดงในเว็บแอปด้วย ส่ง
projectIdจาก GET /assets/projects/emailเพื่อทำงานในโปรเจกต์อื่นที่ไม่ใช่โปรเจกต์ของเอเจนต์เอง - ใช้ webhook แทนการเปิดสตรีมค้างไว้ได้ไหม? ผ่าน useapi.net ได้ ส่ง
replyUrlใน POST /agent/chats คำสั่งส่งข้อความ หรือคำสั่งอนุมัติ แล้ว API จะส่งPOSTหนึ่งครั้งเมื่อเทิร์นจบ พร้อมข้อความ ไฟล์ สถานะ และคำขออนุมัติที่ค้างอยู่ของเทิร์นนั้น วิดีโอมักมาถึงตอนที่ยังเป็นqueuedจึงควรเอาลิงก์ของมันจาก GET หรือจากอีเวนต์mediaของสตรีม - มีข้อจำกัดอะไรบ้าง? ผ่าน useapi.net แชตหนึ่งรันทีละเทิร์น บัญชีหนึ่งรันได้พร้อมกันสูงสุด 3 เทิร์น และเทิร์นหนึ่งนานได้สูงสุด 10 นาที ซึ่งเป็นข้อจำกัดของ Google เอง Google ยังจำกัดจำนวนข้อความถึงเอเจนต์ต่อบัญชีต่อวันโดยไม่เปิดเผยตัวเลข และ API จะตอบ
429สำหรับบัญชีนั้นจนถึงเที่ยงคืน UTC ดูข้อจำกัด
สรุป
ติดต่อเราได้ที่ Discord Server หรือ
Telegram Channel สำหรับทุกคำถามและข้อสงสัยด้านการใช้งาน
ดูตัวอย่างโค้ดได้ใน GitHub repo ของเรา รวมถึงไคลเอนต์แชตของเอเจนต์ใน demo/
ผู้ช่วย AI ก็แชตกับ Google Flow Agent แทนคุณได้: MCP server ของ Google Flow แบบโฮสต์ใช้ได้กับ Claude Code, Cursor และ VS Code บนบัญชี Google Flow ของคุณ
เริ่มใช้งาน API
การสมัครสมาชิกเดือนละ $15 ใช้ได้กับทุก API บน useapi.net ใช้ Token เดียวกับทุกบริการ เชื่อมบัญชีของคุณเองได้สูงสุด 3 บัญชีต่อบริการ แต่ละบัญชีใช้แพ็กเกจของเว็บไซต์นั้นเอง ส่วน useapi.net ดูแล REST API การกระจายโหลด และการ polling ให้ ต้องการบัญชีมากกว่านี้? สมัครเพิ่มแต่ละครั้งเดือนละ $10 และได้เพิ่มอีก 3 บัญชีต่อบริการ
สมัครสมาชิก — $15/เดือน ชำระด้วยคริปโต
ไม่มีบัตรเครดิตที่ใช้จ่ายต่างประเทศได้? สมัครด้วยคริปโตก็ได้ (การชำระด้วยคริปโตขอคืนเงินไม่ได้) ดูราคาและแพ็กเกจสำหรับปริมาณมากได้ที่หน้าการสมัครสมาชิก ถ้าชำระผ่าน Stripe ขอคืนเงินเต็มจำนวนได้ภายใน 14 วันหลังซื้อครั้งแรก หากสร้างงานสำเร็จไม่ถึง 50 ครั้ง สมัครไว้แล้ว? เปลี่ยนจำนวนได้ที่ Stripe Customer Portal โดยไม่ต้องซื้อใหม่

