Lia开发者

服务器参考

的 API 你的应用自己的服务器使用其密钥。验证会话,列出产品,确认,交付和退款费用,从你的资金池支付奖励,发送通知,检查广告并列出公共表格。

#基础

基础地址https://api.lialabs.org/api/apps/v1
认证Authorization: Bearer <your key>,你的测试密钥(lia_test_…)或实时密钥(lia_live_…)
身体JSON,带有 Content-Type: application/json
金额在$LIA中,以数字形式,保留6位小数
时间自1970 以来的毫秒数(UTC)

仅从你的服务器调用它。你的密钥是秘密:永远不要把它放在你的页面中。

curl https://api.lialabs.org/api/apps/v1/pool \
  -H "Authorization: Bearer $LIA_KEY"

一个在下面示例中使用的较小帮助程序:

lia.js
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;
}

#密钥和模式

一个密钥只能看到它自己的应用,以及它自己的模式:测试密钥看到测试会话、付款、玩家和广告;生产密钥看到生产版本。来自其他模式的东西是 not_found (或 valid: false。参见 测试和上线.

#错误

错误以 4xx 状态响应,并且正文包含一个 error 代码,有时带有更多字段:

{ "error": "pool_empty", "pool": 3.5 }
状态代码何时
401bad_key没有密钥,形状错误的密钥,未知的密钥,在您的应用未处于活动状态时的活动密钥'不要直播,或者在它直播时按任何键'被暂停。

每个端点列出自己的。每段代码都在 错误代码.

#会话

#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"
}'
在游乐场中打开

检查一个会话令牌来自 Lia.init() 或 Lia.session(),并告诉你这是谁的。

POST /api/apps/v1/session/verify
Authorization: Bearer lia_live_…
Content-Type: application/json

{ "session": "lias_eyJhcHAiOi…" }
字段类型
session字符串页面上的代币。

答案 200 无论哪种方式:

{ "valid": true, "playerId": "p_3f9c0a6d1b2e4f5a6b7c", "mode": "live", "exp": 1761998400000 }
{ "valid": false }

一个令牌在Lia签名后有效,它'的你的应用和你的密钥'的模式,它没有'不要结束(15分钟后它被创建)。

#产品

#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"
在游乐场中打开

你的应用销售的内容,价格以 Lia 计价'的记录。仅显示活动产品,按价格从低到高。

{
  "products": [
    { "id": "extra-lives", "name": "3 extra lives", "price": 5, "active": true },
    { "id": "gold-pack", "name": "Gold pack", "price": 25, "active": true }
  ]
}

#费用

一个Lia上的一个付款。'的付款表格。参见 支付.

费用对象:

字段类型
id字符串点赞 ch_9b1f….
playerId字符串谁支付的。
productId字符串他们支付了什么
amount数字他们支付了什么,以 $LIA 计价。
status字符串paid, delivered 或 refunded.
mode字符串test 或 live.
createdAt数字当它被支付时。
deliveredAt数字或空值当你交付它时。
refundedAt数字或空值当它被退款时。

#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"
在游乐场中打开

这个费用是真实的、已支付的,属于谁?在交付之前,始终在此处检查:永远不要相信页面'或网络钩子'的词语。

{
  "charge": {
    "id": "ch_9b1f4c2e7a0d5b8f3e6a1c4d",
    "playerId": "p_3f9c0a6d1b2e4f5a6b7c",
    "productId": "extra-lives",
    "amount": 5,
    "status": "paid",
    "mode": "live",
    "createdAt": 1761998400000,
    "deliveredAt": null,
    "refundedAt": null
  }
}
状态代码何时
404not_found您的密钥中没有此费用'的模式。

#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'
在游乐场中打开

标记一次已交付的费用,一旦你'已经给了那个人他们购买的东西。可以重复:交付已交付的费用不会改变任何东西,并且答案相同。没有身体。

{ "charge": { "id": "ch_9b1f…", "status": "delivered", "deliveredAt": 1761998405000, "…": "…" } }
状态代码何时
404not_found您的密钥中没有此费用'的模式。
409refunded它已被退款,所以不要't 交付它。正文有 charge 也。

#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'
在游乐场中打开

当你可以的时候,把$LIA还给那个人't 交付他们购买的东西。适用于付费或已交付的费用。可以重复:退款已退款的费用会以它作为回答,并且不会支付更多。没有正文。

{ "charge": { "id": "ch_9b1f…", "status": "refunded", "refundedAt": 1761998410000, "…": "…" } }

全额退款给原支付人'的余额,在实时模式下,超出Lia'的一部分和你的份额。一个 charge.refunded 发送了网络钩子。

状态代码何时
404not_found您的密钥中没有此费用'的模式。

#奖励

查看 奖励池.

#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"
}'
在游乐场中打开

从您的应用支付给玩家'的奖励池,每个密钥一次。

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"
}
字段类型
playerId字符串玩家支付。
amount数字在$LIA中,大于0且最多为10,000,,保留6位小数。
key字符串您的,1到128的字母、数字, _, ., : 和 -。一个密钥只需支付一次,永远有效。没有它, Idempotency-Key 标题被使用。
reason字符串可选,最多 80 个字符(更长的会被截断)。在玩家中显示's 活动在你的应用下'的名字。

支付:

{ "status": "paid", "amount": 25, "pool": 975 }

相同的密钥再次支付 nothing 并用第一个支付的内容回答:

{ "status": "duplicate", "amount": 25, "pool": 975 }

pool 是什么'在您的奖励池中,测试模式下奖励是假的:池子不会'已使用且每日限额未't 应用。

状态代码何时
400bad_amountamount 是不't 一个大于 0 且不超过 10,000. 的数字
400bad_key_fieldkey 缺失或形状不正确。
404unknown_player您的应用中没有此玩家。
409pool_empty池没有'不要保持 amount。正文有 pool,什么'的左边。
429daily_limit这会将玩家带出您的应用'的每日限额,每位玩家(在$LIA中,每UTC天)。正文有 dailyCapPerPlayer.

A reward.paid 每当支付奖励时都会发送网络钩子(不包括重复项)。

#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"
在游乐场中打开

什么'在您的奖励池中,以及一天内一个玩家能从其中获得的最大值。

{ "balance": 975, "dailyCapPerPlayer": 50, "mode": "live" }

dailyCapPerPlayer 是 0 当它'的没有每日限制。 balance 是实时池,即使您使用测试密钥提问时也是如此。

#通知

查看 通知.

#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"
}'
在游乐场中打开

发送通知给允许它的玩家。它会显示在你的应用下'的名字并用你的 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" }
字段类型
playerId字符串通知谁。
text字符串1到180个字符。空格和换行符变为单个空格。没有链接、电话号码或用于诈骗的词语。
startParam字符串可选。1 到 64 个字母、数字, _ 和 -。您的页面从 Lia.startParam.

已发送:

{ "sent": true, "pushed": true }

pushed 是 false 当它到达Lia'的铃声但没有电话(该人有Lia'的推送关闭)。

状态代码何时
400bad_text空的,太长,或者不允许。当它'是文本所说的内容, problem 是 link, phone 或 scam.
400bad_start_paramstartParam 是不'不要在正确的形状中。
403notifications_off您的应用程序可能无法发送通知(其每日数量为 0)。
403not_allowed这个玩家没有't 允许你的应用'的通知,或者已停止它们。
404unknown_player没有此玩家,或者不是您的密钥'的模式达到(测试密钥只能达到你的测试者)。
429rate_limited达到了限制。对于你的应用'自己的限制有 retryAt,当您可能再次尝试时。

#广告

查看 广告.

#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"
}'
在游乐场中打开

此广告真的被观看了吗,是谁观看的?在为奖励视频提供任何内容之前请先检查。

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 }
字段类型
adId字符串ID 来自 Lia.showAd().
playerId字符串玩家看到它。检查它'是提问的人。
format字符串或空值"rewarded", "rewardedInterstitial", "interstitial", "banner" 或 "native" (在 SDK 1.7 之前的广告为 null)。只有 "rewarded" 和 "rewardedInterstitial" 值得奖励。
watched布尔值观看至结尾(或对于插页式、横幅或原生广告,显示)。
watchedAt数字或空值何时

使用广告显示时的模式密钥:测试模式广告(总是Google中的一个)'的测试广告(永远不会计入收益)是 not_found 到实时密钥。

Lia不能'不要在你验证广告时将其标记为已使用,因此每次支付 adId 一次你自己(使用 ad:<adId> 作为奖励密钥)。

状态代码何时
404not_found您的密钥中没有此广告'的模式。

#大厅

任何在 Lia 上的人都可以找到的公共表格。Lia 仅保留列表:你的服务器运行表格。参见 公共表格.

表格对象:

字段类型
id字符串您的桌子'的id。
game字符串您的应用程序'的id。
host对象{ name }: 主机's Lia 的用户名。
seats, taken数字总共的座位数,以及已占用的座位。
title字符串或空值像人们在Lia上阅读的其他内容一样过滤。
stake, pot数字在LIA中,用于显示。
createdAt, expiresAt数字

#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
}'
在游乐场中打开

列出一个桌位,'等待玩家,或更新其列表(它在列表中保持原位)。每当座位变化时,重新列出它。

{ "tableId": "t8k2d", "hostPlayerId": "p_3f9c0a6d1b2e4f5a6b7c", "seats": 2, "taken": 1, "title": "Quick game", "stake": 5, "expiresIn": 900 }
字段类型
tableId字符串您的,1到57的字母、数字, _ 和 - (短到足以适合 startParam lobby-<id>).
hostPlayerId字符串玩家主持它。
seats数字可选。2 到 10, 2 默认。
taken数字可选。座位已满,主持人'包含:1到 seats,默认为 1。
title字符串可选,最多 40 个字符。
stake, pot数字可选。在 LIA 中,0 到 10,000, 仅在列表中显示。Lia 不会'不要保持或移动它们:用你自己的产品收取押金。
expiresIn数字可选。列表持续时间,60 到 3600, 1800 默认。
{ "listed": true, "tableId": "t8k2d", "seats": 2, "taken": 1, "expiresAt": 1761999300000 }

何时 taken 达到 seats,表格将从列表中移除,答案是 { "listed": false }.

状态代码何时
400bad_table_id, bad_seats, bad_taken, bad_title, bad_amount, bad_expires_in一个字段不'不要适合。
404unknown_player您的应用中没有此主机。
429too_many_tables主机已经在你的应用中打开了3 张表格。正文有 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"
在游乐场中打开

您的应用程序'在你的密钥中打开表格'的模式,最新优先,最多200:每个主机',带有块被搁置(那'的每个玩家'自己的视图)。

{ "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"
}'
在游乐场中打开

将玩家安排在列出的桌子前,然后再让你的服务器让他们进入。Lia 拒绝主机阻止的人或阻止主机的人。当最后一个座位被占用时,桌子将从列表中移除。

{ "playerId": "p_8a1e0c4d2b7f9e3a5c6d" }
{ "seated": true, "taken": 2, "seats": 2, "full": true }
状态代码何时
404unknown_player您的应用中没有此玩家。
404not_found表格不是'不要列出,已结束,或者主持人和玩家互相屏蔽。
409full每个座位都被占用了。
409own_table玩家是主持人。

#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'
在游乐场中打开

当其游戏开始或关闭时,将表格从列表中取出。可以重复使用。

{ "removed": true }

removed 是 false 当它没有'不要列出。

#重试中

发送一个 Idempotency-Key 每个 POST,并在每次重试时再次使用同一个。这样重试就不会做任何事情两次,并且回答方式与第一次请求相同。

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." }
  • 任何你喜欢的密钥,1 到 128 个字母、数字, _, -, . 和 :。每个操作一个UUID是正确的。
  • 第一个请求运行。 如果成功 (2xx),其答案将保留 24 小时,并且使用相同的密钥和相同的内容体进行重试会再次获得该答案,带有该头部 Idempotent-Replayed: true.
  • 拒绝不会保留任何内容 (4xx 或 5xx),因此您可以修复原因并使用相同的关键字重试。
  • 相同的密钥,但不同的正文 是 422 idempotency_key_reused.
  • 相同的密钥,而第一个仍在运行 是 409 idempotency_key_in_use 与 Retry-After: 1。重试,你将获得第一个's 回答。
  • 密钥是您的应用'自己的,并且每个端点上的相同密钥是另一个密钥。

没有标头,大多数端点仍然可以安全重试:读取不会改变任何内容,交付和退款可以重复,每份奖励只支付一次 key。通知是例外:没有头信息,重试会再次发送通知。

自动翻译。英语是真实来源。 阅读英文

输入以搜索每一页、方法和端点。