Reference ng server
Server API
Kopya ang pahina
Ang API app ang iyong sariling server calls gamit ang kanyang secret key. I-verify ang mga sesyon, listahan ang mga produkto, kumpirmahin, ipakita at refund ang mga gastos, bayaran ang mga reward mula sa iyong pool, ipadala ang mga notification, tingnan ang ads at listahan ang mga pampublikong talahanayan.
#Mga pangunahian
| Base address | https://api.lialabs.org/api/apps/v1 |
| Pagsusuri | Authorization: Bearer <your key>, ang iyong test key (lia_test_…) o live key (lia_live_…) |
| Mga katawan | JSON, kasama Content-Type: application/json |
| Mga halaga | Sa $LIA, bilang mga numero, para sa 6 decimal places |
| Mga oras | Mili segundo mula 1970 (UTC) |
Tawagan ito lamang mula sa iyong server. Ang iyong key ay isang lihim: huwag ilagay ito sa iyong pahina.
curl https://api.lialabs.org/api/apps/v1/pool \
-H "Authorization: Bearer $LIA_KEY"Isang maliit na tulong na ginagamit sa mga halimbawa sa ibaba:
const LIA = "https://api.lialabs.org/api/apps/v1";
export async function lia(method, path, body) {
const res = await fetch(LIA + path, {
method,
headers: { Authorization: `Bearer ${process.env.LIA_KEY}`, "Content-Type": "application/json" },
body: body === undefined ? undefined : JSON.stringify(body),
});
const data = await res.json();
if (!res.ok) throw Object.assign(new Error(data.error), { status: res.status, data });
return data;
}#Mga key at mga mode
Isang key lamang ay nakikita ang kanyang sariling app, at lamang ang kanyang sariling mode: ang test key nakikita ang test sessions, charges, players at ads; ang live key nakikita ang live ones. Ang isang bagay mula sa ibang mode ay not_found (o valid: false. Tingnan Pagsusulit at live.
#Mga error
Ang mga error ay sumasagot sa isang 4xx status at isang body na may isang error kodigo, minsan kasama pa ang higit pang mga field:
{ "error": "pool_empty", "pool": 3.5 }| Katayuan | Code | Kailan |
|---|---|---|
| 401 | bad_key | Wala pang key, isang key sa maling anyo, isang di kilalang key, isang live key habang ang iyong app ay hindi'hindi maaabot, o anumang key habang ito'ang pay sheet |
Bawat endpoint ay nagsasabi sa kanyang sarili. Ang bawat code ay nasa Mga code ng error.
#Mga session
#POST/session/verify
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/session/verify' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"session": "lias_example_session"
}'Nagsusuri ng isang session token mula Lia.init() o Lia.session(), at ipapahayag sa iyo kung sino ito.
POST /api/apps/v1/session/verify
Authorization: Bearer lia_live_…
Content-Type: application/json
{ "session": "lias_eyJhcHAiOi…" }| Kampo | Uri | |
|---|---|---|
session | string | Ang token mula sa pahina. |
Mga sagot 200 sa anumang paraan:
{ "valid": true, "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "mode": "live", "exp": 1761998400000 }{ "valid": false }Ang isang token ay valid kapag Lia ay nagsiguro nito, ito'para sa iyong app at iyong key's mode, at wala itong'hindi natapos (15 minuto pagkatapos ito ay ginawa).
#Mga Produkto
#GET/products
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/products' \
--header "Authorization: Bearer $LIA_KEY"Ano ang inaabot ng iyong app, sa mga presyo sa Lia's records. Lamang ang aktibong mga produkto, pinaka-mura unang.
{
"products": [
{ "id": "extra-lives", "name": "3 extra lives", "price": 5, "active": true },
{ "id": "gold-pack", "name": "Gold pack", "price": 25, "active": true }
]
}#Mga singil
Isang charge ay isang pagbabayad sa Lia's pay sheet. Tingnan Payments.
Ang object ng bayad:
| Kampo | Uri | |
|---|---|---|
id | string | Like ch_9b1f…. |
playerId | string | Sino ang nagbayad. |
productId | string | Ano ang kanilang binayaran. |
amount | bilang | Ano ang kanilang binayaran, sa $LIA. |
status | string | paid, delivered o refunded. |
mode | string | test o live. |
createdAt | bilang | Kailan ito binayaran. |
deliveredAt | bilang o null | Kailan mo ito inilipat. |
refundedAt | bilang o null | Kailan ito ibinalik. |
#GET/charges/:id
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/charges/id_example' \
--header "Authorization: Bearer $LIA_KEY"Ito ba ay totoong charge, na bayad, at saan? Suriin ang lugar na ito bago magpadala: huwag kailanman kumuha ng pahina'naka-bukas o isang webhook'ang salitang para dito.
{
"charge": {
"id": "ch_9b1f4c2e7a0d5b8f3e6a1c4d",
"playerId": "p_3f9c0a6d1b2e4f5a6b7c",
"productId": "extra-lives",
"amount": 5,
"status": "paid",
"mode": "live",
"createdAt": 1761998400000,
"deliveredAt": null,
"refundedAt": null
}
}| Katayuan | Code | Kailan |
|---|---|---|
| 404 | not_found | Wala pang ganitong bayad para sa iyong app sa iyong key's mode. |
#POST/charges/:id/deliver
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/charges/id_example/deliver' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Idempotency-Key: example-request-1'Nakatanggap ng pagbabayad, isang beses na ikaw'nakatanggap ng bagay na binili ng tao. Maaaring iulit: ang pagpapadala ng isang napadala na singil ay walang pagbabago at sumasagot nang pareho. Walang katawan.
{ "charge": { "id": "ch_9b1f…", "status": "delivered", "deliveredAt": 1761998405000, "…": "…" } }| Katayuan | Code | Kailan |
|---|---|---|
| 404 | not_found | Wala pang ganitong bayad sa iyong key's mode. |
| 409 | refunded | Ito ay binawi, kaya hindi'hindi ipadala ito. Ang body ay may charge din. |
#POST/charges/:id/refund
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/charges/id_example/refund' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Idempotency-Key: example-request-1'Ibinabalik ang $LIA sa tao, kapag maaari mo'hindi ipadala ito pa rin. Gumagana sa isang bayad o isang napadala na singil. Maaaring iulit: pagbabawiin ang isang nabawi na singil ay sumagot nito at walang ibang pagbabayad. Walang body.
{ "charge": { "id": "ch_9b1f…", "status": "refunded", "refundedAt": 1761998410000, "…": "…" } }Ang buong presyo ay bumabalik sa tao'na balance, sa live mode, mula sa Lia'ang napatigil. charge.refunded ang webhook ay ipinadala.
| Katayuan | Code | Kailan |
|---|---|---|
| 404 | not_found | Wala pang ganitong bayad sa iyong key's mode. |
#Punsiyon
Tingnan Punsiyon pools.
#POST/rewards
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/rewards' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"playerId": "player_example",
"amount": 1,
"key": "reward-example-1",
"reason": "Level completed"
}'Pays a player mula sa iyong app's reward pool, isang beses bawat key.
POST /api/apps/v1/rewards
Authorization: Bearer lia_live_…
Content-Type: application/json
{
"playerId": "p_3f9c0a6d1b2e4f5a6b7c",
"amount": 25,
"key": "tournament-2026-11-01:p_3f9c0a6d1b2e4f5a6b7c",
"reason": "Weekly tournament, 1st place"
}| Kampo | Uri | |
|---|---|---|
playerId | string | Ang manlalaro para magbayad. |
amount | bilang | Sa $LIA, higit sa 0 at sa pinakamalaki 10,000, para sa 6 decimal places. |
key | string | Ang iyong, 1 hanggang 128 ng mga titik, mga numero, _, ., : at -. Ang isang key bayad isang beses, kahit kailan. Walang ito, ang Idempotency-Key ang header ay ginagamit. |
reason | string | Pangkatawan, hanggang 80 mga karakter (mas mahaba ay tinatanggal). Ipapakita sa player's activity sa ilalim ng iyong app's pangalan. |
Bayad:
{ "status": "paid", "amount": 25, "pool": 975 }Ang pareho na key ay walang anumang pagbabayad at sumasagot sa kung ano ang unang nagbayad:
{ "status": "duplicate", "amount": 25, "pool": 975 }pool ay ano's natitira sa iyong pool pagkatapos nito. Sa mode ng pagsubok ang reward ay kathang-isip: ang pool ay wala'ginamit at ang araw-araw na limitasyon ay hindi't ipatupad.
| Katayuan | Code | Kailan |
|---|---|---|
| 400 | bad_amount | amount ay hindi't isang numero na mas mataas sa 0 at hanggang 10,000. |
| 400 | bad_key_field | key ay nawawala o hindi nasa tamang anyo. |
| 404 | unknown_player | Wala pang ganitong player sa iyong app. |
| 409 | pool_empty | Ang pool ay hindi'hindi panatilihin amount. Ang body ay may pool, ano's natitira. |
| 429 | daily_limit | Ito ay maglalabas ng manlalaro sa labas ng iyong app'na araw na limitasyon bawat manlalaro (sa $LIA, bawat UTC araw). Ang body ay may dailyCapPerPlayer. |
A reward.paid ang webhook ay ipinadala para sa bawat reward na ibinayad (hindi para sa mga duplicate).
#GET/pool
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/pool' \
--header "Authorization: Bearer $LIA_KEY"Ano's natitira sa iyong reward pool, at ang pinakamalaking kahon na maaaring makuha ng isang manlalaro sa isang araw.
{ "balance": 975, "dailyCapPerPlayer": 50, "mode": "live" }dailyCapPerPlayer ay 0 nangyari's wala pang araw-araw na limitasyon. balance ay ang live pool, din kung magpapakita ka gamit ang iyong test key.
#Mga Notification
Tingnan Mga Notification.
#POST/notifications
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/notifications' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"playerId": "player_example",
"text": "Ready for another round?",
"startParam": "round_2"
}'Nagpapadala ng isang notification sa isang manlalaro na nagpahintulot dito. Nakikita ito sa ilalim ng iyong app's pangalan at buksan ang iyong app kasama ang iyong startParam.
POST /api/apps/v1/notifications
Authorization: Bearer lia_live_…
Content-Type: application/json
{ "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "text": "It's your move against @amara.", "startParam": "match-8k2d" }| Kampo | Uri | |
|---|---|---|
playerId | string | Sino ang dapat paunawin. |
text | string | 1 hanggang 180 karakter. Ang mga espasyo at mga bagong linya ay magiging isang espasyo. Walang mga link, numero ng telepono o mga salita na ginagamit sa mga scam. |
startParam | string | Pangkatawan. 1 hanggang 64 ng mga letra, digit, _ at -. Ang iyong pahina kumuha nito mula sa Lia.startParam. |
Nakapadala:
{ "sent": true, "pushed": true }pushed ay false kapag ito ay nakaabot sa Lia'na bell ngunit hindi ang telepono (ang tao ay may Lia's pushes off).
| Katayuan | Code | Kailan |
|---|---|---|
| 400 | bad_text | Empty, sobra na, o hindi pinapayagan. Kapag ito'kung ano ang sinasabi ng teksto, problem ay link, phone o scam. |
| 400 | bad_start_param | startParam ay hindi'hindi nasa tamang anyo. |
| 403 | notifications_off | Ang iyong app ay maaaring hindi magpadala ng mga notification (ang iyong araw-araw na bilang ay 0). |
| 403 | not_allowed | Ang manlalaro ay wala't pinahintulutan ang iyong app'mga notification, o pinigil nila. |
| 404 | unknown_player | Wala pang ganitong player, o hindi isang key na iyong's mode ay nakarating (isang test key lamang nakarating sa iyong testers). |
| 429 | rate_limited | Nakarating ang isang limitasyon. Para sa iyong app'naka-own limits ang body ay may retryAt, kung kailan maaari mong subukan muli. |
#Mga ad
Tingnan Mga ad.
#POST/ads/verify
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/ads/verify' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"adId": "ad_example"
}'Nakapanood ba talaga ang ad, at sino ang napanood nito? Suriin bago magbigay ng anumang bagay para sa isang rewarded video.
POST /api/apps/v1/ads/verify
Authorization: Bearer lia_live_…
Content-Type: application/json
{ "adId": "ad_8e1c4b0f2a9d47c6b3e15a07" }{ "adId": "ad_8e1c4b0f2a9d47c6b3e15a07", "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "format": "rewarded", "watched": true, "watchedAt": 1761998400000 }| Kampo | Uri | |
|---|---|---|
adId | string | Ang id mula Lia.showAd(). |
playerId | string | Ang manlalaro kung saan ito ipinakita. Suriin ito'ang nagsasabi. |
format | string o null | "rewarded", "rewardedInterstitial", "interstitial", "banner" o "native" (null para sa ads mula pa noong SDK 1.7). Lamang "rewarded" at "rewardedInterstitial" ay karapat-dapat sa isang reward. |
watched | boolean | Napanood hanggang sa dulo (o, para sa isang interstitial, banner o native ad, ipinakita). |
watchedAt | bilang o null | Kailan. |
Magtanong gamit ang key ng mode kung saan ang ad ay ipinakita: isang test mode ad (palaging isa sa Google'mga test ads, di kailanman kabilang sa kita) ay not_found sa live key.
Lia ay di kaya'hindi maaabot, o i-mark ang isang ad bilang ginamit kapag iyong kinumpirma ito, kaya magbayad bawat adId isang beses ang iyong sarili (gamit ad:<adId> bilang ang key na parangal).
| Katayuan | Code | Kailan |
|---|---|---|
| 404 | not_found | Wala pang ganitong ad para sa iyong app sa iyong key's mode. |
#Lobby
Pangkabahayan na mga mesa na maaaring mahanap ng sinuman sa Lia. Lia ang nagsisiguro lamang ng pag-lista: ang iyong server ang gumaganap sa mesa. Tingnan Pangkabahayan na mga mesa.
Ang talahanayan object:
| Kampo | Uri | |
|---|---|---|
id | string | Ang iyong talahanayan'ng in |
game | string | Ang iyong app'ng in |
host | object | { name }: ang host's Lia username. |
seats, taken | bilang | Kabuuang upuan, at kinuha. |
title | string o null | Nakakatulad sa lahat ng mga bagay na binabasa ng mga tao sa Lia. |
stake, pot | bilang | Sa LIA, para sa ipakita. |
createdAt, expiresAt | bilang |
#POST/lobby/tables
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/lobby/tables' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"tableId": "table_example",
"hostPlayerId": "player_example",
"seats": 2,
"taken": 1,
"title": "A friendly game",
"stake": 1,
"pot": 1,
"expiresIn": 1800
}'Nag-list ng isang table na'naghihintay para sa mga manlalaro, o i-update ang listing nito (nagtatagpo ito ng kaniyang lugar sa listahan). I-list ang muli kung ang mga upuan ay nagbago.
{ "tableId": "t8k2d", "hostPlayerId": "p_3f9c0a6d1b2e4f5a6b7c", "seats": 2, "taken": 1, "title": "Quick game", "stake": 5, "expiresIn": 900 }| Kampo | Uri | |
|---|---|---|
tableId | string | Ang iyong, 1 hanggang 57 ng mga titik, mga numero, _ at - (sapat na maikli para makasunod sa startParam lobby-<id>). |
hostPlayerId | string | Ang manlalaro na nagmamay-ari nito. |
seats | bilang | Pangkatawan. 2 hanggang 10, 2 nang default. |
taken | bilang | Opisyal. Ang mga upuan ay puno, ang host's kasama: 1 sa seats, 1 nang default. |
title | string | Pangkatawan, hanggang 40 mga karakter. |
stake, pot | bilang | Opisyal. Sa LIA, 0 hanggang 10,000, na nakalista lamang. Lia hindi'hindi panatilihin o ilipat: mag-stake ng singil gamit ang iyong sariling produkto. |
expiresIn | bilang | Opisyal. Ang bilang ng segundo na nagmamay-ari ang listing, 60 hanggang 3600, 1800 nang default. |
{ "listed": true, "tableId": "t8k2d", "seats": 2, "taken": 1, "expiresAt": 1761999300000 }Kailan taken nababawas seats, ang table ay tinanggal mula sa listahan kaysa dito, at ang sagot ay { "listed": false }.
| Katayuan | Code | Kailan |
|---|---|---|
| 400 | bad_table_id, bad_seats, bad_taken, bad_title, bad_amount, bad_expires_in | Isang field ay hindi'hindi magkasya. |
| 404 | unknown_player | Wala pang ganitong host sa iyong app. |
| 429 | too_many_tables | Ang host ay may 3 bukas na mga table sa iyong app. Ang body ay may max. |
#GET/lobby/tables
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request GET 'https://api.lialabs.org/api/apps/v1/lobby/tables' \
--header "Authorization: Bearer $LIA_KEY"Ang iyong app'naka-bukas ang mga table sa iyong key's mode, pinakabago muna, hanggang 200: bawat host's, na may mga bloke na inilagay sa gilid (na)'para sa bawat manlalaro'ang sariling wallet.
{ "tables": [{ "id": "t8k2d", "game": "your-app", "host": { "name": "amara" }, "seats": 2, "taken": 1, "title": "Quick game", "stake": 5, "pot": 0, "createdAt": 1761998400000, "expiresAt": 1761999300000 }] }#POST/lobby/tables/:id/sit
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request POST 'https://api.lialabs.org/api/apps/v1/lobby/tables/id_example/sit' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example-request-1' \
--data-raw '{
"playerId": "player_example"
}'Nakatayo ang isang manlalaro sa isang listahang mesa, bago ang iyong server ay pumayag sa kanila. Ang Lia ay tumanggi sa mga taong pinagbawal ng host o ang host ay pinagbawal. Kapag ang huling upuan ay kinuha, ang mesa ay lumabas sa listahan.
{ "playerId": "p_8a1e0c4d2b7f9e3a5c6d" }{ "seated": true, "taken": 2, "seats": 2, "full": true }| Katayuan | Code | Kailan |
|---|---|---|
| 404 | unknown_player | Wala pang ganitong player sa iyong app. |
| 404 | not_found | Ang talahanayan ay hindi'hindi naka-lista, natapos, o ang host at ang manlalaro ay nagsalang sa isa't isa. |
| 409 | full | Bawat upuan ay nakuha. |
| 409 | own_table | Ang manlalaro ay ang host. |
#DELETE/lobby/tables/:id
# Set LIA_KEY on your server. Reuse Idempotency-Key only for the same request.
curl --request DELETE 'https://api.lialabs.org/api/apps/v1/lobby/tables/id_example' \
--header "Authorization: Bearer $LIA_KEY" \
--header 'Idempotency-Key: example-request-1'Kumukuha ng isang talahanayan mula sa listahan, kapag ang kanyang laro ay nagsisimula o natatapos. Maaaring i-retry.
{ "removed": true }removed ay false kapag ito ay hindi'hindi naka-lista.
#Nag-uulit
Ipadala ang isang Idempotency-Key ang header kasama ang bawat POST, at ang parehong isa naman sa bawat pagsubok ng kahilingan na ito. Ang isang pagsubok ay kailanman ay gagawin ang pareho nang dalawang beses, at magbibigay ng parehong sagot tulad ng unang kahilingan.
POST /api/apps/v1/notifications
Authorization: Bearer lia_live_…
Content-Type: application/json
Idempotency-Key: 6f1c2a9e-0b7d-4c35-9e1a-2d8f4b7c3a10
{ "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "text": "It's your move." }- Anumang key na gusto mo, 1 sa 128 ng mga letra, numero,
_,-,.at:. Isang UUID bawat operasyon ay tama. - Ang unang kahilingan ay tumatakbo. Kung nakakamit ang pagkakataon (2xx), ang kanyang sagot ay naiimbak para sa 24 oras, at ang isang retry na may parehong key at parehong body ay makakakuha nito ulit, kasama ang header
Idempotent-Replayed: true. - Ang isang pagtanggi ay walang naiiwan (4xx o 5xx), kaya mo ito ay ayusin at subukan muli gamit ang parehong key.
- Ang pareho na key na may iba't ibang body ay
422 idempotency_key_reused. - Ang pareho na key habang ang unang isa ay pa rin tumatakbo ay
409 idempotency_key_in_usekasamaRetry-After: 1. Retry, at makakatanggap ka ng unang isa's sagot. - Ang mga key ay ang iyong app'naka-own, at live at test ay naghihiwalay sa kanilang sarili. Ang parehong key sa iba pang endpoint ay isang iba pang key.
Wala ang header, ang mga endpoint ay patuloy na ligtas na muling ipakita: ang mga pagbasa ay walang pagbabago, ang paghahatid at pagbabalik ay ligtas na muling gawin, at ang mga parangal ay binabayaran nang isang beses bawat key. Ang mga notification ay ang exception: walang header, ang isang retry ay magpapadala nito muli.
Awtomatikong isinalin. Ang English ay ang source of truth. Basahin sa Ingles