Skip to content

AI projects ​

Quản lý dự án AI (ngữ cảnh workspace cho feed, job, chat, thư viện). Mọi form cần domain đăng ký — xem Authentication.

Hai API trên https://api.gommo.net:

APIKhi nào dùng
Legacy POST /ai/projectsList tối giản; lấy id_base làm project_id
V2 POST /api/v2/ai-projectsQuản lý dự án đầy đủ (scopes, thành viên, CRUD)

Playground

Playground — Home feed khi chạy npm run docs:stack: Không gian dự án, Thư viện dự án, Ngân sách dự án, Nền tảng (legacy: API legacy). Bảng worker bên dưới.

Liên quan: Cookbook home feed · Endpoint map · Gommo public API

Xác thực ​

  • Authorization: Bearer <access_token> + form access_token
  • domain = domain đăng ký ($env:GOMMO_API_DOMAIN)

V2 gửi thêm device_id, device_name, device_info. Gateway tự điền device nếu client bỏ trống.

Legacy — danh sách ​

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 — quản lý dự án ​

POST https://api.gommo.net/api/v2/ai-projects (form urlencoded), field action:

actionField bắt buộcGhi chú
listtoken, domaindata[] có my_scopes, session_count, member_preview, …
createname, descriptionMô tả ≥ 10 ký tự
getid_basedata là một object. Tùy chọn password khi protected — mở khóa (Mở dự án). Sai mật khẩu: success: false, needs_password: true.
set_passwordid_base, passwordTab Chi tiết — MẬT KHẨU TÀI DỰ ÁN. protected: true. Password rỗng = xóa mật khẩu.
updateid_base, name, descriptionTên/mô tả — không đổi mật khẩu dự án. Response có thể có projectInfo và data
deleteid_baseDùng id_base, không dùng id số
member_listid_baseTab Thành viên — members[], invites[], my_role, my_scopes
member_kickid_base, user_idKick thành viên — user_id số từ member_list (đã verify Network)
inviteid_base, identifier, role, access, scopesMời — role: member / mod / admin; scopes JSON (copy Network)
invite_revokeinvite_idThu hồi lời mời — invite_id từ data.invites[]
set_budgetid_base, budgetTab Hạn mức — số nguyên; 0 = không giới hạn
statsid_base, periodTab Thống kê — period: all, today, yesterday, this_month, last_month
activity_listid_base, limit, offsetTab Lịch sử hoạt động — mặc định UI: limit=50, offset=0

Credit pool (tab Ngân sách): Credit pools.

Thống kê dự án (action=stats) ​

Response: data.summary (credit chi tiêu/hoàn/nạp, cuộc trò chuyện, đơn media), data.chart, data.project. Khác usage-history (toàn tài khoản). Gateway: POST {gateway}/gateway/ai-projects JSON. Playground: Thống kê sử dụng.

Lịch sử hoạt động (action=activity_list) ​

Tab modal Lịch sử hoạt động — cùng endpoint V2.

FieldBắt buộcGhi chú
id_basecóUUID dự án
limitkhôngUI dealer thường 50
offsetkhông0 trang đầu; tăng theo limit để phân trang

Response: data.items[] — audit (actor_*, summary theo locale, mã sự kiện action khác tên API như invite / member_kick), target_type, target_id, payload, created_time (Unix giây).

Mã action đã thấy (mẫu): project.create, project.update, budget.set, share_credit.on / off, member.invite, member.revoke, member.kick, member.accept. Pool create / deposit / delete có thể có khi upstream ghi log — không đảm bảo trên mọi dự án.

Gateway Mode B:

json
{
  "action": "activity_list",
  "id_base": "<id_base từ list>",
  "limit": 50,
  "offset": 0,
  "language": "vi"
}

Playground: Nhật ký hoạt động.

Ví dụ PowerShell (V2) ​

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

$create = "access_token=$env:TOKEN&domain=$domain&action=create&name=Ten+du+an&description=Mo+ta+du+moi+muoi+ky+tu&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $create

$idBase = '<id_base_tu_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

$upd = "access_token=$env:TOKEN&domain=$domain&action=update&id_base=$idBase&name=Ten+du+an&description=Mo+ta+sau+khi+sua+day+du&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $upd

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

$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=MAT_KHAU&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=MAT_KHAU&language=vi"
Invoke-RestMethod -Method Post -Uri $uri -Headers $h -Body $getProtected

Gateway Mode B ​

POST {gateway}/gateway/ai-projects — JSON, Bearer bắt buộc. Gateway tự thêm domain nếu thiếu. 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 từ list>",
  "password": "<khi protected — Mở dự án>",
  "language": "vi"
}
json
{
  "action": "set_password",
  "id_base": "<id_base từ list>",
  "password": "<mật mới — chuỗi rỗng = xóa>",
  "language": "vi"
}

Playground (Home feed) ​

Khi chạy npm run docs:stack, Playground proxy gateway (same-origin). Menu Home feed dùng nhóm API legacy, Không gian dự án, Thư viện dự án, Ngân sách dự án, Nền tảng — mỗi worker một luồng (tên khớp UI Playground):

NhómWorker PlaygroundactionField form chính
Không gian dự ánDuyệt dự ánlistlanguage
Không gian dự ánMở dự ángetid_base, password (tùy chọn)
Không gian dự ánMật khẩu dự ánset_passwordid_base, password (rỗng = xóa)
Không gian dự ánTạo / Sửa / Xóa dự áncreate, update, deletename, description, id_base
Không gian dự ánThành viên & lời mời / Mời / Thu hồi / Gỡmember_list, invite, invite_revoke, member_kickXem mục dưới; access (tùy chọn) trên invite
Không gian dự ánHạn mức / Thống kê / Nhật kýset_budget, stats, activity_listid_base, budget / period / limit+offset
Không gian dự ánNâng cao: action tùy chỉnhaction bất kỳaction + field tùy chọn

Worker Home feed không dùng Limit / After ID của thư viện media.

Tab Request vs Send: preview có thể hiện placeholder ({id_base}, gợi ý password) khi ô trống; Send chỉ gửi giá trị đã điền. set_password luôn gửi key password.

Kick thành viên (Mode B) ​

json
{
  "action": "member_kick",
  "id_base": "<id_base>",
  "user_id": 75965,
  "language": "vi"
}

Mời thành viên (Mode B) ​

json
{
  "action": "invite",
  "id_base": "<id_base>",
  "identifier": "username",
  "role": "member",
  "access": "view",
  "scopes": { "...": "copy JSON từ Network dealer theo role" },
  "language": "vi"
}

Gateway default access nếu bỏ trống: member → view, mod/admin → edit.

Thu hồi lời mời ​

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

action chưa typed (pass-through) ​

Gateway đã typed toàn bộ bảng action (list … activity_list, gồm set_password). Action upstream mới chưa có trong OpenAPI có thể forward qua JSON capture. Playground: Nâng cao: action tùy chỉnh; flow chuẩn dùng worker riêng.

project_id trên feed/job ​

Dùng id_base từ list/get làm project_id (newfeeds, job, library). Project mặc định: id_base = "default".

Credit vs hạn mức ​

Số dư tài khoảnVí user — không tự trừ khi tạo job
budget (set_budget)Trần dự án được dùng
credit_balanceSố dư chi tiêu trên dự án (thường 0 đến khi nạp pool)
Credit poolsTab Ngân sách — list, create, deposit (Bơm), delete, ledger, share credit

Job/media thường trừ pool dự án khi share credit bật, không trừ thẳng ví menu.

Tab Media (modal dự án) ​

Tab Media (Ảnh / Video / Audio / Music) không gọi ai-projects. Scope là UUID dự án (id_base từ list).

Ảnh & video (files-manager) ​

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

FieldBắt buộcGhi chú
projectcóUUID dự án (không dùng project_id ở đây)
media_typecóimage hoặc video
statuskhôngUI dealer gửi ready
signed_previewskhôngtrue — URL preview trong data.items[]
limitkhôngUI 30
offsetkhôngPhân trang

Response: data.items[] (id_hash, media_type, preview.url, original_name, status, …), limit, offset.

Mode B: POST {gateway}/gateway/files-manager JSON. Playground: Media dự án (ảnh / video).

Dealer có thể gọi thêm POST /ai/images hoặc POST /ai/videos + project_id — capture thường data: []; grid UI dùng files-manager.

Ô Tìm kiếm: lọc phía client — payload files-manager list không thêm field search; lọc data.items[] (vd. original_name).

Audio ​

POST https://api.gommo.net/ai/audio — tab Audio:

FieldBắt buộcGhi chú
project_idcóUUID dự án
action_typecóget.list (modal đã verify; không nhầm TTS getLists)

Mode B: POST {gateway}/gateway/project-media/audio. Playground: Media dự án (audio list).

Music ​

POST https://api.gommo.net/api/apps/go-mmo/ai_musics/getAll (form):

FieldBắt buộc
project_idcó
domain, access_token, devicecó

Mode B: POST {gateway}/gateway/project-media/music. Playground: Media dự án (music getAll).

Khác library user (/ai/library/musics) và API tạo job music.

Pool & share credit ​

Chi tiết: Credit pools — create, deposit (Bơm), delete, ledger, set_share_credit. deposit: ví ≥ amount + 100k reserve.

Chưa document ​

Upload trên tab Media (ngoài list) — capture riêng.