1 USD ≈ 27,000 credits · display only
Reference rate may change over time.
1 USD ≈ 27,000 credits · display only
Reference rate may change over time.
The dealer Account → Transfer Money screen sends credits to another user’s username on the same registration domain. Integrators use the same upstream path with the signed-in user’s access_token.
Use your registration domain in the form body — not the API hostname.
Not merchant send
POST /admin/credits/send uses the merchant token server-side (topup/ops). User transfer uses the end-user session token. See Admin (server-only).
Playground & Profile
Playground — Home feed → Platform → Transfer credits when running npm run docs:stack. Profile → Account has the same flow when signed in. Transfers are real and cannot be undone upstream.
HTTP 200 with business error
Upstream often returns HTTP 200 with { "error": 1, "message": "…" }. Treat error (non-zero) or success: false as failure even when the status code is 200.
| Rule | Value |
|---|---|
| Min per transfer | 10,000 credits |
| Max per transfer | 20,000,000 credits |
| Remaining balance after transfer | Must stay > 500,000 credits in the sender wallet |
If the sender’s balance is too low, upstream returns a localized message (Vietnamese in many captures) with the 500k rule.
Preflight (integrator): before calling transfer, ensure sender balance ≥ value + 500_001 credits (strictly more than 500k after deducting value).
POST https://api.gommo.net/api/apps/go-mmo/users/sendBalances
Content-Type: application/x-www-form-urlencoded
| Field | Required | Notes |
|---|---|---|
access_token | yes | Sender session token |
domain | yes | Registration domain |
type | yes | Dealer UI uses credit_ai for AI wallet credits |
value | yes | Integer credits to send |
username | yes | Recipient username |
message | yes | Required note (dealer UI) |
language | optional | e.g. EN, VI |
device_id, device_name, device_info | optional | Same pattern as login / change password |
PowerShell (replace domain; use a real token only in a secure session):
$domain = $env:GOMMO_API_DOMAIN
if (-not $domain) { throw 'Set GOMMO_API_DOMAIN to your registration domain' }
$h = @{ 'Content-Type' = 'application/x-www-form-urlencoded' }
$body = "access_token=$env:TOKEN&domain=$domain&type=credit_ai&value=10000&username=recipient_username&message=Transfer+note&language=EN"
Invoke-RestMethod -Method Post -Uri 'https://api.gommo.net/api/apps/go-mmo/users/sendBalances' -Headers $h -Body $bodycurl.exe (Windows — set env vars first):
curl.exe -X POST "https://api.gommo.net/api/apps/go-mmo/users/sendBalances" ^
-H "Content-Type: application/x-www-form-urlencoded" ^
--data-urlencode "access_token=%TOKEN%" ^
--data-urlencode "domain=%REGISTRATION_DOMAIN%" ^
--data-urlencode "type=credit_ai" ^
--data-urlencode "value=10000" ^
--data-urlencode "username=recipient_username" ^
--data-urlencode "message=Transfer note" ^
--data-urlencode "language=EN"Business rejection (HTTP 200, from dealer captures):
{
"error": 1,
"message": "…must keep more than 500,000 credits…",
"runtime": 0.05
}Success envelopes vary by upstream version — treat error (non-zero) or success: false as failure. On success, read message or balance fields if present.
POST {gateway}/gateway/credits/transfer — Bearer required; JSON body:
{
"username": "recipient_username",
"value": 10000,
"message": "Transfer note",
"type": "credit_ai",
"language": "EN",
"device_id": "…",
"device_name": "Browser 1",
"device_info": "{\"device_type\":\"desktop\"}"
}Server fills access_token and domain from Bearer + tenant. Default type is credit_ai when omitted. Optional device_* match login; Playground sends browser device fields in the JSON body.
error: 1 on HTTP 200).{ success: false, code: "UPSTREAM_ERROR", raw: { http_status, body? } }.OpenAPI: openapi.yaml — /gateway/credits/transfer.
SDK: @ai-gateway/client — auth.transferCredits() (Gommo form or gateway JSON). See SDK authentication.
→ Transaction history · Session devices · Support tickets · Partner program · Creator rewards · Change password · Sign up · Endpoint map · Deploy → Self-host (advanced)