API Reference
Search API keys
List API keys. Fields and permissions follow this gateway implementation.
Preview guide
Paste into an AI assistant to help with integration. Documentation and examples only; no real credentials.
Updated · Reviewed
Endpoint and authentication
GET https://api.tu-zi.com/api/token/search
Transport: json
Use an account system token and New-Api-User (account ID), or a valid site login session. Manage system tokens in account settings. Inference API keys are not substitutes.
Authorized OAuth access tokens are also supported; required scope: token:read
Authorization: Bearer YOUR_SYSTEM_TOKEN
New-Api-User: YOUR_USER_ID
Before running
Replace https://api.tu-zi.com with this site origin (do not append /v1 twice), and YOUR_MODEL with the exact marketplace model ID. Install requests for Python; use Node.js 20+ and save JavaScript as .mjs. WebSocket samples list their own dependencies.
Set SYSTEM_TOKEN and USER_ID in the environment; keep system tokens out of frontend code. Replace YOUR_SYSTEM_TOKEN and YOUR_USER_ID in cURL.
Start with a minimal request, then read the result using the response fields below. For async APIs, a returned task ID requires polling; acceptance does not mean generation has finished.
Query parameters
| Field | Type | Required | Description / constraints |
|---|---|---|---|
| p | integer | No | Page number starting at 1. Example: 1 |
| page_size | integer | No | Page size up to 100; omitted uses the site setting. Example: 10 |
| keyword | string | No | Name keyword. |
| token | string | No | Key filter. |
| group | string | No | Group filter. |
| status | integer | No | 1 enabled, 2 disabled, 3 expired, 4 exhausted. |
| expired_only | boolean | No | Only expired tokens. |
| negative_quota_only | boolean | No | Only negative-quota tokens. |
| last_used_before | integer | No | Last-used upper bound, Unix seconds. |
| sort_by | string | No | id, remain_quota, accessed_time or expired_time. |
| sort_order | string | No | asc or desc. |
Response fields
| Field | Type | Description / constraints |
|---|---|---|
| success | boolean | Business success; do not rely only on HTTP status. |
| message | string | Result or error message. |
| data.page | integer | Current page. |
| data.page_size | integer | Effective page size. |
| data.total | integer | Total records. |
| data.items | array | Records in the current page. |
| data.items[].key | string | Masked key, never the full credential. |
| data.items[].is_expired | boolean | Whether expired. |
| data.items[].id | integer | Token ID. |
| data.items[].user_id | integer | Owner user ID. |
| data.items[].status | integer | 1 enabled, 2 disabled, 3 expired, 4 exhausted. |
| data.items[].created_time | integer | Creation timestamp in Unix seconds. |
| data.items[].accessed_time | integer | Last access timestamp in Unix seconds. |
| data.items[].used_quota | integer | Consumed internal quota units. |
| data.items[].unlimited_count | boolean | Whether request count is unlimited; derived from remain_count. |
| data.items[].mj_cdn | string | Midjourney CDN configuration. |
| data.items[].mj_cdn_addr | string | Midjourney CDN address. |
| data.items[].storage_enabled | boolean | Storage setting. |
| data.items[].DeletedAt | string | null | Soft-deletion timestamp; normally null for active records. |
| data.items[].name | string | Name, up to 50 bytes. |
| data.items[].expired_time | integer | Unix seconds; -1 means no expiry. Set explicitly. |
| data.items[].remain_quota | integer | Initial quota, nonnegative. |
| data.items[].unlimited_quota | boolean | Unlimited quota. |
| data.items[].remain_count | integer | Request-count limit; 0 means unlimited. |
| data.items[].group | string | Authorized groups, comma separated. |
| data.items[].model_limits_enabled | boolean | Enable model restrictions. |
| data.items[].model_limits | string | Comma-separated model IDs. |
| data.items[].allow_ips | string | null | Allowed IP/CIDR, one per line. |
| data.items[].exclude_ips | string | null | Blocked IP/CIDR, one per line. |
| data.items[].cross_group_retry | boolean | Cross-group retry setting. |
| data.items[].routing_preference | string | price or quality. |
| data.items[].routing_quality_threshold | integer | 30, 40, 50, 60, 70, 80, 85, 90, 95. |
| data.items[].mj_mode | string | Midjourney mode; omitted uses site default. |
| data.items[].rate_limits_enabled | boolean | Enable token rate limits. |
| data.items[].rate_limits_time | integer | Rate-limit window in seconds; effective when enabled and both time and count are positive. |
| data.items[].rate_limits_count | integer | Rate-limit request count. |
| data.items[].rate_limits_content | string | Message returned when the token rate limit is reached; empty uses the default message. |
Illustrative response; some endpoints show essential fields only. Optional fields may be absent.
{
"success": true,
"message": "",
"data": {
"page": 1,
"page_size": 10,
"total": 0,
"items": []
}
}
Errors and retries
Check HTTP status and success. Business validation errors may return HTTP 200 with {"success":false,"message":"..."}; some include error.code. Authentication may return 401/403 and rate limiting 429. HTTP 200 alone does not guarantee success.
Use bounded exponential backoff for reads. Do not blindly retry task creation, generation, or key mutations, to avoid duplicate billing or execution.
兔子API