Get AceDataCloud Platform Service Application List
Returns all services applied for by the current account along with their remaining quota, payment status, whether disabled, and other core statuses. The frontend pages "My Subscriptions" and "My Services" as well as scheduled balance monitoring scripts are based on this API.
ℹ️ This API belongs to the AceDataCloud Platform Management API, with the unified prefix
https://platform.acedata.cloud/api/v1/. For the complete API index, see Get AceDataCloud Platform Document List.
¶ API Overview
| Item | Content |
|---|---|
| Method | GET |
| URL | https://platform.acedata.cloud/api/v1/applications/ |
| Auth | ✅ Requires account token |
¶ Authentication Instructions (How to Obtain Account Token)
Request header:
Authorization: Bearer platform-v1-92eb****629c
How to obtain the account token:
- One-click creation in Console: Log in to AceDataCloud Platform → Account Token Console → Click the "Create" button.
- API Creation: See Manage AceDataCloud Platform Account Tokens.
¶ Required Query Parameters
⚠️ The list API performs permission checks per object on paginated results. For a normal account, if
?user_id=is not provided, the first object not belonging to you will be rejected with a403 permission_denied. It is recommended to directly pass?user_id=me(the server will automatically expand it to the current account's UUID), or explicitly pass a UUID. Super administrators can omituser_idto view the entire table or pass other users' UUIDs to view their applications.
How to get an explicit user_id:
- Open https://auth.acedata.cloud/user/profile in a browser; the full UUID is displayed at the top of the page.
- Or obtain it from the
user_idfield in the response when creating an account token.
¶ Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
user_id |
UUID or me |
⚠️ | — | Whose applications to view. Required for normal accounts; me means current account; super admins can omit. Can be passed multiple times. |
affiliation |
string | No | owner |
Effective only when user_id is provided. owner (default) shows only those created by self; granted shows those created by others and granted you Credential; can pass both affiliation=owner&affiliation=granted to view all. |
service_id |
UUID | No | — | Filter by service |
paid |
boolean | No | — | true to view only paid; false to view unpaid (including free trial) |
disabled |
boolean | No | — | true to view only disabled; false to view enabled |
scope |
string | No | — | Individual / Team |
type |
string | No | — | Usage (pay-as-you-go) / Subscription |
tag |
string | No | — | Filter by tag |
expired |
boolean | No | — | true to view only expired (subscription type) |
low_balance |
boolean | No | — | true to view only those with low balance alerts |
limit |
integer | No | 10 | Number of items per page, max 100 |
offset |
integer | No | 0 | Offset |
ordering |
string | No | — | Sort field, prefix - for descending. Commonly used: -created_at, -remaining_amount |
¶ Request Examples
¶ cURL
# Recommended usage: user_id=me represents the current account, no need to look up UUID in advance
curl 'https://platform.acedata.cloud/api/v1/applications/?user_id=me&limit=20' \
-H 'accept: application/json' \
-H 'authorization: Bearer platform-v1-92eb****629c'
# View only paid services
curl 'https://platform.acedata.cloud/api/v1/applications/?user_id=me&paid=true' \
-H 'authorization: Bearer platform-v1-92eb****629c'
# Low balance alerts
curl 'https://platform.acedata.cloud/api/v1/applications/?user_id=me&low_balance=true' \
-H 'authorization: Bearer platform-v1-92eb****629c'
# View only applications shared by others to me (I have Credential but am not the Owner)
curl 'https://platform.acedata.cloud/api/v1/applications/?user_id=me&affiliation=granted' \
-H 'authorization: Bearer platform-v1-92eb****629c'
# View both my own and those shared to me
curl 'https://platform.acedata.cloud/api/v1/applications/?user_id=me&affiliation=owner&affiliation=granted' \
-H 'authorization: Bearer platform-v1-92eb****629c'
¶ Python
import requests
PLATFORM_TOKEN = "platform-v1-92eb****629c"
resp = requests.get(
"https://platform.acedata.cloud/api/v1/applications/",
headers={
"accept": "application/json",
"authorization": f"Bearer {PLATFORM_TOKEN}",
},
# user_id=me is syntactic sugar for the current account; default affiliation=owner.
# To view those shared to me, pass affiliation=granted;
# To view all, pass ["owner", "granted"].
params={"user_id": "me", "limit": 100},
timeout=10,
)
data = resp.json()
print(f"You have applied for {data['count']} services")
for app in data["items"]:
status = "✅" if app["paid"] else ("🆓" if app["remaining_amount"] > 0 else "❌")
print(f" {status} {app.get('service', {}).get('title', app['service_id']):30s} "
f"Balance {app['remaining_amount']:.4f}")
¶ Node.js
const url = new URL('https://platform.acedata.cloud/api/v1/applications/')
url.searchParams.set('user_id', 'me')
url.searchParams.set('limit', '100')
// Multiple values: url.searchParams.append('affiliation', 'owner'); url.searchParams.append('affiliation', 'granted')
const r = await fetch(url, {
headers: { authorization: 'Bearer platform-v1-92eb****629c' },
})
const { count, items } = await r.json()
console.log(`Total applied services: ${count}`)
¶ Response Example (HTTP 200)
{
"count": 14,
"items": [
{
"id": "82f57141-2323-4453-8730-60f7d833a2da",
"service_id": "38ecf158-36f2-42f2-8e7f-6786cdfc2452",
"remaining_amount": 100.0,
"used_amount": 12.34,
"paid": true,
"user_id": "89518d07-5560-4b05-92c1-667f3ddf6a4b",
"disabled": false,
"allow_consume_global": false,
"scope": "Individual",
"type": "Usage",
"expired_at": null,
"tags": null,
"metadata": null,
"client_ip": null,
"client_fingerprint": null,
"created_at": "2026-04-26T07:52:27.462400Z",
"updated_at": "2026-04-26T08:42:13.123456Z",
"service": {
"id": "38ecf158-36f2-42f2-8e7f-6786cdfc2452",
"alias": "openai",
"title": "OpenAI",
"type": "Api",
"unit": "Credit"
}
}
]
}
¶ Response Fields Description
| Field | Type | Description |
|---|---|---|
id |
UUID | Application ID |
service_id |
UUID | Associated service ID |
service |
object | Simplified associated service object (id/alias/title/type/unit) |
remaining_amount |
number | Remaining available quota (unit as per service.unit, e.g., Credit, Count, Token) |
used_amount |
number | Total consumed quota |
paid |
boolean | Whether the initial payment is completed. Free quota granted on first application does not count as paid |
user_id |
UUID | Owner user ID |
disabled |
boolean | Whether disabled. When true, business APIs return 403 |
allow_consume_global |
boolean | Whether allowed to consume from the account's global balance pool (if enabled, even if this Application's balance is exhausted, global recharge balance can still be consumed) |
scope |
string | Individual / Team |
type |
string | Usage (pay-as-you-go) / Subscription (expires at expired_at) |
expired_at |
string | null | Expiration time for subscription type |
tags |
array | null | User-defined tags |
metadata |
object | null | User-defined metadata |
client_ip |
string | null | Application source IP |
client_fingerprint |
string | null | Browser fingerprint |
created_at |
string | Creation time |
updated_at |
string | Last balance change time |
¶ Error Handling
| HTTP | code | Meaning |
|---|---|---|
| 401 | not_authenticated |
Missing account token |
| 403 | permission_denied |
Normal account did not pass ?user_id=, or passed another user's user_id without being a super administrator |
¶ Useful Tips
user_id=meis the preferred usage — no need to look up UUID in advance; the server automatically expands it to the current account.affiliationonly takes effect whenuser_idis passed; super administrators can see the entire table without passinguser_id.paid=falsebutremaining_amount>0means you are still using the free quota granted on first application and have not recharged; you must recharge after it is used up.- Balance monitoring: use
?user_id=me&low_balance=trueto quickly fetch all services needing recharge; combined with webhook or email, automatic alerts can be implemented. - If a service does not appear in the list, it means it has not been applied for yet — first call Create AceDataCloud Platform Service Application.
