Skip to content

AI projects ​

จัดการ โปรเจกต์ AI (บริบท workspace สำหรับ feed, job, chat, library) — ใส่ domain ลงทะเบียน ในทุก form ตาม Authentication

บน https://api.gommo.net มีสอง API:

APIเมื่อไหร่ใช้
Legacy POST /ai/projectsรายการย่อ — ใช้ id_base เป็น project_id
V2 POST /api/v2/ai-projectsจัดการโปรเจกต์เต็ม (scopes, สมาชิก, CRUD)

Playground

Playground เมื่อรัน npm run docs:stack: พื้นที่โปรเจกต, คลังโปรเจกต, งบโปรเจกต, แพลตฟอร์ม (legacy: Legacy API) — ตาราง worker ด้านล่าง

ที่เกี่ยวข้อง: Cookbook home feed · Endpoint map · Gommo public API

Auth ​

Bearer + form access_token, domain จาก $env:GOMMO_API_DOMAIN
V2 ส่ง device_id, device_name, device_info — gateway เติมให้ได้ถ้าไม่ส่ง

Legacy list ​

powershell
$domain = $env:GOMMO_API_DOMAIN
if (-not $domain) { throw 'Set GOMMO_API_DOMAIN' }
$h = @{ Authorization = "Bearer $env:TOKEN"; 'Content-Type' = 'application/x-www-form-urlencoded' }
Invoke-RestMethod -Method Post -Uri 'https://api.gommo.net/ai/projects' -Headers $h -Body "access_token=$env:TOKEN&domain=$domain"

Self-host: POST {gateway}/gateway/projects

V2 manager ​

POST https://api.gommo.net/api/v2/ai-projects — field action:

actionฟิลด์จำเป็นหมายเหตุ
listtoken, domaindata[] มี scopes, สมาชิก, session
createname, descriptionคำอธิบาย ≥ 10 ตัวอักษร
getid_baseobject ใน data; password ทางเลือกเมื่อ protected — ปลดล็อก (Mở dự án). ผิด: success: false, needs_password: true
set_passwordid_base, passwordแท็บ Chi tiết — MẬT KHẨU TÀI DỰ ÁN; protected: true; password ว่าง = ลบ
updateid_base, name, descriptionชื่อ/คำอธิบาย — ไม่ ใช่รหัสผ่านโปรเจกต์
deleteid_baseใช้ id_base ไม่ใช่ id ตัวเลข
member_listid_baseแท็บ Thành viên — members[], invites[], my_scopes
member_kickid_base, user_idลบสมาชิก — user_id จาก member_list (verify แล้ว)
inviteid_base, identifier, role, access, scopesเชิญ — role: member / mod / admin
invite_revokeinvite_idยกเลิกคำเชิญ — จาก data.invites[]
set_budgetid_base, budgetแท็บ Hạn mức — จำนวนเต็ม; 0 = ไม่จำกัด
statsid_base, periodแท็บ Thống kê — all, today, yesterday, this_month, last_month
activity_listid_base, limit, offsetแท็บ Lịch sử hoạt động — UI ส่ง limit=50, offset=0

Credit pools: Credit pools

Media tab (project modal) ​

แท็บ Media (Ảnh / Video / Audio / Music) ไม่ ใช้ ai-projects — scope คือ UUID โปรเจกต์ (id_base จาก list)

ภาพและวิดีโอ (files-manager) ​

POST https://api.gommo.net/api/v2/files-manager — action=list

Fieldจำเป็นหมายเหตุ
projectใช่UUID โปรเจกต์ (ไม่ ใช้ project_id ที่นี่)
media_typeใช่image หรือ video
statusไม่UI dealer ส่ง ready
signed_previewsไม่true — preview ใน data.items[]
limitไม่UI 30
offsetไม่แบ่งหน้า

Response: data.items[], limit, offset. Mode B: POST {gateway}/gateway/files-manager. Playground: สื่อโปรเจกต (ภาพ / วิดีโอ)

อาจเรียก POST /ai/images หรือ /ai/videos + project_id — capture มัก data: []; grid UI ใช้ files-manager

ช่องค้นหา: กรอง ฝั่ง client — payload files-manager list ไม่ มี field search

Audio ​

POST https://api.gommo.net/ai/audio — action_type=get.list, project_id (ไม่ใช่ TTS getLists). Gateway: /gateway/project-media/audio. Playground: สื่อโปรเจกต (audio list)

Music ​

POST …/ai_musics/getAll + project_id, domain, token, device. Gateway: /gateway/project-media/music. Playground: สื่อโปรเจกต (music getAll) — ต่างจาก library user (/ai/library/musics) และ job สร้าง music

Project stats (action=stats) ​

data.summary, data.chart, data.project — ไม่ใช่ usage-history. Playground: สถิติการใช้งาน

Activity history (action=activity_list) ​

แท็บ modal Lịch sử hoạt động — endpoint V2 เดียวกัน

Fieldจำเป็นหมายเหตุ
id_baseใช่UUID โปรเจกต์
limitไม่UI dealer มัก 50
offsetไม่0 หน้าแรก; เพิ่มตาม limit สำหรับหน้าถัดไป

Response: data.items[] — audit (actor_*, summary ตาม locale, รหัส action ไม่ตรงชื่อ API เช่น invite / member_kick), target_type, target_id, payload, created_time (Unix วินาที)

ตัวอย่าง action: project.create, project.update, budget.set, share_credit.on / off, member.invite, member.revoke, member.kick, member.accept — pool create / deposit / delete อาจมีเมื่อ upstream บันทึก

Gateway Mode B:

json
{
  "action": "activity_list",
  "id_base": "<id_base จาก list>",
  "limit": 50,
  "offset": 0,
  "language": "vi"
}

Playground: บันทึกกิจกรรม

ตัวอย่าง PowerShell ​

powershell
$domain = $env:GOMMO_API_DOMAIN
if (-not $domain) { throw 'Set GOMMO_API_DOMAIN' }
$h = @{ Authorization = "Bearer $env:TOKEN"; 'Content-Type' = 'application/x-www-form-urlencoded' }
$uri = 'https://api.gommo.net/api/v2/ai-projects'

$list = "access_token=$env:TOKEN&domain=$domain&action=list&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $list

$idBase = '<id_base_from_list>'
$get = "access_token=$env:TOKEN&domain=$domain&action=get&id_base=$idBase&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $get

$members = "access_token=$env:TOKEN&domain=$domain&action=member_list&id_base=$idBase&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $members

$kick = "access_token=$env:TOKEN&domain=$domain&action=member_kick&id_base=$idBase&user_id=75965&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $kick

$budget = "access_token=$env:TOKEN&domain=$domain&action=set_budget&id_base=$idBase&budget=48790&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $budget

$setPwd = "access_token=$env:TOKEN&domain=$domain&action=set_password&id_base=$idBase&password=YOUR_PASSWORD&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $setPwd

$getProtected = "access_token=$env:TOKEN&domain=$domain&action=get&id_base=$idBase&password=YOUR_PASSWORD&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $getProtected

Gateway Mode B ​

POST {gateway}/gateway/ai-projects — JSON + Bearer. Gateway เติม domain เมื่อไม่ส่ง. Alias: idBase/projectId → id_base; userId → user_id; inviteId → invite_id. OpenAPI: openapi.yaml

json
{ "action": "list", "language": "vi" }
json
{
  "action": "get",
  "id_base": "<id_base_from_list>",
  "password": "<when protected>",
  "language": "vi"
}
json
{
  "action": "set_password",
  "id_base": "<id_base_from_list>",
  "password": "<empty string clears>",
  "language": "vi"
}

Playground (Home feed) ​

เมื่อรัน npm run docs:stack — Playground proxy gateway (same-origin). เมนู Home feed ใช้กลุ่ม Legacy API, พื้นที่โปรเจกต, คลังโปรเจกต, งบโปรเจกต, แพลตฟอร์ม (ชื่อตรง UI):

กลุ่มWorkeractionฟอร์มหลัก
พื้นที่โปรเจกตเรียกดูโปรเจกตlistlanguage
พื้นที่โปรเจกตเปิดโปรเจกตgetid_base, password (optional)
พื้นที่โปรเจกตรหัสผ่านโปรเจกตset_passwordid_base, password
พื้นที่โปรเจกตสมาชิก / เชิญ / ลบ / ยกเลิกคำเชิญmember_list, invite, member_kick, invite_revokeดู EN reference
พื้นที่โปรเจกตวงเงิน / สถิติ / บันทึกset_budget, stats, activity_listid_base + fields ตาม action
พื้นที่โปรเจกตขั้นสูง: action กำหนดเองcaptured actionpass-through

Home feed ไม่ ใช้ Limit / After ID ของ media library.

Request tab vs Send: preview อาจแสดง placeholder เมื่อช่องว่าง; Send ส่งเฉพาะค่าที่กรอก

Kick / invite / revoke (Mode B) ​

json
{
  "action": "member_kick",
  "id_base": "<id_base>",
  "user_id": 75965,
  "language": "vi"
}
json
{
  "action": "invite",
  "id_base": "<id_base>",
  "identifier": "username",
  "role": "member",
  "access": "view",
  "scopes": { "...": "copy from dealer Network" },
  "language": "vi"
}

Gateway default access: member → view, mod/admin → edit.

json
{
  "action": "invite_revoke",
  "invite_id": "<uuid from data.invites[]>",
  "language": "vi"
}

Unknown action (pass-through) ​

Typed handlers ครอบคลุมตาราง V2 รวม set_password. action ใหม่จาก upstream ใช้ JSON capture หรือ Playground custom action V2.

project_id ​

ใช้ id_base จาก list/get เป็น project_id (newfeeds, jobs, library) — default: "default"

Credit vs budget ​

ยอดบัญชี (เมนูโปรไฟล์)กระเป๋าผู้ใช้ — ไม่หักอัตโนมัติเมื่อสร้าง job
budget (set_budget)เพดาน ที่โปรเจกต์ใช้ได้
credit_balanceยอดใช้จ่ายบนโปรเจกต์ (มัก 0 จนกว่าจะ fund pool)
Credit poolsแท็บ Ngân sách — list, create, deposit (Bơm), delete, ledger, share credit

Pool & share credit ​

ดู Credit pools — deposit (Bơm), delete (pool_id จาก list); deposit: wallet ≥ amount + 100k reserve; delete: ok: true ไม่ รับประกันคืนกระเป๋าส่วนตัว

ยังไม่ได้ document ​

อัปโหลด บนแท็บ Media (นอก list) — capture แยก