NSocks
Supports managing personal accounts, agent resources, and team billing via the site's OpenAPI prefix.
The authentication method is based on the security definition of each operation:
- apiKeyAuth: Pass in your personal or team API Key by querying the app_key parameter; the backend also supports key, appkey, openid parameters and POST request body parameters.
- bearerAuth: Authorization:
Bearer <JWT>This is used for web login tokens. Do not use the API Key as a JWT. - The team API Key is bound to a fixed team; for interfaces that support team spaces, team_id can be omitted, but if explicitly passed, it must be consistent with the team bound to the Key.
- APIs that only support personal spaces will reject team API keys; team operations still follow the resource permissions of the holding members.
The JSON response includes code, msg, data, and request_id. code=200 indicates successful operation; HTTP 200 may also carry an error code. The message will vary depending on the request language; the client should use the code to determine the result. Some export interfaces also support text, CSV, or XML; see the operation definition for details. The amount, flow, date, and pagination fields are subject to the respective interface schema.
Base URLs: "https://api.nsocks.com"
Authentication
- HTTP Authentication, scheme: bearer
- API Key (apiKeyAuth2)
- Parameter Name: app_key, in: query. Personal or team API Key. The recommended query parameter is app_key; it is also compatible with key/appkey/openid and POST request bodies. Team Keys can only access supported interfaces bound to the team.
API Key Management
GET API Key List
GET /ep/api-keys
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or an empty string can be passed |
| page | query | integer | no | none |
| pageSize | query | integer | no | none |
Return to example
200 Response
{
"code": 0,
"msg": "string",
"request_id": "string",
"data": {
"list": [
{
"id": 1,
"api_key": "string",
"team_user_id": 0,
"remark": "string",
"status": 0,
"created_at": "string",
"updated_at": "string"
}
],
"total": 0,
"page": 1,
"pageSize": 1
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | none | |
| » msg | string | true | none | none | |
| » request_id | string | true | none | none | |
| » data | object | true | none | none | |
| »» list | [UserApiKeyMetadata] | true | none | none | |
| »»» id | integer | true | none | API Key ID | |
| »»» api_key | string | true | none | Creates a response with the full key; uses an anonymized value in the team list | |
| »»» team_user_id | integer | true | none | Team Key: The actual member ID; personal Key: 0 | |
| »»» remark | string | true | none | Remarks | |
| »»» status | integer | true | none | 0=disabled, 1=enabled | |
| »»» created_at | string | true | none | Creation time | |
| »»» updated_at | string¦null | false | none | Update time | |
| »» total | integer | true | none | none | |
| »» page | integer | true | none | none | |
| »» pageSize | integer | true | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
Create API Key via POST
POST /ep/api-keys/create
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"remark": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » remark | body | string | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1,
"api_key": "string",
"team_user_id": 0,
"remark": "string",
"status": 0,
"created_at": "string",
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Returns the complete API Key upon successful transaction, only once | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
POST Enable API Key
POST /ep/api-keys/enable
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | ApiKeyManageRequest | Yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST Disable API Key
POST /ep/api-keys/disable
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | ApiKeyManageRequest | Yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST Delete API Key
POST /ep/api-keys/delete
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | ApiKeyManageRequest | Yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST to Modify API Key Remarks
POST /ep/api-keys/update-remark
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"id": 1,
"remark": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » id | body | integer | is | none |
| » remark | body | string | yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
Team Management
POST Create Team
POST /ep/team/create
Body Request Parameters
{
"name": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » name | body | string | Yes | Team Name |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": 0,
"current_role": 1,
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| current_role | 1 |
| current_role | 2 |
| current_role | 3 |
| current_role | 4 |
| current_role | null |
GET List of teams currently accessible to the user
GET /ep/team/list
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| current_role | 1 |
| current_role | 2 |
| current_role | 3 |
| current_role | 4 |
| current_role | null |
GET Team Details
GET /ep/team/detail
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": 0,
"current_role": 1,
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| current_role | 1 |
| current_role | 2 |
| current_role | 3 |
| current_role | 4 |
| current_role | null |
POST to change team name
POST /ep/team/update-name
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"name": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » name | body | string | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": 0,
"current_role": 1,
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| current_role | 1 |
| current_role | 2 |
| current_role | 3 |
| current_role | 4 |
| current_role | null |
POST disbands the team
POST /ep/team/dissolve
This function can only be called by the team's super administrator. The name in the request must exactly match the team's current name. This interface enforces secondary verification: it returns code=348 if the user is not in a 15-minute trusted state. The caller should obtain the verification code according to the available methods in the response data, and then retry with verify_type and verify_code. It can be called repeatedly to continue an unfinished dissolution process.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"name": "华东研发团队",
"verify_type": "email",
"verify_code": "123456"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » name | body | string | Yes | Team name confirmation, must be exactly the same as the current team name |
| » verify_type | body | string | No | Two-factor authentication; submitted together with verify_code when verification is required |
| » verify_code | body | string | No | Two-factor authentication code; optional if the device is in a 15-minute trusted state |
Enumeration value
| Attribute | Value |
|---|---|
| » verify_type | phone |
| » verify_type | |
| » verify_type | |
| » verify_type | totp |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": 0,
"current_role": 1,
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| current_role | 1 |
| current_role | 2 |
| current_role | 3 |
| current_role | 4 |
| current_role | null |
GET query for team disbandment status
GET /ep/team/dissolve-status
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": 0,
"current_role": 1,
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| current_role | 1 |
| current_role | 2 |
| current_role | 3 |
| current_role | 4 |
| current_role | null |
Team assets
Get Team Package Information
GET /ep/team/product-info
Returns a summary of the package for the specified team's resource space, with fields consistent with the package fields in /web_v1/user/info. The team super administrator's profile, balance, or internal numerical team ID will not be returned. For details on points packages, please use /web_v1/credit/info.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_id": "A1b2C3d4E5f6",
"product_types": [0],
"product_residence_remain_count": 0,
"product_residence_total_count": 0,
"pdrue2_timestamp": 0,
"remain": 0,
"total_amount": 0,
"scraping_remain": 0,
"scraping_total_amount": 0,
"scraping_timestamp": "string",
"scraping_timestamp2": 0,
"common_scraping_remain": 0,
"common_scraping_total_amount": 0,
"common_scraping_timestamp": "string",
"common_scraping_timestamp2": 0,
"pdidcr_count": 0,
"pdidcr_total": 0,
"pdidcr_traffic_remain": 0,
"pdidcr_traffic_total": 0,
"p_sitai_ip_count": 0,
"p_sitai_ip": 0,
"p_sitai_ip_total": 0,
"p_sitai_remain": 0,
"p_sitai_total": 0,
"pdidc_count": 0,
"pdidc_total": 0,
"pdidc_ip_count": 0,
"pdidc_ip_all_count": 0,
"pdispr_count": 0,
"pdispr_total": 0,
"pdispr_traffic_remain": 0,
"pdispr_traffic_total": 0,
"product_datacenter_isp_traffic_ip_count": 0,
"product_datacenter_isp_traffc_ip": 0,
"product_datacenter_isp_traffc_ip_total": 0,
"product_datacenter_isp_traffic_ip": 0,
"product_datacenter_isp_traffic_ip_total": 0,
"product_datacenter_isp_traffc_remain": 0,
"product_datacenter_isp_traffc_total": 0,
"product_datacenter_isp_traffic_remain": 0,
"product_datacenter_isp_traffic_total": 0,
"product_datacenter_isp_ip": 0,
"product_datacenter_isp_ip_total": 0,
"product_datacenter_isp_ip_count": 0,
"product_datacenter_isp_ip_all_count": 0,
"product_datacenter_isp_ip_traffic_remain": 0,
"product_datacenter_isp_ip_traffic_total": 0,
"product_agent_residence_remain_count": 0,
"product_agent_residence_total_count": 0,
"product_serp_remain": 0,
"product_serp_total": 0,
"product_serp_timestamp": "string",
"product_serp_timestamp2": 0,
"product_video_remain": 0,
"product_video_total": 0,
"product_video_timestamp": "string",
"product_video_timestamp2": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
GET Team Asset List
GET /ep/team/assets
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
GET Personal assets that can be included in the team
GET /ep/team/assets/personal-candidates
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
POST Personal Asset Transfer to Team
POST /ep/team/assets/move-in
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » user_product_id | body | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"status": 0,
"total_amount": 0,
"remain": 0,
"bandwidth": 0,
"concurrency": 0,
"expired_at": "string",
"created_at": "string",
"ip": "string",
"country_code": "string",
"country_name": "string",
"asn": "string",
"port": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
POST Team assets transferred back to individuals
POST /ep/team/assets/move-out
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » user_product_id | body | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"status": 0,
"total_amount": 0,
"remain": 0,
"bandwidth": 0,
"concurrency": 0,
"expired_at": "string",
"created_at": "string",
"ip": "string",
"country_code": "string",
"country_name": "string",
"asn": "string",
"port": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Team Wallet
GET query team wallet
GET /ep/team/wallet/detail
VIEW_BILLING permission is required. The team wallet is separate from the individual balances of the super administrator and members.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_id": "A1b2C3d4E5f6",
"balance": 0.1,
"total_recharge_fee": 0.1,
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
GET query team wallet transaction history
GET /ep/team/wallet/records
VIEW_BILLING permission is required. Transaction amounts are always positive, and changes in funds are indicated by the direction field.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| direction | 0 |
| direction | 1 |
| transaction_type | 1 |
| transaction_type | 2 |
| transaction_type | 3 |
| transaction_type | 4 |
| transaction_type | 5 |
POST Personal balance transferred to team wallet
POST /ep/team/wallet/transfer-in
Only team super administrators have the TRANSFER_BALANCE permission. Transferring funds will atomically deduct from their personal recharge balance and then add to the team wallet; the transferred amount is not included in total_recharge_fee and cannot be transferred back to the personal balance.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"amount": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » amount | body | number(double) | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_id": "A1b2C3d4E5f6",
"balance": 0.1,
"total_recharge_fee": 0.1,
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
POST Team balance transferred back to personal account
POST /ep/team/wallet/transfer-out
This function can only be called by a super administrator logged in. It atomically deducts from the team wallet and increases the individual's recharge balance; it does not change the team's or individual's total recharge amount. It can be used to reclaim balances from disbanded teams, but cannot be called by disbanded teams.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"amount": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » amount | body | number(double) | Yes | Must not exceed the team's current available balance |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_id": "A1b2C3d4E5f6",
"balance": 0.1,
"total_recharge_fee": 0.1,
"updated_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Team members
GET Team Member List
GET /ep/team/members
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
GET Team Member Unified List
GET /ep/team/people
Returns valid members; super administrators and administrators will also see pending invitations. Other invitation statuses are only retained in the invitation history list.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | none |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| record_type | member |
| record_type | invitation |
| invite_type | 0 |
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 0 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
POST Adjust member roles
POST /ep/team/members/update-role
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"team_member_id": 1,
"role": 2
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » team_member_id | body | integer | yes | none |
| » role | body | integer | yes | none |
Enumeration value
| Attribute | Value |
|---|---|
| » role | 2 |
| » role | 3 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_member_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 1,
"role": 1,
"status": 0,
"joined_at": "string",
"nickname": "string",
"username": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
POST Remove Team Member
POST /ep/team/members/remove
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"team_member_id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » team_member_id | body | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_member_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 1,
"role": 1,
"status": 0,
"joined_at": "string",
"nickname": "string",
"username": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; data.status=3 when business logic succeeds | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
POST - Leave Team
POST /ep/team/members/leave
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_member_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 1,
"role": 1,
"status": 0,
"joined_at": "string",
"nickname": "string",
"username": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; data.status=2 when business logic succeeds | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
Team Invitation
POST Create Team Invitation
POST /ep/team/invitations/create
Invitations are created based on registered users, email addresses, or phone numbers. When an email address or phone number matches a user on this site, the response will be normalized to invite_type=1. The front-end can submit a relative path template of the invitation URL from this site, and the server will simply replace with a one-time invitation token. If an unregistered user registers using the invited mobile number or completes verification using the invited email address, the server will bind the still-valid invitation to the new user, rotate the token, and only resend one unread in-app message; the old token in the original email or SMS will then become invalid. If the email invitation has not yet been automatically bound, the current account registered using the invited email address can receive it directly without waiting for email_verify.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"invite_type": 1,
"role": 2,
"user_id": 1,
"email": "user@example.com",
"country_code": 1,
"phone": "string",
"invitation_url_template": "/team/invitation/{{token}}"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » invite_type | body | integer | Yes | 1=Registered user, 2=Email, 3=Mobile number |
| » role | body | integer | Yes | 2 = Administrator, 3 = Regular Member |
| » user_id | body | integer | No | Required if invite_type=1 |
| body | string(email) | No | Required if invite_type=2 | |
| » country_code | body | integer | No | Required if invite_type=3 |
| » phone | body | string | No | Required if invite_type=3 |
| » invitation_url_template | body | string | No | This is a relative path template defined by the website's front-end; it must begin with a single /, must not contain a domain name or line breaks, and must contain only one placeholder. |
| »anonymous | body | object | no | none |
| »» invite_type | body | any | no | none |
| »anonymous | body | object | no | none |
| »» invite_type | body | any | no | none |
| »anonymous | body | object | no | none |
| »» invite_type | body | any | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| » invite_type | 1 |
| » invite_type | 2 |
| » invite_type | 3 |
| » role | 2 |
| » role | 3 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"invitation": {
"id": null,
"team_id": null,
"inviter_user_id": null,
"invitee_user_id": null,
"invite_type": null,
"invite_country_code": null,
"invite_target": null,
"delivery_type": null,
"role": null,
"status": null,
"accepted_by_user_id": null,
"expired_at": null,
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": null
},
"invitation_token": "string",
"invitation_url": "http://example.com",
"notification_channels": {
"email": null,
"sms": null,
"site_inner_message": null
}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code, 200 indicates business success | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
| queued | |
| failed | |
| skipped | |
| sms | queued |
| sms | failed |
| sms | skipped |
| site_inner_message | created |
| site_inner_message | exists |
| site_inner_message | failed |
GET Team Invitation List
GET /ep/team/invitations
Access is only available to team super administrators or administrators; expired pending invitations will be updated to expired before returning.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | TeamPublicId | Yes | Team Public Identification |
| page | query | integer | No | Page number, starting from 1 |
| page_size | query | integer | no | number of pages per page |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
GET Preview Team Invitation
GET /ep/team/invitations/preview
Anonymous preview invitations are sent using a one-time invitation token; the invitation numeric ID is not used in the link.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| invitation_token | query | string | Yes | A non-empty plaintext one-time token carried in the invitation link |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_name": "string",
"role": 2,
"status": 0,
"expired_at": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
POST Resend Team Invitation Notification
POST /ep/team/invitations/resend
Resend the invitation through the original distribution channel; registered users will also receive an in-app message. Resending will rotate tokens, and all previous invitation links will immediately become invalid.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"invitation_id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » invitation_id | body | integer | Yes | Invitation ID |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"invitation": {
"id": null,
"team_id": null,
"inviter_user_id": null,
"invitee_user_id": null,
"invite_type": null,
"invite_country_code": null,
"invite_target": null,
"delivery_type": null,
"role": null,
"status": null,
"accepted_by_user_id": null,
"expired_at": null,
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": null
},
"invitation_url": "http://example.com",
"notification_channels": {
"email": null,
"sms": null,
"site_inner_message": null
}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
| queued | |
| failed | |
| skipped | |
| sms | queued |
| sms | failed |
| sms | skipped |
| site_inner_message | created |
| site_inner_message | exists |
| site_inner_message | failed |
POST Accept team invitation
POST /ep/team/invitations/accept
The currently logged-in user accepts the invitation using a one-time invitation_token, which must match the invitation target and belong to the site to which the invitation belongs; the team_id does not need to be passed.
Body Request Parameters
{
"invitation_token": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » invitation_token | body | string | Yes | Plaintext one-time invitation token |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_member_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 1,
"role": 1,
"status": 0,
"joined_at": "string",
"nickname": "string",
"username": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; if business logic succeeds, data is a member object. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
POST - Reject Team Invitation
POST /ep/team/invitations/reject
The currently logged-in user uses a one-time invitation_token to reject invitations that match their identity; the team_id is not required.
Body Request Parameters
{
"invitation_token": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » invitation_token | body | string | Yes | Plaintext one-time invitation token |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1,
"team_id": "A1b2C3d4E5f6",
"inviter_user_id": 1,
"invitee_user_id": 0,
"invite_type": 1,
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": 1,
"role": 2,
"status": 0,
"accepted_by_user_id": 0,
"expired_at": "2026-07-17 10:00:00",
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": "2026-07-10 10:00:00"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; data.status=2 when business logic succeeds | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
POST Cancel team invitation
POST /ep/team/invitations/cancel
To cancel pending invitations within a specified team, the operator must have the authority to invite that target role.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"invitation_id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | TeamPublicId | Yes | Team public identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » invitation_id | body | integer | Yes | Invitation ID |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1,
"team_id": "A1b2C3d4E5f6",
"inviter_user_id": 1,
"invitee_user_id": 0,
"invite_type": 1,
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": 1,
"role": 2,
"status": 0,
"accepted_by_user_id": 0,
"expired_at": "2026-07-17 10:00:00",
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": "2026-07-10 10:00:00"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; data.status=3 when business logic succeeds | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
Points Management
Get points package information
GET /web_v1/credit/info
Query the summary of points packages for the current resource space. Team space requires USE_ASSETS permission; this interface supports logged-in status, personal API Key, and team API Key.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or passed as an empty string; team API Key can be omitted, but must match the Key when passed in |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business succeeds, data includes points level, total amount, remaining amount, reset time, and auto-replenishment status. | Inline |
Return data structure
POST to set automatic points replenishment for balance
POST /web_v1/credit/update-auto-supplement
This setting enables automatic replenishment of current resource space while logged in. Team space requires the USE_OWNER_PAYMENT_CAPABILITIES permission and is currently only accessible to the team super administrator; team space is disabled by default.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"status": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » status | body | integer | Yes | 0 = Off, 1 = On |
Enumeration value
| Attribute | Value |
|---|---|
| » status | 0 |
| » status | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; when the business succeeds, data.status will show the updated on/off status. | Inline |
Return data structure
GET Retrieve Points Consumption Record
GET /web_v1/credit/consumption-logs
Login status or API Key allows paginated querying of current resource space point consumption records. Team spaces require VIEW_BILLING permission.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
| start_date | query | string(date) | No | Start date, interpreted by site timezone |
| end_date | query | string(date) | No | End date, interpreted by site timezone |
| consumption_type | query | string | No | Consumption type |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business logic succeeds, the data includes list, page, page_size, total_count, and total_page. | Inline |
Return data structure
GET Retrieve Points Reset Record
GET /web_v1/credit/reset-logs
Login status or API Key: Page-by-page query of points reset records for the current resource space. Team spaces require VIEW_BILLING permission.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; upon successful transaction, the data includes points reset records and pagination information. | Inline |
Return data structure
Get points statistics via GET
GET /web_v1/credit/stats
Login status or API Key to query the current resource space's points statistics aggregated by consumption type. Team spaces require VIEW_BILLING permission.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_date | query | string(date) | No | Start date, interpreted by site timezone |
| end_date | query | string(date) | No | End date, interpreted by site timezone |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business logic succeeds, the data includes by_type and total. | Inline |
Return data structure
GET Get daily points statistics
GET /web_v1/credit/daily-stats
Login status or API Key query for daily credit consumption of current resource space, defaulting to the last 7 days. Regular team members only see their own actual consumption; administrators, super administrators, and finance members with VIEW_BILLING privileges see the full team data. Team logs for members with no historical consumption records are only visible to the full view. API Key queries can contain a maximum of 31 calendar days (inclusive), with the start date no later than the end date.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_date | query | string(date) | No | Start date, defaults to 6 days ago |
| end_date | query | string(date) | No | End date, defaults to today |
| consumption_type | query | string | No | Optional consumption type |
| fill_gaps | query | integer | No | Fill in missing dates |
Enumeration value
| Attribute | Value |
|---|---|
| fill_gaps | 0 |
| fill_gaps | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business succeeds, the data includes daily_stats and summary. | Inline |
Return data structure
GET Get hourly points statistics
GET /web_v1/credit/hourly-stats
Login status or API Key query for hourly credit consumption of the current resource space, defaulting to the last 7 days. Team spaces require VIEW_BILLING permission. API Key queries can contain a maximum of 31 calendar days (inclusive), and the start date must not be later than the end date.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_date | query | string(date) | No | Start date, defaults to 6 days ago |
| end_date | query | string(date) | No | End date, defaults to today |
| consumption_type | query | string | No | Optional consumption type |
| fill_gaps | query | integer | No | Pad in missing hours |
Enumeration value
| Attribute | Value |
|---|---|
| fill_gaps | 0 |
| fill_gaps | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business succeeds, the data includes hourly_stats and summary. | Inline |
Return data structure
Get points package information
GET /ep/credit/info
Query the summary of points packages for the current resource space. Team space requires USE_ASSETS permission; this interface supports logged-in status, personal API Key, and team API Key.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or passed as an empty string; team API Key can be omitted, but must match the Key when passed in |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business succeeds, data includes points level, total amount, remaining amount, reset time, and auto-replenishment status. | Inline |
Return data structure
GET Retrieve Points Consumption Record
GET /ep/credit/consumption-logs
Login status or API Key allows paginated querying of current resource space point consumption records. Team spaces require VIEW_BILLING permission.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
| start_date | query | string(date) | No | Start date, interpreted by site timezone |
| end_date | query | string(date) | No | End date, interpreted by site timezone |
| consumption_type | query | string | No | Consumption type |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business logic succeeds, the data includes list, page, page_size, total_count, and total_page. | Inline |
Return data structure
GET Retrieve Points Reset Record
GET /ep/credit/reset-logs
Login status or API Key: Page-by-page query of points reset records for the current resource space. Team spaces require VIEW_BILLING permission.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; upon successful transaction, the data includes points reset records and pagination information. | Inline |
Return data structure
Get points statistics via GET
GET /ep/credit/stats
Login status or API Key to query the current resource space's points statistics aggregated by consumption type. Team spaces require VIEW_BILLING permission.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_date | query | string(date) | No | Start date, interpreted by site timezone |
| end_date | query | string(date) | No | End date, interpreted by site timezone |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business logic succeeds, the data includes by_type and total. | Inline |
Return data structure
GET Get daily points statistics
GET /ep/credit/daily-stats
Login status or API Key query for daily credit consumption of current resource space, defaulting to the last 7 days. Regular team members only see their own actual consumption; administrators, super administrators, and finance members with VIEW_BILLING privileges see the full team data. Team logs for members with no historical consumption records are only visible to the full view. API Key queries can contain a maximum of 31 calendar days (inclusive), with the start date no later than the end date.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_date | query | string(date) | No | Start date, defaults to 6 days ago |
| end_date | query | string(date) | No | End date, defaults to today |
| consumption_type | query | string | No | Optional consumption type |
| fill_gaps | query | integer | No | Fill in missing dates |
Enumeration value
| Attribute | Value |
|---|---|
| fill_gaps | 0 |
| fill_gaps | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business succeeds, the data includes daily_stats and summary. | Inline |
Return data structure
GET Get hourly points statistics
GET /ep/credit/hourly-stats
Login status or API Key query for hourly credit consumption of the current resource space, defaulting to the last 7 days. Team spaces require VIEW_BILLING permission. API Key queries can contain a maximum of 31 calendar days (inclusive), and the start date must not be later than the end date.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_date | query | string(date) | No | Start date, defaults to 6 days ago |
| end_date | query | string(date) | No | End date, defaults to today |
| consumption_type | query | string | No | Optional consumption type |
| fill_gaps | query | integer | No | Pad in missing hours |
Enumeration value
| Attribute | Value |
|---|---|
| fill_gaps | 0 |
| fill_gaps | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business succeeds, the data includes hourly_stats and summary. | Inline |
Return data structure
Xcrawl Activity Log
GET Retrieve Xcrawl Recent Tasks List
GET /web_v1/xcrawl-activity-log/recent-runs
Log in to query the list and summary of individual tasks in the current resource space. Team space requires USE_ASSETS; regular members can only view tasks generated by their own created credentials, while administrators and super administrators can view all team tasks.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
| endpoint | query | string | No | Endpoint type |
| status | query | string | no | none |
| start_time | query | string | No | User timezone time, format Ymd H:i:s |
| end_time | query | string | No | User timezone time, including end boundary |
| url | query | string | No | Target URL or Data scraper identifier |
| job_id | query | string | No | Task ID prefix |
Enumeration value
| Attribute | Value |
|---|---|
| status | pending |
| status | crawling |
| status | completed |
| status | failed |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; if the business succeeds, the data includes the paginated list and metadata. | Inline |
Return data structure
GET to retrieve Xcrawl Crawl Result
GET /web_v1/xcrawl-activity-log/crawl-result
Log in to query the Crawl Result for the specified task in the current resource space. Team space requires USE_ASSETS and verifies task ownership based on the scope of member-visible credentials.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| job_id | query | string | Yes | Task ID |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business operation succeeds, the data includes job_id and crawl_result. | Inline |
Return data structure
GET Retrieve Xcrawl task details and logs
GET /web_v1/xcrawl-activity-log/activity-logs
Log in to query the details of a specified single task and its results in the current resource space. Team space requires USE_ASSETS and verifies task ownership based on the range of visible credentials for each member.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| job_id | query | string | Yes | Task ID |
| page | query | integer | no | crawl/data sub-result page number |
| page_size | query | integer | No | Number of pages for crawl/data sub-results |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when the business succeeds, the data includes the job and details that change by endpoint. | Inline |
Return data structure
GET request to retrieve data from URL for aggregated statistics
GET /web_v1/xcrawl-activity-log/data-url-summary
The logged-in state aggregates the Data scraper tasks of the current resource space. Team space requires USE_ASSETS, and the results follow the scope of member-visible credentials.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| limit | query | integer | No | Returns the number of items; 0 returns an empty list |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; if business logic succeeds, data.list will contain the scraper aggregation results. | Inline |
Return data structure
GET to retrieve a list of recent crawling tasks in batches
GET /web_v1/xcrawl-activity-log/batch-recent-runs
Log in to query the list and summary of batch tasks in the current resource space. Team space requires USE_ASSETS; regular members can only view tasks generated by their own created credentials, while administrators and super administrators can view all team tasks.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
| endpoint | query | string | No | Endpoint type, usually batch_scrape |
| status | query | string | no | none |
| start_time | query | string | No | User timezone time, format Ymd H:i:s |
| end_time | query | string | No | User timezone time, including end boundary |
| batch_id | query | string | no | Batch task ID prefix |
Enumeration value
| Attribute | Value |
|---|---|
| status | pending |
| status | crawling |
| status | completed |
| status | failed |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; if the business succeeds, the data includes the paginated list and metadata. | Inline |
Return data structure
GET request to retrieve details and logs of batch web scraping tasks.
GET /web_v1/xcrawl-activity-log/batch-activity-logs
Login status queries the results of a specified batch of tasks and their sub-items in the current resource space. Team space requires USE_ASSETS and verifies task ownership based on the scope of member-visible credentials.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| batch_id | query | string | Yes | Batch task ID |
| page | query | integer | no | sub-item page number |
| page_size | query | integer | no | Number of sub-items per page |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP success; when business logic succeeds, the data includes job and batch task details. | Inline |
Return data structure
Agent account management
GET proxy account list
GET /ep/whitelist-account/list
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or passed as an empty string; team key can be omitted, but must match the key when passed in |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": [
{
"id": 0,
"username": "string",
"password": "string",
"created_at": "string",
"remark": "string",
"product_type": 9,
"usage_flow": 0,
"limit_flow": 102400,
"status": 0
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | responseCode | false | none | Status code: 200 Success, 3 Invalid app_key | |
| » msg | string | false | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» id | integer | false | none | Account Number | |
| »»» username | string | false | none | Proxy account name | |
| »»» password | string | false | none | Proxy account password | |
| »»» created_at | string | false | none | Added time | |
| »»» remark | string | false | none | Remarks | |
| »»» product_type | productTypes | false | none | Package types: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP Package, 14 Static Data Center IP Package, 25 Static Residential IP Package | |
| »»» usage_flow | integer | false | none | Usage flow, in KB | |
| »»» limit_flow | integer | false | none | Custom flow limit: maximum 102400 GB, 0 means no limit | |
| »»» status | integer | false | none | Enabled status: 1 enabled, 0 disabled |
Enumeration value
| Attribute | Value |
|---|---|
| product_type | 9 |
| product_type | 11 |
| product_type | 14 |
| product_type | 25 |
POST detection proxy account traffic limits can be set.
POST /ep/whitelist-account/check
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"account": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » account | body | string | No | Pass the account name when editing an existing proxy account |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"isAgent": 0,
"trendMax": 0,
"staticMax": 0,
"maxLimit": 0,
"minLimit": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| isAgent | 0 |
| isAgent | 1 |
GET Retrieve dynamic proxy sub-account quota and used quantity
GET /ep/whitelist-account/child-account
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or an empty string can be passed |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"totalChildAccount": 0,
"usedChildAccount": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
POST Add proxy account.
POST /ep/whitelist-account/add
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "stringstringstringstringstringst",
"accounts": "user01:pass,user02:pass,user03:pass",
"remark": "",
"product_type": 9
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » accounts | body | string | Yes | Account password. Please fill in the format username:password. Only numbers and letters are supported for the account and password. No special characters or spaces are allowed. Separate the account and password with a colon. Batch addition is supported. Separate proxy accounts with commas (,). |
| » remark | body | string | No | Proxy account description |
| » product_type | body | productTypes | No | Package Type: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP Package, 14 Static Data Center IP Package, 25 Static Residential IP Package |
Enumeration value
| Attribute | Value |
|---|---|
| » product_type | 9 |
| » product_type | 11 |
| » product_type | 14 |
| » product_type | 25 |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST Delete Agent Account
POST /ep/whitelist-account/delete
Please note that deletion is irreversible, and used data cannot be retrieved. Deletion takes approximately 5 minutes, during which time charges may still apply.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "stringstringstringstringstringst",
"accounts": "user01,user02"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » accounts | body | string | Yes | Proxy account, supports only numbers and letters. Supports batch operations, with proxy accounts separated by commas (,). |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST Disable proxy account
POST /ep/whitelist-account/disable
There is a waiting time of approximately 5 minutes after disabling, during which fees may still be incurred.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "stringstringstringstringstringst",
"accounts": "user01,user02"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » accounts | body | string | Yes | Proxy account, supports only numbers and letters. Supports batch operations, with proxy accounts separated by commas (,). |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST Enable Proxy Account
POST /ep/whitelist-account/enable
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "stringstringstringstringstringst",
"accounts": "user01,user02"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » accounts | body | string | Yes | Proxy account, supports only numbers and letters. Supports batch operations, with proxy accounts separated by commas (,). |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST to change the password of the proxy account
POST /ep/whitelist-account/change-password
Please note that there is a 5-minute waiting period after you make a change. During this time, the old password may still work normally.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "stringstringstringstringstringst",
"account": "user",
"password": "pass"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » account | body | string | Yes | Proxy account, only numbers and letters are supported. |
| » password | body | string | Yes | New password for the proxy account, only numbers and letters are supported. |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST to modify agent account remarks
POST /ep/whitelist-account/change-remark
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "stringstringstringstringstringst",
"account": "user",
"remark": ""
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » account | body | string | Yes | Proxy account, only numbers and letters are supported. |
| » remark | body | string | Yes | New note for proxy account, up to 32 Chinese characters or 64 English characters. |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST to modify proxy account traffic limit
POST /ep/whitelist-account/change-limit
Please note that traffic statistics may be delayed by up to 5 minutes, meaning that the actual traffic consumed may exceed this limit.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "stringstringstringstringstringst",
"account": "user",
"limit": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » account | body | string | Yes | Proxy account, only numbers and letters are supported. |
| » limit | body | integer | No | Traffic limit, unit: GB, 0 means no limit |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST Quickly create a proxy account
POST /ep/whitelist-account/quick-add
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"product_type": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » product_type | body | integer | yes | none |
Return to example
200 Response
{
"code": 0,
"msg": "string",
"request_id": "string",
"data": {
"username": "string",
"password": "string"
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Returns new account and password upon successful transaction | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | none | |
| » msg | string | false | none | none | |
| » request_id | string | false | none | none | |
| » data | any | false | none | none |
oneOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »»anonymous | object | false | none | none | |
| »»» username | string | true | none | none | |
| »»» password | string | true | none | none |
xor
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »»anonymous | null | false | none | none |
POST to modify the daily traffic limit of a proxy account
POST /ep/whitelist-account/change-daily-limit
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"account": "string",
"daily_limit": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » account | body | string | yes | none |
| » daily_limit | body | integer | No | Unit: GB |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST to modify agent account information
POST /ep/whitelist-account/change
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"account": "string",
"password": "string",
"remark": "string",
"limit": 0,
"daily_limit": 0,
"status": 0,
"udp": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » account | body | string | yes | none |
| » password | body | string | no | none |
| » remark | body | string | no | none |
| » limit | body | integer | No | Total data limit, in GB |
| » daily_limit | body | integer | No | Daily data limit, in GB |
| » status | body | integer | no | none |
| » udp | body | integer | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| » status | 0 |
| » status | 1 |
| » udp | 0 |
| » udp | 1 |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST refreshes the proxy account authentication cache in the current resource space.
POST /ep/whitelist-account/refresh
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
GET agent account quota for specified product type
GET /ep/whitelist-account/quota
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| product_type | query | integer | yes | none |
Return to example
200 Response
{
"code": 0,
"msg": "string",
"request_id": "string",
"data": {
"usage": 0,
"limit": 0,
"expand": 0
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | none | |
| » msg | string | false | none | none | |
| » request_id | string | false | none | none | |
| » data | object | false | none | none | |
| »» usage | integer | true | none | none | |
| »» limit | integer | true | none | none | |
| »» expand | integer | true | none | none |
GET agent account quotas for all product types
GET /ep/whitelist-account/quotas
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none |
Return to example
200 Response
{
"code": 0,
"msg": "string",
"request_id": "string",
"data": {
"list": [
{
"product_type": 0,
"limit": 0,
"usage": 0
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | none | |
| » msg | string | false | none | none | |
| » request_id | string | false | none | none | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» product_type | integer | false | none | none | |
| »»» limit | integer | false | none | none | |
| »»» usage | integer | false | none | none |
POST to modify agent account information
POST /ep/proxy-account/change
Change the proxy account password, notes, traffic limit, daily traffic limit, enabled status, or UDP switch.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "string",
"account": "string",
"password": "string",
"remark": "string",
"limit": 0,
"daily_limit": 0,
"status": 0,
"udp": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » account | body | string | is | proxy account name |
| » password | body | string | No | New password, 6-16 characters of numbers or letters; if not sent, it will not be changed |
| » remark | body | string | No | New note |
| » limit | body | integer | No | Maximum data usage, in GB, 0 indicates no limit |
| » daily_limit | body | integer | No | Daily data limit in GB, 0 indicates no limit |
| » status | body | integer | No | Enabled status |
| » UDP | body | integer | No | UDP supports switching, only effective for package types 14, 16, 21, and 25 |
Enumeration value
| Attribute | Value |
|---|---|
| » status | 0 |
| » status | 1 |
| » udp | 0 |
| » udp | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status code, 200 Success | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
GET generates proxy connection information
GET /ep/whitelist-account/format
Supports individual and team API keys. Returns only authorized proxy accounts within the current resource space, supporting package types 9, 11, and 12. JSON/XML returns a structured list of account keys; txt/csv returns a concatenated string in f format.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| ac | query | integer | Yes | Agent account ID or username; compatible parameter account |
| ae | query | string | no | none |
| st | query | string | no | none |
| ct | query | string | no | none |
| lf | query | integer | no | none |
| n | query | integer | no | none |
| f | query | integer | No | Only affects the concatenation string format of txt/csv files |
| type | query | string | no | none |
| lb | query | string | no | none |
| ep | query | string | no | none |
| team_id | query | ResourceSpaceId No | none |
Enumeration value
| Attribute | Value |
|---|---|
| f | 1 |
| f | 2 |
| f | 3 |
| f | 4 |
| f | 5 |
| type | json |
| type | xml |
| type | txt |
| type | csv |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}]
},
"request_id": "string"
}
"string"
<?xml version="1.0" encoding="UTF-8" ?>
<WebV1SuccessResponse>
<code>200</code>
<msg>SUCCESS</msg>
<data/>
<request_id>string</request_id>
</WebV1SuccessResponse>
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. WebV1SuccessResponse |
IP whitelist
GET IP whitelist list
GET /ep/proxy-ip/list
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or an empty string can be passed |
| product_type | query | integer | No | Package type number |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": [
{
"ip": "1.1.1.1",
"remark": "string",
"product_type": 0,
"created_at": "string"
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status code, 200 Success | |
| » msg | string | false | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» ip | string | false | none | Whitelist IP | |
| »»» remark | string | false | none | Remarks | |
| »»» product_type | integer | false | none | Package type | |
| »»» created_at | string | false | none | Creation time |
POST Add IP whitelist
POST /ep/proxy-ip/add
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "string",
"ips": "1.1.1.1,2.2.2.2",
"remark": "string",
"product_type": 0,
"user_product_id": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » ips | body | string | Yes | The whitelist of IPs to be added, multiple IPs separated by commas or newlines |
| » remark | body | string | No | Remark |
| » product_type | body | integer | No | Package type number |
| » user_product_id | body | integer | No | User package ID, required if package type is 11 |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status code, 200 Success | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST to remove IP from whitelist
POST /ep/proxy-ip/delete
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"app_key": "string",
"ips": "1.1.1.1,2.2.2.2",
"verify_type": "string",
"verify_code": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » app_key | body | string | No | Authorization key |
| » ips | body | string | Yes | The whitelisted IPs to be deleted, multiple IPs separated by commas |
| » verify_type | body | string | No | Verification type: phone, email, wechat, totp |
| » verify_code | body | string | No | Verification code |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": null
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status code, 200 Success | |
| » msg | string | false | none | Status message | |
| » data | null | false | none | none |
POST to modify IP address; whitelist notes
POST /ep/white-ip/change-remark
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"ip": "192.168.0.1",
"remark": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » ip | body | string(ipv4) | yes | none |
| » remark | body | string | yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST refreshes the current resource space IP address and whitelist authentication cache.
POST /ep/white-ip/refresh
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
GET IP whitelist quota for specified product type
GET /ep/white-ip/quota
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| product_type | query | integer | yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
Get IP whitelist quotas for all product types
GET /ep/white-ip/quotas
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
IP Extraction
GET IP extraction count by day
GET /ep/user-extract-ip/days
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_date | query | string(date) | No | Default: 6 days ago |
| end_date | query | string(date) | No | Default: Today |
| product_type | query | integer | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| product_type | 9 |
| product_type | 17 |
| product_type | 22 |
Return to example
200 Response
{
"code": 0,
"msg": "string",
"request_id": "string",
"data": {
"list": [
{
"count": 0,
"date": "2019-08-24"
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | none | |
| » msg | string | false | none | none | |
| » request_id | string | false | none | none | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» count | integer | true | none | none | |
| »»» date | string(date) | true | none | none |
GET Extract IP
GET /ep/ip/v3
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Team Key can be omitted; the team key must match the team bound to the key. |
| app_key | query | string(password) | Yes | Access key |
| cc | query | string | No | Country or region |
| state | query | string | No | Province or State |
| city | query | string | No | city |
| format | query | string | No | Get format |
| lb | query | string | No | Separator, only valid for text format |
| num | query | number | No | Number of items to retrieve |
| life | query | number | No | Keep period - minutes |
| ep | query | string | No | Proxy network |
Enumeration value
| Attribute | Value |
|---|---|
| ep | us |
| ep | hk |
| ep | de |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": [
[
"150.109.114.72:1140",
"150.109.114.72:1141",
"150.109.114.72:1142",
"150.109.114.72:1143",
"150.109.114.72:1144",
"150.109.114.72:1145",
"150.109.114.72:1146",
"150.109.114.72:1147",
"150.109.114.72:1148",
"150.109.114.72:1149"
]
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [any] | false | none | none |
GET Dynamic Regional City List V4
GET /ep/ip/dcl4
Retrieving the city list by username requires login authentication, and the account must belong to the current user.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| username | query | string | is | Proxy account username |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"cache": true,
"list": [
{
"City": "Los Angeles",
"Area": "US",
"State": "California"
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status code, 200 Success | |
| » msg | string | false | none | Status message | |
| » data | object | false | none | none | |
| »» cache | boolean | false | none | Whether it comes from the cache | |
| »» list | [object] | false | none | none | |
| »»» City | string | false | none | city | |
| »»» Area | string | false | none | Region | |
| »»» State | string | false | none | State/Province |
GET Dynamic List of States/Provinces V4
GET /ep/ip/dsl4
Retrieving a list of states/provinces by username requires login authentication, and the account must belong to the current user.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| username | query | string | is | Proxy account username |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"cache": true,
"list": [
{
"City": "Los Angeles",
"Area": "US",
"State": "California"
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status code, 200 Success | |
| » msg | string | false | none | Status message | |
| » data | object | false | none | none | |
| »» cache | boolean | false | none | Whether it comes from the cache | |
| »» list | [object] | false | none | none | |
| »»» City | string | false | none | city | |
| »»» Area | string | false | none | Region | |
| »»» State | string | false | none | State/Province |
GET Dynamic Regional/Provincial City Integration List V4
GET /ep/ip/dal4
Retrieves a merged list of states/provinces and cities by username, grouped by region. Login authentication is required, and the account must belong to the current user.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| username | query | string | is | Proxy account username |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"cache": true,
"list": [
{
"Area": "US",
"states": [
{
"State": null,
"cities": null
}
]
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status code, 200 Success | |
| » msg | string | false | none | Status message | |
| » data | object | false | none | none | |
| »» cache | boolean | false | none | Whether it comes from the cache | |
| »» list | [object] | false | none | List of regions | |
| »»» Area | string | false | none | Area code | |
| »»» states | [object] | false | none | List of states/provinces | |
| »»»» State | string | false | none | State/Province Name | |
| »»»» cities | [string] | false | none | List of cities |
GET City List
GET /ep/ip/dynamic-citys
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": [
{
"name_zh_cn": "美国",
"name_en": "United States",
"continent_code": "NA",
"country_code": "US",
"items": [
{
"city": null,
"state": null,
"continent_code": null,
"country_code": null
}
]
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | list | |
| »»» name_zh_cn | string | false | none | Country or region name | |
| »»» name_en | string | false | none | Country or region name | |
| »»» continent_code | string | false | none | Continent code | |
| »»» country_code | string | false | none | country or region code | |
| »»» items | [object] | false | none | Province or State | |
| »»»» city | string | false | none | City Name | |
| »»»» state | string | false | none | Province or state name code | |
| »»»» continent_code | string | false | none | Continent code | |
| »»»» country_code | string | false | none | country or region code |
GET City Search
GET /ep/ip/dynamic-citys/search
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| country_code | query | string | Yes | Country or region code |
| state | query | string | is | state or province code |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": ["string"]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [string] | false | none | list |
GET State List
GET /ep/ip/dynamic-states
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": [
{
"name_zh_cn": "美国",
"name_en": "United States",
"continent_code": "NA",
"country_code": "US",
"items": [
{
"state": null,
"continent_code": null,
"country_code": null
}
]
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | list | |
| »»» name_zh_cn | string | false | none | Country or region name | |
| »»» name_en | string | false | none | Country or region name | |
| »»» continent_code | string | false | none | Continent code | |
| »»» country_code | string | false | none | country or region code | |
| »»» items | [object] | false | none | Province or State | |
| »»»» state | string | false | none | Province or state name code | |
| »»»» continent_code | string | false | none | Continent code | |
| »»»» country_code | string | false | none | country or region code |
GET State/Province Search
GET /ep/ip/dynamic-states/search
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| country_code | query | string | Yes | Country or region code |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": ["string"]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [string] | false | none | list |
POST request to retrieve a list of assigned static IP addresses for data centers.
POST /ep/ip/get-datacenter-assign-ip-list
Obsolete, recommended for use /openapi/user-product/datacenter-isp-ip-listTo ensure compatibility with older clients, this API uses the POST method, but all filter parameters are read from the query.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or passed as an empty string; team key can be omitted, but must match the key when passed in |
| area | query | string | No | Country/Region Code |
| status | query | integer | No | 0 = all, 1 = valid, 2 = expired |
| trade_no | query | string | No | Order number |
| created_at | query | array[string] | No | Creation time range; both start and end times must be provided. |
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"total": 0,
"list": [
{
"id": 1,
"ip": "string",
"country_code": "string",
"up_id": 1,
"expired_at": "string",
"created_at": "string",
"country_name_zh_cn": "string",
"country_name_en": "string",
"country_continent_code": "string",
"port": 1
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
GET Retrieve List of Purchased Static IPs
GET /ep/ip/get-static-ip
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| country_code | query | string | No | Country or region code |
| product_type | query | number | No | Product type, 25: Static residential IP, 14: Data center IP |
| trade_no | query | string | No | Filter by order number |
| page | query | number | No | Page number |
| size | query | number | No | Number per page |
| status | query | number | No | Status, 1: Valid, 2: Invalid, 3: About to expire, 4: Under maintenance |
Enumeration value
| Attribute | Value |
|---|---|
| product_type | 14 |
| product_type | 25 |
| status | 1 - 2 - 3 - 4 |
Return to example
200 Response
{}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | none | Inline |
Return data structure
GET Retrieve the number of static IPs available in the regions for sale
GET /ep/ip/static-ip-region
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| isp | query | integer | No | ISP filter, no filtering if not provided (except for sites 1/4/5, default is 1) |
| asn | query | integer | No | Whether to return ASN grouped data |
| exclusive | query | integer | No | Whether to calculate inventory by exclusive |
Detailed description
ISP: ISP filtering; no filtering if no information is uploaded (except for sites 1/4/5, which default to 1).
| Value | Description |
|---|---|
| 0 | Static IP Address for Data Center (IDC) |
| 1 | Residential Static IP (ISP) |
asn: Whether to return ASN group data
| Value | Description |
|---|---|
| 0 | Do not return ASN grouped data (default) |
| 1 | Return ASN grouped data |
exclusive: Whether to count inventory as exclusive.
| Value | Description |
|---|---|
| 0 | Statistics based on current user/shared group (default) |
| 1 | Exclude all assigned IPs and only count available inventory |
Enumeration value
| Attribute | Value |
|---|---|
| isp | 0 |
| isp | 1 |
| asn | 0 |
| asn | 1 |
| exclusive | 0 |
| exclusive | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "请求成功",
"data": {
"list": [
{
"code": "US",
"number": 55
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status code, 200 Success | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» code | string | true | none | Country or region code | |
| »»» number | integer | true | none | quantity |
GET request retrieves the host_pool. Supported countries/regions.
GET /ep/host-pool/regions
Query the list of countries/regions supported by the current site of the host_pool service.
This interface is designed for scenarios where data center IPs are randomly extracted based on traffic points, and only the country/region of the available data center IP inventory for the current site is counted.
Return to example
200 Response
{
"code": 200,
"msg": "请求成功",
"data": {
"list": [
{
"code": "US",
"number": 55,
"name_zh_cn": "美国",
"name_en": "United States",
"square_flag": "https://example.com/static/flags/us.png"
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status code, 200 Success | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» code | string | true | none | Country or region code, ISO 3166-1 alpha-2 | |
| »»» number | integer | true | none | Number of available data center IPs for the current site | |
| »»» name_zh_cn | string | false | none | Country or region Chinese name | |
| »»» name_en | string | false | none | Country or region name in English | |
| »»» square_flag | string | false | none | Square flag image URL |
Traffic log query
POST Recent Traffic Summary by Day
POST /ep/user-usage-flow/days
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"days": 7,
"product_type": 0,
"username": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » days | body | integer | no | none |
| » product_type | body | integer | no | none |
| » username | body | string | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"days": "2019-08-24",
"flow": 0
}
],
"days": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
POST proxy account historical traffic usage
POST /ep/user-usage-flow/username-total
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"username": "string",
"flow": 0
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
POST export proxy account monthly data usage
POST /ep/user-usage-flow/export-csv
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
Return to example
200 Response
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | GBK encoded CSV file | string |
Get your total data allowance and remaining data allowance.
GET /ep/user-usage-flow/flow-total
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| unit | query | string | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| unit | KB |
| unit | MB |
| unit | GB |
| unit | TB |
| unit | PB |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"limit": 0,
"total": 0,
"remain": 0,
"unit": "KB",
"timestamp": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| unit | KB |
| unit | MB |
| unit | GB |
| unit | TB |
| unit | PB |
GET Daily Rate Chart
GET /ep/user-usage-flow/rate-graph
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start | query | string(date) | no | none |
| end | query | string(date) | no | none |
| username | query | string | no | none |
| user_product_id | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"date": "2019-08-24",
"rate": 0,
"corrent": 0
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
GET Daily Cache Traffic Statistics
GET /ep/user-usage-flow/cache-total
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_time | query | string | no | none |
| end_time | query | string | no | none |
| product_type | query | integer | no | none |
| username | query | string | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"day": "2019-08-24",
"cache_flow": 0,
"cache_reduce_flow": 0
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
GET usage data summary by day
GET /ep/user-usage-flow/total
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or an empty string can be passed |
| app_key | query | string(password) | Yes | Authentication key |
| start_time | query | string(Ymd H:i:s) | No | Start time, accurate to the second. Please note that there is a delay of up to 5 minutes in logging. Default is within 7 days. |
| end_time | query | string(Ymd H:i:s) | No | Deadline time, accurate to the second. Please note that there is a delay of up to 5 minutes in logging. Defaults to the current time. |
| username | query | string | No | Sub-account name. The default is to query all accounts; you can specify a sub-account. Please note that if you add a sub-account with the same name, this query will return all usage records of the same proxy account. |
| product_type | query | number | No | Package type |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": [
{
"day": "2022-08-01",
"flow": 0
}
]
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» day | string | false | none | date | |
| »»» flow | integer | false | none | Traffic consumption, in KB |
Proxy Logs
GET Client IP Proxy Access Statistics
GET /ep/http-t-dom/list-v2
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_time | query | string(date) | no | none |
| end_time | query | string(date) | no | none |
| export | query | string | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| export | csv |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"visit_count": 0,
"client_ip": "string",
"time": "2019-08-24",
"country_code": "string",
"country": "string"
}
],
"cache": true,
"ttl": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | JSON statistics;export=csv Returns a CSV file | string |
Percentage of GET requests from client IP addresses
GET /ep/http-t-dom/client-ip-proportion
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| start_time | query | string(date) | no | none |
| end_time | query | string(date) | no | none |
| export | query | string | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| export | csv |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"username": "string",
"client_ip": "string",
"visit_count": 0,
"visit_percentage": "string",
"country": "string",
"country_code": "string"
}
],
"cache": true,
"ttl": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | JSON percentage results;export=csv Returns a CSV file | string |
Monthly renewal bill
GET Current Month Summary Renewal Bill
GET /ep/monthly-renewal-bill
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"batch": {
"type": "current",
"start_at": "string",
"end_at": "string",
"target_expired_at": "string",
"timezone": "string"
},
"currency": "string",
"total_fee": 0,
"items": [
{
"id": 0,
"user_product_id": 1,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"title": "string",
"expired_at": "string",
"target_expired_at": "string",
"renew_days": 1,
"unit_month_price": 0,
"pay_fee": 0,
"currency": "string",
"bandwidth": 0,
"bandwidth_mbsp": 0,
"concurrency": 0,
"ip": "string",
"country_code": "string",
"paid_at": "string",
"refunded_at": "string",
"created_at": "string",
"updated_at": "string"
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| type | current |
| type | next |
POST Check monthly summary renewal orders
POST /ep/monthly-renewal-bill/check
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_ids": [1],
"user_coupon_id": 1,
"coupon_sn": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | Monthly Renewal Request | Yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"batch": {
"type": "current",
"start_at": "string",
"end_at": "string",
"target_expired_at": "string",
"timezone": "string"
},
"currency": "string",
"total_fee": 0,
"discount_fee": 0,
"pay_fee": 0,
"items": [
{
"id": 0,
"user_product_id": 1,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"title": "string",
"expired_at": "string",
"target_expired_at": "string",
"renew_days": 1,
"unit_month_price": 0,
"pay_fee": 0,
"currency": "string",
"bandwidth": 0,
"bandwidth_mbsp": 0,
"concurrency": 0,
"ip": "string",
"country_code": "string",
"paid_at": "string",
"refunded_at": "string",
"created_at": "string",
"updated_at": "string"
}
],
"user_coupon_id": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| type | current |
| type | next |
POST Create monthly summary renewal order
POST /ep/monthly-renewal-bill/create
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_ids": [1],
"user_coupon_id": 1,
"coupon_sn": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | Monthly Renewal Request | Yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"trade_no": "string",
"total_fee": 0,
"discount_fee": 0,
"pay_fee": 0,
"currency": "string",
"user_coupon_id": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
GET Monthly Summary Renewal History Bills
GET /ep/monthly-renewal-bill/history
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| trade_no | query | string | no | none |
| start_date | query | string(date) | no | none |
| end_date | query | string(date) | no | none |
| page | query | integer | no | none |
| size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"total": 0,
"page": 1,
"size": 1,
"list": [
{
"id": 1,
"trade_no": "string",
"status": 0,
"pay_fee": 0,
"currency": "string",
"pay_at": "string",
"created_at": "string",
"pay_method": 0,
"pm_id": 0,
"pay_channel": 0,
"pm_title": "string",
"pm_logo": "string",
"items": [null]
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Invoice Management
GET Invoice Header Details
GET /ep/user-invoice/info
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| invoice_code | query | string | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"invoice_code": "string",
"name": "string",
"org_name": "string",
"first_name": "string",
"last_name": "string",
"phone": "string",
"email": "user@example.com",
"role_type": 1,
"invoice_type": 0,
"vat_id": "string",
"tax_no": "string",
"address_country": "string",
"address_city": "string",
"address_line1": "string",
"address_line2": "string",
"address_postal_code": "string",
"bank_name": "string",
"bank_account": "string",
"is_def": true
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role_type | 1 |
| role_type | 2 |
| invoice_type | 0 |
| invoice_type | 1 |
| invoice_type | 2 |
POST Create or modify invoice header
POST /ep/user-invoice/create
Body Request Parameters
{
"invoice_code": "string",
"name": "string",
"org_name": "string",
"first_name": "string",
"last_name": "string",
"phone": "string",
"email": "user@example.com",
"role_type": 1,
"invoice_type": 0,
"vat_id": "string",
"tax_no": "string",
"address_country": "string",
"address_city": "string",
"address_line1": "string",
"address_line2": "string",
"address_postal_code": "string",
"bank_name": "string",
"bank_account": "string",
"is_def": true,
"team_id": "A1b2C3d4E5f6",
"new_invoice_code": false
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | any | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Request successful, data is null | Inline |
Return data structure
GET Invoice Header List
GET /ep/user-invoice/list
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role_type | 1 |
| role_type | 2 |
| invoice_type | 0 |
| invoice_type | 1 |
| invoice_type | 2 |
POST to delete invoice header
POST /ep/user-invoice/delete
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"invoice_code": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » invoice_code | body | string | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Request successful, data is null | Inline |
Return data structure
GET Invoice Record List
GET /ep/user-invoice/record-list
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| status | query | integer | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 1,
"invoice_no": "string",
"invoice_amount": 0,
"invoice_download_url": "string",
"status": 0,
"remark": "string",
"order_ids": [null],
"created_at": 0,
"invoice_info": {}
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| role_type | 1 |
| role_type | 2 |
| invoice_type | 0 |
| invoice_type | 1 |
| invoice_type | 2 |
POST Submit Invoice Request
POST /ep/user-invoice/submit
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"invoice_code": "string",
"order_ids": [0]
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » invoice_code | body | string | yes | none |
| » order_ids | body | [integer] | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"invoice_id": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
POST Cancel Invoice Request
POST /ep/user-invoice/cancel
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"invoice_id": 1,
"reason": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » invoice_id | body | integer | is | none |
| » reason | body | string | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Request successful, data is null | Inline |
Return data structure
GET Invoice Amount Statistics
GET /ep/user-invoice/statistics
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"invoiceable_amount": 0,
"invoiced_amount": 0,
"processing_amount": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
GET List of Invoiceable Orders
GET /ep/user-invoice/invoiceable-orders
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 1,
"order_no": "string",
"pay_fee": 0,
"created_at": 0
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Package Inquiry
GET Purchased Package List
GET /ep/user-product/list
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or an empty string can be passed |
| app_key | query | string(password) | Yes | Authentication key |
| trade_no | query | string | No | Order number. Please enter the complete order number. Fuzzy search is not supported. |
| page | query | number | No | Pagination, default: 1 |
| size | query | number | No | Number of items to display per page, default: 20 |
| product_type | query | number | No | Package type |
Return to example
200 Response
{
"code": 200,
"msg": "string",
"data": {
"list": [
{
"id": 0,
"created_at": "2022-05-13 12:14:15",
"expired_at": "2022-05-13 12:14:15",
"product_type": 9,
"trade_no": "2022051312134339861461465434",
"order": {
"created_at": "2022-05-13 12:13:43",
"pay_at": "2022-05-13 12:13:43",
"title": "入门级"
}
}
],
"page": 1,
"page_size": 20,
"total_count": 0,
"total_page": 0
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request to | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | true | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | true | none | Status message | |
| » data | object | false | none | none | |
| »» list | [object] | false | none | none | |
| »»» id | integer | false | none | Package Number | |
| »»» created_at | string | false | none | Package effective time | |
| »»» expired_at | string | false | none | The expiration date of the data plan. Data will be unavailable after the plan expires. | |
| »»» product_type | productTypes | false | none | Package types: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP Package, 14 Static Data Center IP Package, 25 Static Residential IP Package | |
| »»» trade_no | string | false | none | Order transaction number | |
| »»» order | object | false | none | none | |
| »»»» created_at | string | false | none | Order creation time | |
| »»»» pay_at | string | false | none | Order payment time | |
| »»»» title | string | false | none | Order description | |
| »» page | integer | true | none | Current page | |
| »» page_size | integer | false | none | Page size | |
| »» total_count | integer | false | none | Total number of records | |
| »» total_page | integer | false | none | Total number of pages |
Enumeration value
| Attribute | Value |
|---|---|
| product_type | 9 |
| product_type | 11 |
| product_type | 14 |
| product_type | 25 |
GET User Package Data Summary
GET /ep/user-product/summary
Obtain statistical summary information on user plans, including total amount, valid amount, near-expiration amount, and expired amount.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or an empty string can be passed |
| app_key | query | string(password) | Yes | Authentication key |
| product_type | query | integer | No | Product type, only supports 9 (dynamic traffic plan) and 12 (long-term IDC traffic plan) |
Enumeration value
| Attribute | Value |
|---|---|
| product_type | 9 |
| product_type | 12 |
Return to example
200 Response
{
"code": 200,
"msg": "成功",
"data": {
"total": 1048576,
"total_count": 5,
"effective": 524288,
"effective_count": 3,
"effective_total": 786432,
"effective_used": 262144,
"temporary": 102400,
"temporary_count": 1,
"expired": 51200,
"expired_count": 1,
"used": 473088
}
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Status code 200
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| » code | integer | false | none | Status codes: 200 Success, 3 Invalid app_key, 156 Account not verified | |
| » msg | string | false | none | Status message | |
| » data | object | false | none | none | |
| »» total | integer | false | none | Total traffic/IP volume (unit: KB) | |
| »» total_count | integer | false | none | Total number of packages | |
| »» effective | integer | false | none | Effective remaining quantity (unit: KB) | |
| »» effective_count | integer | false | none | Number of effective packages | |
| »» effective_total | integer | false | none | Effective total (unit: KB) | |
| »» effective_used | integer | false | none | Effective used data (in KB) | |
| »» temporary | integer | false | none | Total near-expiration quantity (expiring within 7 days, unit: KB) | |
| »» temporary_count | integer | false | none | Number of near-expiration packages (expiring within 7 days) | |
| »» expired | integer | false | none | Expired quantity (in KB) | |
| »» expired_count | integer | false | none | Number of expired packages | |
| »» used | integer | false | none | Total used (in KB) |
POST Static IP List
POST /ep/user-product/datacenter-isp-ip-list
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"status": 0,
"page": 1,
"size": 20,
"user_product_id": 1,
"country_code": "string",
"product_type": 0,
"ip": "192.168.0.1",
"auto_renewal": 0,
"support_renewal": 0,
"remaining_days": 0,
"limit_days": 0,
"sort": "exp_asc",
"remark": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » status | body | integer | no | none |
| » page | body | integer | no | none |
| » size | body | integer | no | none |
| » user_product_id | body | integer | no | none |
| » country_code | body | string | no | none |
| » product_type | body | integer | no | none |
| » ip | body | string(ipv4) | no | none |
| » auto_renewal | body | integer | no | none |
| » support_renewal | body | integer | no | none |
| » remaining_days | body | integer | no | none |
| » limit_days | body | integer | no | none |
| » sort | body | string | no | none |
| » remark | body | string | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| » auto_renewal | 0 |
| » auto_renewal | 1 |
| » support_renewal | 0 |
| » support_renewal | 1 |
| » sort | exp_asc |
| » sort | exp_desc |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST to delete expired plans
POST /ep/user-product/delete
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » id | body | integer | is | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST Batch delete expired plans
POST /ep/user-product/batch-delete
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"ids": [1]
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » ids | body | [integer] | yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST to modify package remarks
POST /ep/user-product/change-remark
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"id": 1,
"remark": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » id | body | integer | is | none |
| » remark | body | string | yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST batch setting of static IP UDP switch
POST /ep/user-product/set-ip-udp
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"ids": [1],
"udp": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » ids | body | [integer] | yes | none |
| » udp | body | integer | is | none |
Enumeration value
| Attribute | Value |
|---|---|
| » udp | 0 |
| » udp | 1 |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
Package Management
POST to change the static IP address of the data center ISP
POST /ep/user-product/change-datacenter-isp-ip
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"id": 1,
"country_code": "string",
"ip": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » id | body | integer | is | User Package ID |
| » country_code | body | string | No | Target country/region code; if not provided, the current IP address's country/region code will be used first. |
| » ip | body | string | No | Target IP prefix filter |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"ip_id": 1,
"ip": "string",
"country_code": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
GET Retrieve Static IP Change Record
GET /ep/user-product/ip-change-log
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Resource space identifier; personal space can be omitted or an empty string can be passed |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"old": "string",
"new": "string",
"created_at": "string",
"created_timestamp": 0
}
],
"page": 1,
"page_size": 1,
"total_count": 0,
"page_count": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
POST settings for setting the auto-renewal switch for a single plan
POST /ep/user-product/set-auto-renewal
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_id": 1,
"status": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » user_product_id | body | integer | yes | none |
| » status | body | integer | No | 0 = disabled, 1 = enabled |
Enumeration value
| Attribute | Value |
|---|---|
| » status | 0 |
| » status | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
POST Batch Set Automatic Renewal Switch for Subscription Plans
POST /ep/user-product/batch-set-auto-renewal
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_ids": [1],
"status": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » user_product_ids | body | [integer] | yes | none |
| » status | body | integer | No | 0 = disabled, 1 = enabled |
Enumeration value
| Attribute | Value |
|---|---|
| » status | 0 |
| » status | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"results": [
{
"user_product_id": 1,
"success": true,
"id": 1
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful; processing results returned independently for each package | Inline |
Return data structure
POST sets the default auto-renewal parameters for the product type.
POST /ep/user-product/set-auto-renewal-default-config
At least one of days_before_expire, traffic_threshold, and refreshal_cycle_days must be passed; a value of 0 indicates that the corresponding configuration is reset.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"product_type": 9,
"days_before_expire": 30,
"traffic_threshold": 100,
"renewal_cycle_days": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » product_type | body | integer | yes | none |
| » days_before_expire | body | integer | no | none |
| » traffic_threshold | body | integer | No | Unit: GB, supported only on 9/12/24 |
| » renewal_cycle_days | body | integer | No | Only supported for 11/14/16/25 days, and must be the current product cycle. |
| »anonymous | body | object | no | none |
| »anonymous | body | object | no | none |
| »anonymous | body | object | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| » product_type | 9 |
| » product_type | 11 |
| » product_type | 12 |
| » product_type | 14 |
| » product_type | 16 |
| » product_type | 24 |
| » product_type | 25 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Request successful, data is null | Inline |
Return data structure
POST request retrieves the default auto-renewal parameters for the product type.
POST /ep/user-product/get-auto-renewal-default-config
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"product_type": 9
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » product_type | body | integer | No | If not specified, all supported types will be returned |
Enumeration value
| Attribute | Value |
|---|---|
| » product_type | 9 |
| » product_type | 11 |
| » product_type | 12 |
| » product_type | 14 |
| » product_type | 16 |
| » product_type | 24 |
| » product_type | 25 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"configs": [
{
"product_type": "[",
"days_before_expire": 0,
"source": "[",
"renewal_cycle": {},
"traffic_threshold": 0,
"traffic_source": "["
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| product_type | 9 |
| product_type | 11 |
| product_type | 12 |
| product_type | 14 |
| product_type | 16 |
| product_type | 24 |
| product_type | 25 |
| source | user |
| source | system |
| source | user |
| source | system |
| traffic_source | user |
| traffic_source | system |
POST to retrieve auto-renewal configuration and renewal preview for a single plan.
POST /ep/user-product/get-auto-renewal
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » user_product_id | body | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"expired_at": "string",
"time_days": 0,
"time_unit": "day",
"next_expired_at": "string",
"agreed_price": 0,
"currency": "string",
"config": {
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"product_type": 0,
"left_traffic": 0,
"left_days": 0,
"user_product_id": 1,
"product_id": 0,
"status": 0,
"currency": "string",
"agreed_price": 0,
"agreed_bandwidth_price": 0,
"agreed_concurrency_price": 0,
"bandwidth_id": 0,
"concurrency_id": 0,
"duration": 0,
"renew_product_id": 0,
"days_before_expire": 0,
"traffic_threshold": 0,
"parent_product_type": 0,
"created_at": "string",
"updated_at": "string"
},
"traffic_threshold": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| time_unit | day |
| time_unit | hour |
| status | 0 |
| status | 1 |
POST to retrieve automatic renewal execution records
POST /ep/user-product/auto-renewal-logs
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"user_product_id": 1,
"page": 1,
"size": 20
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » user_product_id | body | integer | No | If not specified, query all records in the current space |
| » page | body | integer | no | none |
| » size | body | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"config_id": 0,
"user_product_id": 1,
"product_type": 0,
"renew_product_id": 0,
"order_id": 0,
"fee": 0,
"currency": "string",
"before_expired_at": "string",
"after_expired_at": "string",
"before_remain": 0,
"after_remain": 0,
"trigger_type": "[",
"status": "[",
"revoke_at": "string",
"revoke_remark": "string",
"created_at": "string",
"updated_at": "string"
}
],
"page": 1,
"page_size": 1,
"total_page": 0,
"total_count": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| trigger_type | 0 |
| trigger_type | 1 |
| status | 1 |
| status | 2 |
| status | 3 |
Order Management
GET Order List
GET /ep/order/list
Team space orders additionally return the creator, indicating the actual member who placed the order; administrators and super administrators can see the full contact information, while other roles receive anonymized contact information.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId | No | Order resource space identifier; personal space can be omitted or an empty string can be passed |
| page_no | query | integer | no | none |
| page_size | query | integer | no | none |
| trade_no | query | string | No | Order number |
| start_time | query | string(date-time) | No | Start time (inclusive), e.g., 2024-01-01 00:00:00 |
| end_time | query | string(date-time) | No | End time (excluding) |
| status | query | integer | No | Order status |
| product_type | query | integer | No | Product type |
| invoice | query | integer | No | Invoice status: 0 Unrestricted, 1 Invoice issued, -1 Invoice not issued (can be reissued) |
| pay_fee_status | query | integer | No | Filter by long/short amount: 1. Overpayment 2. Underpayment |
Detailed description
status: Order status
| Status | Description |
|---|---|
| 0 | Pending Payment |
| 1 | Paid |
| 2 | Unpaid after timeout has been cancelled |
| 3 | Refund received |
product_type: Product type
| Product Type | Description |
|---|---|
| 3 | Balance Top-up |
| 9 | Dynamic Data Plan |
| 11 | Dynamic Global Time Package V2 |
| 12 | Long-term IDC traffic package |
| 13 | Residential Static IP Traffic Package |
| 14 | Data Center Static IP Package |
| 15 | Long-term ISP data plans |
| 16 | Static Data Plan |
| 17 | Dynamic IP Quantity Package |
| 18 | web-scraper |
| 19 | Static IP Renewal |
| 20 | Change Static IP Quota |
| 21 | Static Traffic Package v2 |
| 24 | Static Traffic Supplement Package |
| 25 | Residential Static IP Package |
| 26 | Order Replacement - Some payment channels require users to manually enter the amount, such as virtual currency. If a shortfall occurs, you need to contact customer service to make a replacement payment through this product. |
| 27 | Serp |
| 28 | Video |
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| product_type | 3 |
| product_type | 9 |
| product_type | 11 |
| product_type | 12 |
| product_type | 14 |
| product_type | 16 |
| product_type | 17 |
| product_type | 18 |
| product_type | 19 |
| product_type | 21 |
| product_type | 24 |
| product_type | 25 |
| product_type | 26 |
| product_type | 27 |
| product_type | 28 |
| invoice | -1 |
| invoice | 0 |
| invoice | 1 |
| pay_fee_status | 1 |
| pay_fee_status | 2 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 0,
"trade_no": "string",
"out_trade_no": "string",
"product_id": 0,
"product_type": 0,
"amount": 0,
"unit_price": 0.1,
"total_fee": 0.1,
"goods_fee": 0.1,
"pay_fee": 0.1,
"discount_fee": 0.1,
"handling_fee": 0.1,
"refund_fee": 0.1,
"pm_id": 0,
"pm_title": "string",
"pm_logo": "string",
"status": 0,
"title": "string",
"detail": "string",
"region_desc": "string",
"pay_at": "2019-08-24T14:15:22Z",
"pay_timestamp": 0,
"created_at": "2019-08-24T14:15:22Z",
"pay_fee_status": 0,
"invoice": {}
}
],
"pagination": {
"total": 0,
"page_no": 0,
"page_size": 0,
"total_pages": 0
}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Success | Inline |
Return data structure
POST Create order
POST /ep/order/create
Due to the variety of packages available, and the different configurations for each package, please fill in the parameters according to your actual situation. Incorrectly filled parameters may result in order creation failure.
Examples:
Renewing static IP
{
"pid": 套餐ID, // 从 /openapi/product 接口获取
"upids": "1,2,3,4,5,6", // 从 /openapi/ip/get-static-ip 接口获取对应的 id 字段
"pm_id": 1 // 从 /openapi/payment/list 或 /openapi/payment/groups 接口获取
}
Purchase of static residential IP
{
"pid": 套餐ID, // 从 /openapi/product 接口获取
"pm_id": 支付方式ID, // 从 /openapi/payment/list 或 /openapi/payment/groups 接口获取
"region_list": "JP,15,333|DE,10,444|US,5,555" // 格式:地区,数量,ASN|地区,数量,ASN(ASN编号可选)
}
Static data center IP purchase
{
"pid": 套餐ID, // 从 /openapi/product 接口获取
"pm_id": 支付方式ID, // 从 /openapi/payment/list 或 /openapi/payment/groups 接口获取
"region_list": "JP,15,333|DE,10,444|US,5,555" // 格式:地区,数量,ASN|地区,数量,ASN(ASN编号可选)
}
Dynamic residential traffic purchase
{
"pid": 套餐ID, // 从 /openapi/product 接口获取
"pm_id": 支付方式ID // 从 /openapi/payment/list 或 /openapi/payment/groups 接口获取
}
Static rotating traffic purchase
{
"pid": 套餐ID, // 从 /openapi/product 接口获取
"pm_id": 支付方式ID // 从 /openapi/payment/list 或 /openapi/payment/groups 接口获取
}
Dynamic unlimited traffic purchase
{
"pid": 套餐ID, // 从 /openapi/product 接口获取
"pm_id": 支付方式ID, // 从 /openapi/payment/list 或 /openapi/payment/groups 接口获取
"product_sku_bandwidth_id": 带宽规格ID,
"product_sku_concurrency_id": 并发规格ID
}
Balance Top-up
{
"pid": 套餐ID, // 从 /openapi/product 接口获取
"pm_id": 支付方式ID, // 从 /openapi/payment/list 或 /openapi/payment/groups 接口获取
"recharge_amount": 充值金额
}
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"pid": 0,
"upids": "string",
"amount": 0,
"pm_id": 0,
"region_list": "string",
"coupon_sn": "string",
"use_invitation_registration_discount": true,
"renew_duration": 0,
"product_sku_bandwidth_id": 0,
"product_sku_concurrency_id": 0,
"product_sku_duration_id": 0,
"etd": 1,
"recharge_amount": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » pid | body | integer | Yes | Package ID, from the id field returned by the /openapi/product interface |
| » upids | body | string | No | List of renewal package IDs (comma-separated), from the id field returned by the /openapi/user-product/list or /openapi/ip/get-static-ip API |
| » amount | body | number | No | Quantity of new package purchases |
| » pm_id | body | integer | Yes | Payment method ID, from the id field returned by the /openapi/payment/list or /openapi/payment/groups API |
| » region_list | body | string | No | Specify the region, quantity, and ASN number when purchasing static IPs. Format: Region, Quantity, ASN |
| » coupon_sn | body | string | No | Coupon ID |
| » use_invitation_registration_discount | body | boolean | No | Whether to use the invitation registration discount |
| » renew_duration | body | integer | No | Renewal duration - optional for static IP |
| » product_sku_bandwidth_id | body | integer | No | Package 11: Bandwidth Package ID |
| » product_sku_concurrency_id | body | integer | No | Package 11: Concurrency Package ID |
| » product_sku_duration_id | body | integer | No | Package type=11 Required: Duration Specification ID |
| » etd | body | integer | No | Duration multiplier, obtained from the package extension_of_time_days, 2 represents days × 2, price increases |
| » recharge_amount | body | integer | No | Package 3: Recharge Amount |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 0,
"trade_no": "string",
"out_trade_no": "string",
"product_id": 0,
"product_type": 0,
"amount": 0,
"unit_price": 0.1,
"total_fee": 0.1,
"goods_fee": 0.1,
"pay_fee": 0.1,
"discount_fee": 0.1,
"handling_fee": 0.1,
"refund_fee": 0.1,
"pm_id": 0,
"pm_title": "string",
"pm_logo": "string",
"status": 0,
"title": "string",
"detail": "string",
"region_desc": "string",
"pay_at": "2019-08-24T14:15:22Z",
"pay_timestamp": 0,
"created_at": "2019-08-24T14:15:22Z",
"pay_fee_status": 0,
"invoice": {
"name": "string",
"org_name": "string",
"first_name": "string",
"last_name": "string",
"phone": "string",
"email": "user@example.com",
"role_type": 0,
"vat_id": "string",
"address_country": "string",
"address_city": "string",
"address_line1": "string",
"address_line2": "string",
"address_postal_code": "string"
}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Created successfully | Inline |
Return data structure
POST Cancel Order
POST /ep/order/close
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"trade_no": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » trade_no | body | string | yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
GET Order Details
GET /ep/order/info
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| trade_no | query | string | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 0,
"trade_no": "string",
"out_trade_no": "string",
"product_id": 0,
"product_type": 0,
"amount": 0,
"unit_price": 0.1,
"total_fee": 0.1,
"goods_fee": 0.1,
"pay_fee": 0.1,
"discount_fee": 0.1,
"handling_fee": 0.1,
"refund_fee": 0.1,
"pm_id": 0,
"pm_title": "string",
"pm_logo": "string",
"status": 0,
"title": "string",
"detail": "string",
"region_desc": "string",
"pay_at": "2019-08-24T14:15:22Z",
"pay_timestamp": 0,
"created_at": "2019-08-24T14:15:22Z",
"pay_fee_status": 0,
"invoice": {
"name": null,
"org_name": null,
"first_name": null,
"last_name": null,
"phone": null,
"email": null,
"role_type": null,
"vat_id": null,
"address_country": null,
"address_city": null,
"address_line1": null,
"address_line2": null,
"address_postal_code": null
}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please continue to check the response body code. | Inline |
Return data structure
GET Order Details V2
GET /ep/order/info-v2
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| order_id | query | string | Yes | Client-encrypted order ID |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 0,
"trade_no": "string",
"out_trade_no": "string",
"product_id": 0,
"product_type": 0,
"amount": 0,
"unit_price": 0.1,
"total_fee": 0.1,
"goods_fee": 0.1,
"pay_fee": 0.1,
"discount_fee": 0.1,
"handling_fee": 0.1,
"refund_fee": 0.1,
"pm_id": 0,
"pm_title": "string",
"pm_logo": "string",
"status": 0,
"title": "string",
"detail": "string",
"region_desc": "string",
"pay_at": "2019-08-24T14:15:22Z",
"pay_timestamp": 0,
"created_at": "2019-08-24T14:15:22Z",
"pay_fee_status": 0,
"invoice": {
"name": null,
"org_name": null,
"first_name": null,
"last_name": null,
"phone": null,
"email": null,
"role_type": null,
"vat_id": null,
"address_country": null,
"address_city": null,
"address_line1": null,
"address_line2": null,
"address_postal_code": null
}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | HTTP success; order data may be carried with a business error code if the order has been paid or cancelled | Inline |
Return data structure
POST for reissuing invoices for historical orders
POST /ep/order/reissue-invoice
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"trade_no_list": ["string"]
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » trade_no_list | body | [string] | yes | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST order pre-inspection
POST /ep/order/check
This function is called before order creation to preview prices, discounts, IP renewal details, etc., and does not actually create an order. Parameters and /openapi/order/create Totally consistent.
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"pid": 0,
"upids": "string",
"amount": 1,
"pm_id": 0,
"region_list": "string",
"coupon_sn": "string",
"renew_duration": "1m",
"product_sku_bandwidth_id": 0,
"product_sku_concurrency_id": 0,
"product_sku_duration_id": 0,
"etd": 1,
"recharge_amount": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » pid | body | integer | Yes | Package ID |
| » upids | body | string | No | IP Renewal: List of user package IDs, comma-separated |
| » amount | body | integer | No | Purchase quantity |
| » pm_id | body | integer | Yes | Payment method ID |
| » region_list | body | string | No | Static IP purchase regions + quantity, format: region ID, quantity |
| » coupon_sn | body | string | No | Coupon ID |
| » renew_duration | body | string | No | IP renewal duration: 1m = 1 month, 2m = 2 months, em = end of next month |
| » product_sku_bandwidth_id | body | integer | No | Package type=11 Required: Bandwidth specification ID |
| » product_sku_concurrency_id | body | integer | No | Package type=11 Required: Concurrency Specification ID |
| » product_sku_duration_id | body | integer | No | Package type=11 Required: Duration Specification ID |
| » etd | body | integer | No | Duration multiplier, obtained from the package extension_of_time_days |
| » recharge_amount | body | number | No | Package type=3 Required: Recharge amount |
Enumeration value
| Attribute | Value |
|---|---|
| » renew_duration | 1m |
| » renew_duration | 2m |
| » renew_duration | em |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"product_id": 0,
"amount": 0,
"discount_fee": 0.1,
"total_fee": 0.1,
"pay_fee": 0.1,
"product_type": 0,
"title": "string",
"detail": "string",
"ip_result": [
{
"ip": "string",
"price": 0.1,
"country_code": "string",
"current_time": "2019-08-24T14:15:22Z",
"renewal_time": "2019-08-24T14:15:22Z",
"country": {}
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Pre-check successful | Inline |
Return data structure
Payment Management
POST to initiate order payment
POST /ep/pay
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| trade_no | query | string | yes | none |
| pm_id | query | integer | no | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST request to initiate payment for unpaid orders placed in the backend.
POST /ep/pay/index-choose
Body Request Parameters
{
"team_id": "A1b2C3d4E5f6",
"trade_no": "string",
"pay_method": 0,
"pm_id": 0,
"trade_type": "string"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » team_id | body | any | No | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 character public team identifier |
| »»anonymous | body | string | no | none |
| »»anonymous | body | TeamPublicId | No | Public team identifier, starting with an ASCII letter, with the remaining characters consisting only of ASCII letters and numbers; no numeric primary key will be issued to the database. |
| » trade_no | body | string | yes | none |
| » pay_method | body | integer | no | none |
| » pm_id | body | integer | no | none |
| » trade_type | body | string | no | none |
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Operation successful | None |
POST payment verification and fee preview
POST /ep/pay/pay-check
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| trade_no | query | string | yes | none |
| pm_id | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"trade_no": "string",
"pm_id": 0,
"pay_method": 0,
"trade_type": "string",
"country_code": "string",
"currency": "string",
"goods_fee": 0,
"discount_fee": 0,
"handling_fee": 0,
"pay_fee": 0,
"total_fee": 0,
"pay_method_info": {
"id": null,
"type": null,
"title": null,
"group": null,
"handling_rate": null,
"handling_fee": null,
"handling_fee_currency": null,
"handling_fee_converted": null
},
"origin": {
"pm_id": 0,
"pay_method": 0,
"goods_fee": 0,
"discount_fee": 0,
"handling_fee": 0,
"pay_fee": 0,
"total_fee": 0
}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | Request successful | Inline |
Return data structure
GET requests directly render the web payment page.
GET /ep/pay/web-direct-pay
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| team_id | query | ResourceSpaceId No | none | |
| trade_no | query | string | yes | none |
| pm_id | query | integer | no | none |
Return to example
200 Response
"string"
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | HTML Payment Page | string |
GET to retrieve a list of payment methods
GET /ep/payment/list
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| trade_no | query | string | No | Order number - Can be passed in when a specific payment method is required for some orders |
| currency | query | string | no | currency unit |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 0,
"title": "string",
"logo": "string",
"group": "string",
"handling_rate": 0,
"handling_fee": 0,
"disabled": false,
"min": 0,
"max": 0
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Successfully retrieved | Inline |
Return data structure
GET to retrieve a list of payment methods
GET /ep/payment/groups
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| trade_no | query | string | No | Order number - Can be passed in when a specific payment method is required for some orders |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"name": "string",
"logos": [null],
"items": [null]
}
]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK Successfully retrieved | Inline |
Return data structure
marketing
Get recharge bonus ratio
GET /ep/activity/balance-recharge-gift-ratio
Recharge Bonus Ratio
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [null]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | OK | Inline |
Return data structure
product
GET Product List
GET /ep/product
Get a list of available packages on the current site, and filter by type, validity period, and other criteria.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| type | query | integer | No | Package type, see Product.type enumeration description. Returns all types if not specified. |
| parent_product_type | query | integer | No | Parent package type, only valid when type=19 (IP renewal), used to filter product lines: 14=Data Center 25=Residential |
| time_days | query | any | No | Filter by validity period in days, supports single value or array, e.g., 30 / [30,90,365] |
| show_type | query | any | No | Displays type filtering, supports single value or array |
Detailed description
type: Package type, see Product.type enumeration description. If not specified, all types will be returned.
Enumeration value
| Attribute | Value |
|---|---|
| parent_product_type | 14 |
| parent_product_type | 25 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": [
{
"id": 0,
"title": "string",
"type": 0,
"show_type": 0,
"status": 0,
"price": 0.1,
"usd_price": 0.1,
"price_hkd": 0.1,
"original_price": 0.1,
"original_usd_price": 0.1,
"original_price_hkd": 0.1,
"local_price": 0.1,
"local_original_price": 0.1,
"preferred_currency": "string",
"support_currencies": "string",
"flow_value": 0.1,
"flow_give": 0.1,
"balance_give": 0.1,
"balance_value": 0.1,
"time_validity": 0.1,
"time_price": 0.1,
"time_days": 0,
"tip1": "string",
"tip2": "string",
"introduce": ["string"],
"region_list_id": 0,
"renew_product_list": "string",
"parent_product_type": 0,
"total_count": 0,
"remain_count": 0,
"extension_of_time_days": [0],
"time_days_price_rate": 0.1,
"desc": {
"subtitle": "string",
"flow_value": 0.1,
"flow_give": 0.1,
"balance_give": 0.1,
"time_validity": 0.1,
"time_price": 0.1,
"tip1": "string",
"tip2": "string",
"introduce": [null]
},
"sku": {
"bandwidth_list": [null],
"duration_list": [null],
"concurrency_list": [null]
}
}
],
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK | OK | Inline |
Return data structure
Account Management
Get a personal account overview
GET /ep/account/profile
Only personal space login status or personal API Key is supported; team API Key is not supported.
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 0,
"username": "string",
"nickname": "string",
"email": "string",
"balance": "string",
"gift_balance": "string",
"currency": "string",
"language": "string",
"timezone": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
GET to check personal balance and transaction history
GET /ep/wallet/change-list
Only personal space login status or personal API Key is supported; team API Key is not supported.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| re_type | query | integer | no | none |
| transaction_type | query | integer | no | none |
| balance_type | query | integer | no | none |
| page | query | integer | no | none |
| page_size | query | integer | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| re_type | 0 |
| re_type | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"page": 0,
"page_size": 0,
"total_count": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Log export
POST Create Proxy Log Export Task
POST /ep/user-usage-flow-log-export/create
Only personal space login status or personal API Key is supported; team API Key is not supported. The start time must be earlier than the end time, and the time span cannot exceed 31 days; only one export task is allowed per user, and the log limit is 5 million entries.
Body Request Parameters
{
"start_time": 0,
"end_time": 0,
"type": "dynamic"
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » start_time | body | integer | Yes | Start Unix timestamp, seconds |
| » end_time | body | integer | Yes | End Unix timestamp, seconds |
| » type | body | string | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| » type | dynamic |
| » type | host_pool |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"task_id": 0,
"status": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
GET query log export task details
GET /ep/user-usage-flow-log-export/detail
Only personal space login status or personal API Key is supported; team API Key is not supported.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| task_id | query | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 0,
"user_id": 0,
"start_time": "string",
"end_time": "string",
"status": "pending",
"file_size": 0,
"record_count": 0,
"created_at": "string",
"completed_at": "string",
"file_url": "string",
"download_url": "string",
"error_message": "string"
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | pending |
| status | processing |
| status | completed |
| status | failed |
| status | canceled |
| status | no_data |
GET query log to export task list
GET /ep/user-usage-flow-log-export/list
Only personal space login status or personal API Key is supported; team API Key is not supported.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| page | query | integer | no | none |
| size | query | integer | no | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"total": 0,
"page": 0,
"size": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | pending |
| status | processing |
| status | completed |
| status | failed |
| status | canceled |
| status | no_data |
POST cancels a log export task that has not yet been executed.
POST /ep/user-usage-flow-log-export/cancel
Only personal space login status or personal API Key is supported; team API Key is not supported. Only tasks in the waiting queue can be cancelled; tasks already executed cannot be cancelled.
Body Request Parameters
{
"task_id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » task_id | body | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
coupons
POST to retrieve your personal coupon list
POST /ep/user-coupon/list
Only personal space login status or personal API Key is supported; team API Key is not supported.
Body Request Parameters
{
"status": 0,
"page": 1,
"size": 20
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | no | none |
| » status | body | integer | no | none |
| » page | body | integer | no | none |
| » size | body | integer | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| » status | 0 |
| » status | 1 |
| » status | 2 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"page": 0,
"page_size": 0,
"page_count": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
POST to view personal coupon details
POST /ep/user-coupon/info
Only personal space login status or personal API Key is supported; team API Key is not supported.
Body Request Parameters
{
"id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » id | body | integer | is | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 0,
"coupon_id": 0,
"type": 0,
"status": 0,
"source": 0,
"title": "string",
"title_en": "string",
"description": "string",
"description_en": "string",
"start_amount": "string",
"start_amount_usd": "string",
"start_amount_hkd": "string",
"deduction_amount": "string",
"deduction_amount_usd": "string",
"deduction_amount_hkd": "string",
"discount_rate": "string",
"discount_ceiling_amount": "string",
"discount_ceiling_amount_usd": "string",
"discount_ceiling_amount_hkd": "string",
"created_at": "string",
"effect_at": "string",
"expired_at": "string",
"used_at": "string",
"product_types": "string",
"created_timestamp": 0,
"effect_timestamp": 0,
"expired_timestamp": 0,
"used_timestamp": 0,
"is_expired": true
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Notification Management
GET query site notifications
GET /ep/notify/list
Only personal space login status or personal API Key is supported; team API Key is not supported.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| page | query | integer | no | none |
| size | query | integer | no | none |
| read | query | integer | no | none |
| type | query | integer | no | none |
Enumeration value
| Attribute | Value |
|---|---|
| read | 0 |
| read | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"page": 0,
"size": 0,
"total": 0,
"total_unread_count": 0,
"unread_count_by_type": {}
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| read_status | 0 |
| read_status | 1 |
GET to view site notification details
GET /ep/notify/detail
Only personal space login status or personal API Key is supported; team API Key is not supported.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| id | query | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 0,
"title": "string",
"content": "string",
"type": 0,
"read_status": 0,
"created_at": "string",
"created_timestamp": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| read_status | 0 |
| read_status | 1 |
POST marks in-site notifications as read
POST /ep/notify/read
Only personal space login status or personal API Key is supported; team API Key is not supported.
Body Request Parameters
{
"id": 1
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » id | body | integer | is | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
POST batch marking of internal notifications as read
POST /ep/notify/batch-read
Only personal space login status or personal API Key is supported; team API Key is not supported.
Body Request Parameters
{
"ids": [1]
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » ids | body | [integer] | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
GET query notification channel configuration
GET /ep/user-notify
Only personal space login status or personal API Key is supported; team API Key is not supported.
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
GET Query Notification Email
GET /ep/user-notification-email/list
Only personal space login status or personal API Key is supported; team API Key is not supported.
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}],
"max_count": 0,
"current_count": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
GET query notification scenario
GET /ep/user-notification-email/scenes
Only personal space login status or personal API Key is supported; team API Key is not supported.
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [{}]
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
GET query for email subscription scenarios
GET /ep/user-notification-email/email-scenes
Only personal space login status or personal API Key is supported; team API Key is not supported.
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| id | query | integer | yes | none |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"scenes": [0],
"subscribe_all": true
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Proxy configuration
GET query personal agent cache switch
GET /ep/proxy-cache/status
Only personal space login status or personal API Key is supported; team API Key is not supported.
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"status": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
POST setting personal agent cache switch
POST /ep/proxy-cache/change
Only personal space login status or personal API Key is supported; team API Key is not supported.
Body Request Parameters
{
"status": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » status | body | integer | yes | none |
Enumeration value
| Attribute | Value |
|---|---|
| » status | 0 |
| » status | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": null,
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
GET query personal proxy UDP switch
GET /ep/user-proxy-config/udp
Only personal space login status or personal API Key is supported; team API Key is not supported.
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"enabled": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| enabled | 0 |
| enabled | 1 |
POST to set personal proxy UDP switch
POST /ep/user-proxy-config/udp
Only personal space login status or personal API Key is supported; team API Key is not supported.
Body Request Parameters
{
"udp": 0
}
Request parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
| body | body | object | yes | none |
| » udp | body | integer | is | none |
Enumeration value
| Attribute | Value |
|---|---|
| » udp | 0 |
| » udp | 1 |
Return to example
200 Response
{
"code": 200,
"msg": "SUCCESS",
"data": {
"enabled": 0
},
"request_id": "string"
}
Return results
| Status Codes | Status Code Meaning | Explanation | Data Model |
|---|---|---|---|
| 200 | OK HTTP successful; please check the business code, 200 indicates success. | Inline |
Return data structure
Enumeration value
| Attribute | Value |
|---|---|
| enabled | 0 |
| enabled | 1 |
Data Model
ApiKeyManageRequest
{
"team_id": "A1b2C3d4E5f6",
"id": 1
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| team_id | ResourceSpaceId | false | none | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 digit public team identifier | |
| id | integer | true | none | API Key ID |
OpenApiAccountProfile
{
"id": 0,
"username": "string",
"nickname": "string",
"email": "string",
"balance": "string",
"gift_balance": "string",
"currency": "string",
"language": "string",
"timezone": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | true | none | User ID | |
| username | string | true | none | Username | |
| nickname | string | true | none | nickname | |
| string | true | none | bind email | ||
| balance | string | true | none | Recharge balance, decimal string | |
| gift_balance | string | true | none | Current gift balance, decimal string | |
| currency | string | true | none | Site currency | |
| language | string | true | none | User language, used when not configured | |
| timezone | string | true | none | User timezone, used when not configured |
OpenApiBalanceRecord
{
"id": 0,
"re_type": 0,
"transaction_type": 0,
"balance_type": 0,
"fee": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | Database values may be serialized to strings | |
| re_type | integer | false | none | 0 expenditure, 1 income | |
| transaction_type | integer | false | none | Transaction type | |
| balance_type | integer | false | none | Balance type | |
| fee | string | false | none | Variable amount, site currency |
OpenApiLogExportTask
{
"id": 0,
"user_id": 0,
"start_time": "string",
"end_time": "string",
"status": "pending",
"file_size": 0,
"record_count": 0,
"created_at": "string",
"completed_at": "string",
"file_url": "string",
"download_url": "string",
"error_message": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | Database values may be serialized to strings | |
| user_id | integer | false | none | Details API returns | |
| start_time | string | false | none | Ymd H:i:s; non-RFC 3339 date | |
| end_time | string | false | none | Ymd H:i:s; non-RFC 3339 date | |
| status | string | false | none | none | |
| file_size | integer¦null | false | none | none | |
| record_count | integer¦null | false | none | none | |
| created_at | string | false | none | Ymd H:i:s; non-RFC 3339 date | |
| completed_at | string | false | none | Ymd H:i:s; non-RFC 3339 date | |
| file_url | string | false | none | Details returned by the API upon completion | |
| download_url | string | false | none | Returns a signed download link valid for 24 hours after completion | |
| error_message | string | false | none | The details API may return a value on failure |
Enumeration value
| Attribute | Value |
|---|---|
| status | pending |
| status | processing |
| status | completed |
| status | failed |
| status | canceled |
| status | no_data |
OpenAPI Coupon
{
"id": 0,
"coupon_id": 0,
"type": 0,
"status": 0,
"source": 0,
"title": "string",
"title_en": "string",
"description": "string",
"description_en": "string",
"start_amount": "string",
"start_amount_usd": "string",
"start_amount_hkd": "string",
"deduction_amount": "string",
"deduction_amount_usd": "string",
"deduction_amount_hkd": "string",
"discount_rate": "string",
"discount_ceiling_amount": "string",
"discount_ceiling_amount_usd": "string",
"discount_ceiling_amount_hkd": "string",
"created_at": "string",
"effect_at": "string",
"expired_at": "string",
"used_at": "string",
"product_types": "string",
"created_timestamp": 0,
"effect_timestamp": 0,
"expired_timestamp": 0,
"used_timestamp": 0,
"is_expired": true
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | Database values may be serialized to strings | |
| coupon_id | integer | false | none | Database values may be serialized to strings | |
| type | integer | false | none | Database values may be serialized to strings | |
| status | integer | false | none | Database values may be serialized to strings | |
| source | integer | false | none | Database values may be serialized to strings | |
| title | string | false | none | none | |
| title_en | string | false | none | none | |
| description | string | false | none | none | |
| description_en | string | false | none | none | |
| start_amount | string¦null | false | none | none | |
| start_amount_usd | string¦null | false | none | none | |
| start_amount_hkd | string¦null | false | none | none | |
| deduction_amount | string¦null | false | none | none | |
| deduction_amount_usd | string¦null | false | none | none | |
| deduction_amount_hkd | string¦null | false | none | none | |
| discount_rate | string¦null | false | none | none | |
| discount_ceiling_amount | string¦null | false | none | none | |
| discount_ceiling_amount_usd | string¦null | false | none | none | |
| discount_ceiling_amount_hkd | string¦null | false | none | none | |
| created_at | string¦null | false | none | Ymd H:i:s | |
| effect_at | string¦null | false | none | Ymd H:i:s | |
| expired_at | string¦null | false | none | Ymd H:i:s | |
| used_at | string¦null | false | none | Ymd H:i:s | |
| product_types | string | null | false | none | |
| created_timestamp | integer¦null | false | none | none | |
| effect_timestamp | integer¦null | false | none | none | |
| expired_timestamp | integer¦null | false | none | none | |
| used_timestamp | integer¦null | false | none | none | |
| is_expired | boolean | false | none | List interface returns |
OpenApiNotification
{
"id": 0,
"title": "string",
"content": "string",
"type": 0,
"read_status": 0,
"created_at": "string",
"created_timestamp": 0
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | Database values may be serialized to strings | |
| title | string | false | none | none | |
| content | string | false | none | Content rendered according to the requested language | |
| type | integer | false | none | Database values may be serialized to strings | |
| read_status | integer | false | none | none | |
| created_at | string | false | none | Ymd H:i:s; non-RFC 3339 date | |
| created_timestamp | integer | false | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| read_status | 0 |
| read_status | 1 |
productTypes
9
Package types: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP Package, 14 Static Data Center IP Package, 25 Static Residential IP Package
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | integer | false | none | Package type: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP, 14 Static Data Center IP, 25 Static Residential IP |
Enumeration value
| Attribute | Value |
|---|---|
| anonymous | 9 |
| anonymous | 11 |
| anonymous | 14 |
| anonymous | 25 |
apiKey
"pa$$word"
API Key; passed via apiKeyAuth or as a request parameter in the operation declaration.
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | string(password) | false | none | API Key; passed using apiKeyAuth or as a request parameter declared in the operation statement |
responseCode
200
Status codes: 200 Success, 3 Invalid app_key
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | integer | false | none | Status code: 200 Success, 3 Invalid app_key |
responseMsg
"success"
response message
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | string | false | none | response message |
SuccessResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
property
None
ErrorResponse
{
"code": 2,
"msg": "parameter error",
"data": {},
"request_id": "string"
}
property
None
WebV1SuccessResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {},
"request_id": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| code | integer | true | none | none | |
| msg | string | true | none | none | |
| data | object | null | true | none | |
| request_id | string | true | none | Request tracing ID |
WebV1ErrorResponse
{
"code": 2,
"msg": "parameter error",
"data": {},
"request_id": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| code | integer | true | none | Business error code |
not
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »anonymous | any | false | none | none |
continued
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| msg | string | true | none | Error description | |
| data | object | null | true | none | |
| request_id | string | true | none | Request tracing ID |
TeamPublicId
"A1b2C3d4E5f6"
The team's public identifier begins with an ASCII letter, and the remaining characters consist only of ASCII letters and numbers; no numeric primary keys will be issued for the database.
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | string | false | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; not issued as a numeric primary key in the database |
ResourceSpaceId
"A1b2C3d4E5f6"
Public resource space identifier; omit team_id or pass an empty string when requesting personal space, and respond with an empty string when responding to personal space; the number 0 and the string "0" are both invalid, team space uses a 6-12 character public team identifier.
property
oneOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | string | false | none | none |
xor
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | TeamPublicId | false | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. |
Team
{
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": 0,
"current_role": 1,
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | TeamPublicId | true | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. | |
| name | string | true | none | Team Name | |
| super_admin_user_id | integer | true | none | Super Administrator User ID | |
| status | integer | true | none | Team status: 0 = disabled, 1 = enabled, 2 = disbanding, 3 = disbanded | |
| current_role | integer | null | true | none | |
| dissolving_at | string¦null | true | none | Start dissolution time | |
| dissolved_at | string¦null | true | none | Dissolution completion time | |
| created_at | string | true | none | Creation time | |
| updated_at | string | true | none | Update time |
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| current_role | 1 |
| current_role | 2 |
| current_role | 3 |
| current_role | 4 |
| current_role | null |
TeamAsset
{
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"status": 0,
"total_amount": 0,
"remain": 0,
"bandwidth": 0,
"concurrency": 0,
"expired_at": "string",
"created_at": "string",
"ip": "string",
"country_code": "string",
"country_name": "string",
"asn": "string",
"port": 0
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | true | none | User Package ID | |
| user_id | integer | true | none | Resource owner's user ID | |
| team_id | ResourceSpaceId | true | none | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 digit public team identifier | |
| team_user_id | integer | true | none | Actual member user ID | |
| product_id | integer | true | none | Product ID | |
| product_type | integer | true | none | Product type | |
| parent_product_type | integer | true | none | Parent product type | |
| status | integer | true | none | Package status | |
| total_amount | integer(int64) | true | none | Total amount | |
| remain | integer(int64) | true | none | Remaining quantity | |
| bandwidth | integer | false | none | Bandwidth (Mbps); only returned for product_type=19 or 11 | |
| concurrency | integer | false | none | Concurrency count; only returns if product_type=11 | |
| expired_at | string | null | true | none | |
| created_at | string | true | none | Creation time | |
| ip | string | false | none | Static IP address; only returned for product_type=19 | |
| country_code | string | false | none | Static IP country code; only returned if product_type=19 | |
| country_name | string | false | none | Static IP address: Country name; only returns if product_type=19 | |
| asn | string | false | none | Static IP ASN; only returns if product_type=19 | |
| port | integer | false | none | Static IP proxy port; only returns if product_type=19 |
TeamProductInfo
{
"team_id": "A1b2C3d4E5f6",
"product_types": [0],
"product_residence_remain_count": 0,
"product_residence_total_count": 0,
"pdrue2_timestamp": 0,
"remain": 0,
"total_amount": 0,
"scraping_remain": 0,
"scraping_total_amount": 0,
"scraping_timestamp": "string",
"scraping_timestamp2": 0,
"common_scraping_remain": 0,
"common_scraping_total_amount": 0,
"common_scraping_timestamp": "string",
"common_scraping_timestamp2": 0,
"pdidcr_count": 0,
"pdidcr_total": 0,
"pdidcr_traffic_remain": 0,
"pdidcr_traffic_total": 0,
"p_sitai_ip_count": 0,
"p_sitai_ip": 0,
"p_sitai_ip_total": 0,
"p_sitai_remain": 0,
"p_sitai_total": 0,
"pdidc_count": 0,
"pdidc_total": 0,
"pdidc_ip_count": 0,
"pdidc_ip_all_count": 0,
"pdispr_count": 0,
"pdispr_total": 0,
"pdispr_traffic_remain": 0,
"pdispr_traffic_total": 0,
"product_datacenter_isp_traffic_ip_count": 0,
"product_datacenter_isp_traffc_ip": 0,
"product_datacenter_isp_traffc_ip_total": 0,
"product_datacenter_isp_traffic_ip": 0,
"product_datacenter_isp_traffic_ip_total": 0,
"product_datacenter_isp_traffc_remain": 0,
"product_datacenter_isp_traffc_total": 0,
"product_datacenter_isp_traffic_remain": 0,
"product_datacenter_isp_traffic_total": 0,
"product_datacenter_isp_ip": 0,
"product_datacenter_isp_ip_total": 0,
"product_datacenter_isp_ip_count": 0,
"product_datacenter_isp_ip_all_count": 0,
"product_datacenter_isp_ip_traffic_remain": 0,
"product_datacenter_isp_ip_traffic_total": 0,
"product_agent_residence_remain_count": 0,
"product_agent_residence_total_count": 0,
"product_serp_remain": 0,
"product_serp_total": 0,
"product_serp_timestamp": "string",
"product_serp_timestamp2": 0,
"product_video_remain": 0,
"product_video_total": 0,
"product_video_timestamp": "string",
"product_video_timestamp2": 0
}
The package statistics fields are consistent with /web_v1/user/info; cancellation, refund, or soft deletion records are not included in the summary; except for team_id and product_types, only fields corresponding to the product types supported by the current site are returned.
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| team_id | TeamPublicId | true | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. | |
| product_types | [integer] | true | none | Team resource space has not been canceled or soft-deleted and the current site supports the following package types | |
| product_residence_remain_count | integer(int64) | false | none | Type 9 Remaining traffic | |
| product_residence_total_count | integer(int64) | false | none | Type 9 Total Flow | |
| pdrue2_timestamp | integer(int64) | false | none | Type 11 Latest expiration timestamp; 0 if no team package is available | |
| remain | integer | false | none | Type 17 Remaining quantity | |
| total_amount | integer | false | none | Type 17 Total quantity | |
| scraping_remain | integer(int64) | false | none | Type 18 Remaining count | |
| scraping_total_amount | integer(int64) | false | none | Type 18 Total number of scrapings | |
| scraping_timestamp | string | false | none | Type 18 Latest expiration time; "-" if no plan is available | |
| scraping_timestamp2 | integer(int64) | false | none | Type 18 Latest expiration timestamp | |
| common_scraping_remain | integer(int64) | false | none | Type 29 Remaining attempts | |
| common_scraping_total_amount | integer(int64) | false | none | Type 29 Total number of scrapings | |
| common_scraping_timestamp | string | false | none | Type 29 Latest expiration time; "-" if no plan is available | |
| common_scraping_timestamp2 | integer(int64) | false | none | Type 29 Latest expiration timestamp | |
| pdidcr_count | integer | false | none | Type 12 Valid package quantity | |
| pdidcr_total | integer | false | none | Type 12 Total number of packages | |
| pdidcr_traffic_remain | integer(int64) | false | none | Type 12 Remaining traffic | |
| pdidcr_traffic_total | integer(int64) | false | none | Type 12 Total traffic | |
| p_sitai_ip_count | integer | false | none | Type 13 Number of valid IPs | |
| p_sitai_ip | integer | false | none | Type 13 Number of valid packages | |
| p_sitai_ip_total | integer | false | none | Type 13 Total number of packages | |
| p_sitai_remain | integer(int64) | false | none | Type 13/24 Remaining bandwidth | |
| p_sitai_total | integer(int64) | false | none | Type 13/24 Total flow | |
| pdidc_count | integer | false | none | Type 14 Quantity of valid packages | |
| pdidc_total | integer | false | none | Type 14 Total number of packages | |
| pdidc_ip_count | integer | false | none | Type 14 Count of valid IPs | |
| pdidc_ip_all_count | integer | false | none | Type 14 Total number of IPs | |
| pdispr_count | integer | false | none | Type 15 Valid package quantity | |
| pdispr_total | integer | false | none | Type 15 Total number of packages | |
| pdispr_traffic_remain | integer(int64) | false | none | Type 15 Remaining traffic | |
| pdispr_traffic_total | integer(int64) | false | none | Type 15 Total traffic | |
| product_datacenter_isp_traffic_ip_count | integer | false | none | Type 16 Count of valid IPs | |
| product_datacenter_isp_traffc_ip | integer | false | none | Type 16 Valid package quantity; historically compatible spelling | |
| product_datacenter_isp_traffc_ip_total | integer | false | none | Type 16 Total number of packages; historically compatible spelling | |
| product_datacenter_isp_traffic_ip | integer | false | none | Type 16 Valid package quantity | |
| product_datacenter_isp_traffic_ip_total | integer | false | none | Type 16 Total number of packages | |
| product_datacenter_isp_traffc_remain | integer(int64) | false | none | Type 16/24 Remaining traffic; historically compatible spelling | |
| product_datacenter_isp_traffc_total | integer(int64) | false | none | Type 16/24 Total traffic; historically compatible spelling | |
| product_datacenter_isp_traffic_remain | integer(int64) | false | none | Type 16/24 Remaining traffic | |
| product_datacenter_isp_traffic_total | integer(int64) | false | none | Type 16/24 Total traffic | |
| product_datacenter_isp_ip | integer | false | none | Type 21 or 25 Valid package quantity | |
| product_datacenter_isp_ip_total | integer | false | none | Total number of packages (type 21 or 25) | |
| product_datacenter_isp_ip_count | integer | false | none | Type 21 or 25 Count of valid IPs | |
| product_datacenter_isp_ip_all_count | integer | false | none | Type 21 or 25 Total number of IPs | |
| product_datacenter_isp_ip_traffic_remain | integer(int64) | false | none | Type 21 corresponds to Type 24: Remaining traffic | |
| product_datacenter_isp_ip_traffic_total | integer(int64) | false | none | Type 21 corresponds to Type 24 Total Traffic | |
| product_agent_residence_remain_count | integer(int64) | false | none | Type 22 Remaining traffic | |
| product_agent_residence_total_count | integer(int64) | false | none | Type 22 Total traffic | |
| product_serp_remain | integer(int64) | false | none | Type 27 Remaining count | |
| product_serp_total | integer(int64) | false | none | Type 27 Total count | |
| product_serp_timestamp | string | false | none | Type 27 Latest expiration time; "-" if no plan is available | |
| product_serp_timestamp2 | integer(int64) | false | none | Type 27 Latest expiration timestamp | |
| product_video_remain | integer(int64) | false | none | Type 28 Remaining bandwidth | |
| product_video_total | integer(int64) | false | none | Type 28 Total video stream | |
| product_video_timestamp | string | false | none | Type 28 Latest expiration time; "-" if no package is available | |
| product_video_timestamp2 | integer(int64) | false | none | Type 28 Latest expiration timestamp |
TeamWallet
{
"team_id": "A1b2C3d4E5f6",
"balance": 0.1,
"total_recharge_fee": 0.1,
"updated_at": "string"
}
The team wallet is separate from the super administrator's personal balance; the amount uses the current site's default currency and has a maximum of 4 decimal places.
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| team_id | TeamPublicId | true | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. | |
| balance | number(double) | true | none | Current available team balance | |
| total_recharge_fee | number(double) | true | none | Current unconsumed team recharge principal, excluding personal balance transfers | |
| updated_at | string | true | none | Wallet last changed time |
TeamWalletRecord
{
"id": 1,
"team_id": "A1b2C3d4E5f6",
"operator_user_id": 0,
"creator": {
"user_id": 0,
"display_name": "string",
"nickname": "string",
"username": "string",
"email": "string",
"phone": "string"
},
"direction": 0,
"transaction_type": 1,
"amount": 0.1,
"after_balance": 0.1,
"link_id": 0,
"request_id": "string",
"remark": "string",
"created_at": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | true | none | none | |
| team_id | TeamPublicId | true | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. | |
| operator_user_id | integer | true | none | Operator, system refund is 0 | |
| creator | TeamCreator | false | none | none | |
| direction | integer | true | none | 0 = expenditure, 1 = income | |
| transaction_type | integer | true | none | 1=Recharge to account, 2=Transfer from personal balance, 3=Balance consumption, 4=Refund or recharge refund deduction, 5=Transfer back to personal balance | |
| amount | number(double) | true | none | The amount of this change, the direction is indicated by direction | |
| after_balance | number(double) | true | none | Updated team wallet balance | |
| link_id | integer | true | none | Associated order ID; user ID used when transferring personal balance | |
| request_id | string | true | none | none | |
| remark | string | true | none | none | |
| created_at | string | true | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| direction | 0 |
| direction | 1 |
| transaction_type | 1 |
| transaction_type | 2 |
| transaction_type | 3 |
| transaction_type | 4 |
| transaction_type | 5 |
TeamCreator
{
"user_id": 0,
"display_name": "string",
"nickname": "string",
"username": "string",
"email": "string",
"phone": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| user_id | integer | true | none | Operator's user ID; system operation is 0 | |
| display_name | string | true | none | Displays the name, in the order of nickname, username, email, and phone number | |
| nickname | string | true | none | none | |
| username | string | true | none | none | |
| string | true | none | This is a de-identified value from a non-administrator's perspective | ||
| phone | string | true | none | This is a de-identified value from a non-administrator's perspective |
TeamResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": 0,
"current_role": 1,
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | Team | false | none | none |
TeamListResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": "A1b2C3d4E5f6",
"name": "string",
"super_admin_user_id": 1,
"status": "[",
"current_role": "[",
"dissolving_at": "string",
"dissolved_at": "string",
"created_at": "string",
"updated_at": "string"
}
],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» list | Team] | true | none | none | |
| »» total | integer | true | none | none | |
| »» page | integer | true | none | none | |
| »» page_size | integer | true | none | none |
TeamMemberListResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"team_member_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 1,
"role": "[",
"status": "[",
"joined_at": "string",
"nickname": "string",
"username": "string"
}
],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» list | TeamMember] | true | none | none | |
| »» total | integer | true | none | none | |
| »» page | integer | true | none | none | |
| »» page_size | integer | true | none | none |
TeamPersonListResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"record_type": "[",
"record_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 0,
"inviter_user_id": 0,
"invite_type": "[",
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": "[",
"role": "[",
"status": "[",
"display_name": "string",
"nickname": "string",
"username": "string",
"email": "string",
"phone": "string",
"joined_at": "string",
"expired_at": "string",
"created_at": "string"
}
],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» list | TeamPerson] | true | none | none | |
| »» total | integer | true | none | none | |
| »» page | integer | true | none | none | |
| »» page_size | integer | true | none | none |
TeamAssetResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"status": 0,
"total_amount": 0,
"remain": 0,
"bandwidth": 0,
"concurrency": 0,
"expired_at": "string",
"created_at": "string",
"ip": "string",
"country_code": "string",
"country_name": "string",
"asn": "string",
"port": 0
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | TeamAsset | false | none | none |
TeamProductInfoResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_id": "A1b2C3d4E5f6",
"product_types": [0],
"product_residence_remain_count": 0,
"product_residence_total_count": 0,
"pdrue2_timestamp": 0,
"remain": 0,
"total_amount": 0,
"scraping_remain": 0,
"scraping_total_amount": 0,
"scraping_timestamp": "string",
"scraping_timestamp2": 0,
"common_scraping_remain": 0,
"common_scraping_total_amount": 0,
"common_scraping_timestamp": "string",
"common_scraping_timestamp2": 0,
"pdidcr_count": 0,
"pdidcr_total": 0,
"pdidcr_traffic_remain": 0,
"pdidcr_traffic_total": 0,
"p_sitai_ip_count": 0,
"p_sitai_ip": 0,
"p_sitai_ip_total": 0,
"p_sitai_remain": 0,
"p_sitai_total": 0,
"pdidc_count": 0,
"pdidc_total": 0,
"pdidc_ip_count": 0,
"pdidc_ip_all_count": 0,
"pdispr_count": 0,
"pdispr_total": 0,
"pdispr_traffic_remain": 0,
"pdispr_traffic_total": 0,
"product_datacenter_isp_traffic_ip_count": 0,
"product_datacenter_isp_traffc_ip": 0,
"product_datacenter_isp_traffc_ip_total": 0,
"product_datacenter_isp_traffic_ip": 0,
"product_datacenter_isp_traffic_ip_total": 0,
"product_datacenter_isp_traffc_remain": 0,
"product_datacenter_isp_traffc_total": 0,
"product_datacenter_isp_traffic_remain": 0,
"product_datacenter_isp_traffic_total": 0,
"product_datacenter_isp_ip": 0,
"product_datacenter_isp_ip_total": 0,
"product_datacenter_isp_ip_count": 0,
"product_datacenter_isp_ip_all_count": 0,
"product_datacenter_isp_ip_traffic_remain": 0,
"product_datacenter_isp_ip_traffic_total": 0,
"product_agent_residence_remain_count": 0,
"product_agent_residence_total_count": 0,
"product_serp_remain": 0,
"product_serp_total": 0,
"product_serp_timestamp": "string",
"product_serp_timestamp2": 0,
"product_video_remain": 0,
"product_video_total": 0,
"product_video_timestamp": "string",
"product_video_timestamp2": 0
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | TeamProductInfo | false | none | Package statistics fields are consistent with /web_v1/user/info; cancellation, refund, or soft deletion records are not included in the summary; except for team_id and product_types, only fields corresponding to the product types supported by the current site are returned. |
TeamWalletResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_id": "A1b2C3d4E5f6",
"balance": 0.1,
"total_recharge_fee": 0.1,
"updated_at": "string"
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | TeamWallet | false | none | Team wallet, segregated from the super administrator's personal balance; amounts use the current site's default currency, with a maximum of 4 decimal places. |
TeamWalletRecordListResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 1,
"team_id": "A1b2C3d4E5f6",
"operator_user_id": 0,
"creator": {},
"direction": "[",
"transaction_type": "[",
"amount": 0.1,
"after_balance": 0.1,
"link_id": 0,
"request_id": "string",
"remark": "string",
"created_at": "string"
}
],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» list | TeamWalletRecord] | true | none | none | |
| »» total | integer | true | none | none | |
| »» page | integer | true | none | none | |
| »» page_size | integer | true | none | none |
TeamAssetListResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"status": 0,
"total_amount": 0,
"remain": 0,
"bandwidth": 0,
"concurrency": 0,
"expired_at": "string",
"created_at": "string",
"ip": "string",
"country_code": "string",
"country_name": "string",
"asn": "string",
"port": 0
}
],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» list | TeamAsset] | true | none | none | |
| »» total | integer | true | none | none | |
| »» page | integer | true | none | none | |
| »» page_size | integer | true | none | none |
UserApiKeyMetadata
{
"id": 1,
"api_key": "string",
"team_user_id": 0,
"remark": "string",
"status": 0,
"created_at": "string",
"updated_at": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | true | none | API Key ID | |
| api_key | string | true | none | Creates a response with the full key; uses an anonymized value in the team list | |
| team_user_id | integer | true | none | Team Key: The actual member ID; personal Key: 0 | |
| remark | string | true | none | Notes | |
| status | integer | true | none | 0 = disabled, 1 = enabled | |
| created_at | string | true | none | Creation time | |
| updated_at | string | null | false | none |
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
InvoiceInfo
{
"invoice_code": "string",
"name": "string",
"org_name": "string",
"first_name": "string",
"last_name": "string",
"phone": "string",
"email": "user@example.com",
"role_type": 1,
"invoice_type": 0,
"vat_id": "string",
"tax_no": "string",
"address_country": "string",
"address_city": "string",
"address_line1": "string",
"address_line2": "string",
"address_postal_code": "string",
"bank_name": "string",
"bank_account": "string",
"is_def": true
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| invoice_code | string | false | none | none | |
| name | string | false | none | none | |
| org_name | string | false | none | none | |
| first_name | string | false | none | none | |
| last_name | string | false | none | none | |
| phone | string | false | none | none | |
| string(email) | false | none | none | ||
| role_type | integer | false | none | none | |
| invoice_type | integer | false | none | none | |
| vat_id | string | false | none | none | |
| tax_no | string | false | none | none | |
| address_country | string | false | none | none | |
| address_city | string | false | none | none | |
| address_line1 | string | false | none | none | |
| address_line2 | string | false | none | none | |
| address_postal_code | string | false | none | none | |
| bank_name | string | false | none | none | |
| bank_account | string | false | none | none | |
| is_def | boolean | false | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| role_type | 1 |
| role_type | 2 |
| invoice_type | 0 |
| invoice_type | 1 |
| invoice_type | 2 |
Monthly Renewal Request
{
"team_id": "A1b2C3d4E5f6",
"user_product_ids": [1],
"user_coupon_id": 1,
"coupon_sn": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| team_id | ResourceSpaceId | false | none | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 digit public team identifier | |
| user_product_ids | any | true | none | Array of user package IDs, also compatible with comma-separated strings |
oneOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »anonymous | [integer] | false | none | none |
xor
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »anonymous | string | false | none | none |
continued
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| user_coupon_id | integer | false | none | none | |
| coupon_sn | string | false | none | none |
TeamInvitation
{
"id": 1,
"team_id": "A1b2C3d4E5f6",
"inviter_user_id": 1,
"invitee_user_id": 0,
"invite_type": 1,
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": 1,
"role": 2,
"status": 0,
"accepted_by_user_id": 0,
"expired_at": "2026-07-17 10:00:00",
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": "2026-07-10 10:00:00"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | true | none | Invitation ID | |
| team_id | TeamPublicId | true | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. | |
| inviter_user_id | integer | true | none | Inviter User ID | |
| invitee_user_id | integer | true | none | Invited user ID, 0 if no registered user has been matched | |
| invite_type | integer | true | none | Invitation type: 1=registered user, 2=email, 3=phone number | |
| invite_country_code | integer | true | none | Country or region code for mobile phone number; 0 for non-mobile phone number invitations | |
| invite_target | string | true | none | Standardized invitation target; registered users are user:{user_id} | |
| delivery_type | integer | true | none | Original delivery channel: 1=registered user, 2=email, 3=phone number; the original channel is retained when an email or phone number matches a registered user. | |
| role | integer | true | none | Target role: 2 = Administrator, 3 = Regular member | |
| status | integer | true | none | Invitation status: 0 = Pending, 1 = Accepted, 2 = Rejected, 3 = Cancelled, 4 = Expired | |
| accepted_by_user_id | integer | true | none | Accepted user ID, 0 if no user accepted | |
| expired_at | string | true | none | Expiration time, format YYYY-MM-DD HH:mm:ss | |
| accepted_at | string | null | true | none | |
| rejected_at | string | null | true | none | |
| cancelled_at | string | null | true | none | |
| created_at | string | true | none | Creation time, format YYYY-MM-DD HH:mm:ss |
Enumeration value
| Attribute | Value |
|---|---|
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
TeamMember
{
"team_member_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 1,
"role": 1,
"status": 0,
"joined_at": "string",
"nickname": "string",
"username": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| team_member_id | integer | true | none | Member ID | |
| team_id | TeamPublicId | true | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. | |
| user_id | integer | true | none | Member User ID | |
| role | integer | true | none | Roles: 1 = Super Administrator, 2 = Administrator, 3 = Regular Member, 4 = Financial Member | |
| status | integer | true | none | Member status: 0 = disabled, 1 = enabled, 2 = exited, 3 = removed | |
| joined_at | string¦null | true | none | Joined time, format YYYY-MM-DD HH:mm:ss | |
| nickname | string | true | none | member nickname | |
| username | string | true | none | member username |
Enumeration value
| Attribute | Value |
|---|---|
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
TeamPerson
{
"record_type": "member",
"record_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 0,
"inviter_user_id": 0,
"invite_type": 0,
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": 0,
"role": 1,
"status": 0,
"display_name": "string",
"nickname": "string",
"username": "string",
"email": "string",
"phone": "string",
"joined_at": "string",
"expired_at": "string",
"created_at": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| record_type | string | true | none | Record type; member indicates active members, invitation indicates pending invitations | |
| record_id | integer | true | none | Membership ID or Invitation ID | |
| team_id | TeamPublicId | true | none | Public team identifier, starting with an ASCII letter, the remaining characters contain only ASCII letters and numbers; no numeric primary key will be issued to the database. | |
| user_id | integer | true | none | User ID, 0 for unregistered invited users | |
| inviter_user_id | integer | true | none | Inviter user ID, member record is 0 | |
| invite_type | integer | true | none | Invitation type, member record is 0 | |
| invite_country_code | integer | true | none | Country or region code of the mobile phone number; 0 for member records | |
| invite_target | string | true | none | Invite target, member record is an empty string | |
| delivery_type | integer | true | none | Original delivery channel, member record is 0 | |
| role | integer | true | none | Roles: 1 = Super Administrator, 2 = Administrator, 3 = Regular Member, 4 = Financial Member | |
| status | integer | true | none | member is fixed at 1, invitation is fixed at 0 | |
| display_name | string | true | none | Displays a unified name, in the order of nickname, username, email, and phone number; contact information from the perspective of ordinary members uses anonymized values. | |
| nickname | string | true | none | Member or registered invited user nickname | |
| username | string | true | none | Member or registered invited username | |
| string | true | none | Email address; Super admins and administrators return the full value, while regular members return an anonymized value marked with an asterisk | ||
| phone | string | true | none | Mobile phone number; Super administrators and administrators return the full value, while regular members return an anonymized value marked with an asterisk | |
| joined_at | string | null | true | none | |
| expired_at | string | null | true | none | |
| created_at | string | true | none | Records the creation time, in YYYY-MM-DD HH:mm:ss format |
Enumeration value
| Attribute | Value |
|---|---|
| record_type | member |
| record_type | invitation |
| invite_type | 0 |
| invite_type | 1 |
| invite_type | 2 |
| invite_type | 3 |
| delivery_type | 0 |
| delivery_type | 1 |
| delivery_type | 2 |
| delivery_type | 3 |
| role | 1 |
| role | 2 |
| role | 3 |
| role | 4 |
| status | 0 |
| status | 1 |
TeamInvitationResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"id": 1,
"team_id": "A1b2C3d4E5f6",
"inviter_user_id": 1,
"invitee_user_id": 0,
"invite_type": 1,
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": 1,
"role": 2,
"status": 0,
"accepted_by_user_id": 0,
"expired_at": "2026-07-17 10:00:00",
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": "2026-07-10 10:00:00"
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | TeamInvitation | false | none | none |
TeamMemberResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_member_id": 1,
"team_id": "A1b2C3d4E5f6",
"user_id": 1,
"role": 1,
"status": 0,
"joined_at": "string",
"nickname": "string",
"username": "string"
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | TeamMember | false | none | none |
TeamInvitationCreateResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"invitation": {
"id": 1,
"team_id": "A1b2C3d4E5f6",
"inviter_user_id": 1,
"invitee_user_id": 0,
"invite_type": 1,
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": 1,
"role": 2,
"status": 0,
"accepted_by_user_id": 0,
"expired_at": "2026-07-17 10:00:00",
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": "2026-07-10 10:00:00"
},
"invitation_token": "string",
"invitation_url": "http://example.com",
"notification_channels": {
"email": "queued",
"sms": "queued",
"site_inner_message": "created"
}
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» invitation | TeamInvitation | true | none | none | |
| »» invitation_token | string | true | none | Plaintext invitation token, reserved only for compatibility with existing clients; new clients should use invitation_url directly. | |
| »» invitation_url | string(uri) | true | none | Front-end processing link containing invitation token | |
| »» notification_channels | TeamInvitationNotificationChannels | true | none | none |
TeamInvitationNotificationChannels
{
"email": "queued",
"sms": "queued",
"site_inner_message": "created"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| string | false | none | Email channel results | ||
| sms | string | false | none | SMS channel results | |
| site_inner_message | string | false | none | Results of internal messaging channels |
Enumeration value
| Attribute | Value |
|---|---|
| queued | |
| failed | |
| skipped | |
| sms | queued |
| sms | failed |
| sms | skipped |
| site_inner_message | created |
| site_inner_message | exists |
| site_inner_message | failed |
TeamInvitationPreviewResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"team_name": "string",
"role": 2,
"status": 0,
"expired_at": "string"
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» team_name | string | true | none | Team Name | |
| »» role | integer | true | none | Target role | |
| »» status | integer | true | none | Invitation status | |
| »» expired_at | string | true | none | Expiration time, format YYYY-MM-DD HH:mm:ss |
Enumeration value
| Attribute | Value |
|---|---|
| role | 2 |
| role | 3 |
| status | 0 |
| status | 1 |
| status | 2 |
| status | 3 |
| status | 4 |
TeamInvitationResendResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"invitation": {
"id": 1,
"team_id": "A1b2C3d4E5f6",
"inviter_user_id": 1,
"invitee_user_id": 0,
"invite_type": 1,
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": 1,
"role": 2,
"status": 0,
"accepted_by_user_id": 0,
"expired_at": "2026-07-17 10:00:00",
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": "2026-07-10 10:00:00"
},
"invitation_url": "http://example.com",
"notification_channels": {
"email": "queued",
"sms": "queued",
"site_inner_message": "created"
}
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» invitation | TeamInvitation | true | none | none | |
| »» invitation_url | string(uri) | true | none | New invitation processing link; old link is invalid | |
| »» notification_channels | TeamInvitationNotificationChannels | true | none | none |
TeamInvitationListResponse
{
"code": 200,
"msg": "SUCCESS",
"data": {
"list": [
{
"id": 1,
"team_id": "A1b2C3d4E5f6",
"inviter_user_id": 1,
"invitee_user_id": 0,
"invite_type": "[",
"invite_country_code": 999,
"invite_target": "string",
"delivery_type": "[",
"role": "[",
"status": "[",
"accepted_by_user_id": 0,
"expired_at": "2026-07-17 10:00:00",
"accepted_at": null,
"rejected_at": null,
"cancelled_at": null,
"created_at": "2026-07-10 10:00:00"
}
],
"total": 0,
"page": 1,
"page_size": 1
},
"request_id": "string"
}
property
allOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | WebV1SuccessResponse | false | none | none |
and
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| anonymous | object | false | none | none | |
| » data | object | false | none | none | |
| »» list | Team Invitation] | true | none | none | |
| »» total | integer | true | none | Total number of invitations | |
| »» page | integer | true | none | Current page number | |
| »» page_size | integer | true | none | Actual number of pages per page |
User
{
"id": 0,
"email": "user@example.com",
"phone": "string",
"balance": 0.1,
"status": 0,
"is_real_name": true,
"created_at": "2019-08-24T14:15:22Z"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | none | |
| string(email) | false | none | none | ||
| phone | string | false | none | none | |
| balance | number(float) | false | none | none | |
| status | integer | false | none | none | |
| is_real_name | boolean | false | none | none | |
| created_at | string(date-time) | false | none | none |
Order
{
"id": 0,
"trade_no": "string",
"out_trade_no": "string",
"product_id": 0,
"product_type": 0,
"amount": 0,
"unit_price": 0.1,
"total_fee": 0.1,
"goods_fee": 0.1,
"pay_fee": 0.1,
"discount_fee": 0.1,
"handling_fee": 0.1,
"refund_fee": 0.1,
"pm_id": 0,
"pm_title": "string",
"pm_logo": "string",
"status": 0,
"title": "string",
"detail": "string",
"region_desc": "string",
"pay_at": "2019-08-24T14:15:22Z",
"pay_timestamp": 0,
"created_at": "2019-08-24T14:15:22Z",
"pay_fee_status": 0,
"invoice": {
"name": "string",
"org_name": "string",
"first_name": "string",
"last_name": "string",
"phone": "string",
"email": "user@example.com",
"role_type": 0,
"vat_id": "string",
"address_country": "string",
"address_city": "string",
"address_line1": "string",
"address_line2": "string",
"address_postal_code": "string"
}
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | Order ID | |
| trade_no | string | false | none | Internal order number | |
| out_trade_no | string | false | none | External order number | |
| product_id | integer | false | none | Package ID | |
| product_type | integer | false | none | Package type, see product type enumeration | |
| amount | integer | false | none | Purchase quantity | |
| unit_price | number(float) | false | none | unit price | |
| total_fee | number(float) | false | none | Total order price (excluding discounts, including handling fees) | |
| goods_fee | number(float) | false | none | Price of goods (including discounts, excluding handling fees) | |
| pay_fee | number(float) | false | none | Actual payment amount (including discounts and handling fees) | |
| discount_fee | number(float) | false | none | Discount amount | |
| handling_fee | number(float) | false | none | handling fee | |
| refund_fee | number(float) | false | none | refund amount | |
| pm_id | integer | false | none | Payment method ID (from /openapi/payment/list) | |
| pm_title | string | false | none | Payment method name | |
| pm_logo | string | false | none | Payment method Logo URL | |
| status | integer | false | none | Order status | |
| title | string | false | none | Package Title | |
| detail | string | false | none | Package Description | |
| region_desc | string | false | none | Region specification description | |
| pay_at | string(date-time) | false | none | payment time | |
| pay_timestamp | integer | false | none | payment timestamp | |
| created_at | string(date-time) | false | none | Creation time | |
| pay_fee_status | integer | false | none | Payment status: 0 Normal, 1 Overpayment (excess payment), 2 Underpayment | |
| invoice | object | false | none | Invoice information (only applicable to online payment orders) | |
| » name | string | false | none | Full name | |
| » org_name | string | false | none | Company Name | |
| » first_name | string | false | none | none | |
| » last_name | string | false | none | none | |
| » phone | string | false | none | none | |
| string(email) | false | none | none | ||
| » role_type | integer | false | none | 1 person, 2 companies | |
| » vat_id | string | false | none | Tax ID | |
| » address_country | string | false | none | none | |
| » address_city | string | false | none | none | |
| » address_line1 | string | false | none | none | |
| » address_line2 | string | false | none | none | |
| » address_postal_code | string | false | none | none |
OrderCheckResult
{
"product_id": 0,
"amount": 0,
"discount_fee": 0.1,
"total_fee": 0.1,
"pay_fee": 0.1,
"product_type": 0,
"title": "string",
"detail": "string",
"ip_result": [
{
"ip": "string",
"price": 0.1,
"country_code": "string",
"current_time": "2019-08-24T14:15:22Z",
"renewal_time": "2019-08-24T14:15:22Z",
"country": {
"name_zh_cn": "string",
"flag": "string",
"square_flag": "string"
}
}
]
}
Order pre-inspection results
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| product_id | integer | false | none | Package ID | |
| amount | integer | false | none | quantity | |
| discount_fee | number(float) | false | none | Discount amount | |
| total_fee | number(float) | false | none | Total order amount | |
| pay_fee | number(float) | false | none | Actual amount paid | |
| product_type | integer | false | none | Package type | |
| title | string | false | none | Package Title | |
| detail | string | false | none | Package Description | |
| ip_result | [object] | false | none | IP batch renewal result (returned only when renewing IP) | |
| » ip | string | false | none | none | |
| » price | number(float) | false | none | none | |
| » country_code | string | false | none | none | |
| » current_time | string(date-time) | false | none | none | |
| » renewal_time | string(date-time) | false | none | none | |
| » country | object | false | none | none | |
| »» name_zh_cn | string | false | none | none | |
| »» flag | string | false | none | Circular flag URL | |
| »» square_flag | string | false | none | Square flag URL |
Product
{
"id": 0,
"title": "string",
"type": 0,
"show_type": 0,
"status": 0,
"price": 0.1,
"usd_price": 0.1,
"price_hkd": 0.1,
"original_price": 0.1,
"original_usd_price": 0.1,
"original_price_hkd": 0.1,
"local_price": 0.1,
"local_original_price": 0.1,
"preferred_currency": "string",
"support_currencies": "string",
"flow_value": 0.1,
"flow_give": 0.1,
"balance_give": 0.1,
"balance_value": 0.1,
"time_validity": 0.1,
"time_price": 0.1,
"time_days": 0,
"tip1": "string",
"tip2": "string",
"introduce": ["string"],
"region_list_id": 0,
"renew_product_list": "string",
"parent_product_type": 0,
"total_count": 0,
"remain_count": 0,
"extension_of_time_days": [0],
"time_days_price_rate": 0.1,
"desc": {
"subtitle": "string",
"flow_value": 0.1,
"flow_give": 0.1,
"balance_give": 0.1,
"time_validity": 0.1,
"time_price": 0.1,
"tip1": "string",
"tip2": "string",
"introduce": ["string"]
},
"sku": {
"bandwidth_list": [
{
"id": 0,
"value": 0,
"price": 0.1,
"price_usd": 0.1,
"price_hkd": 0.1
}
],
"duration_list": [
{
"id": 0,
"value": 0,
"price": 0.1,
"price_usd": 0.1,
"price_hkd": 0.1
}
],
"concurrency_list": [
{
"id": 0,
"value": 0,
"price": 0.1,
"price_usd": 0.1,
"price_hkd": 0.1
}
]
}
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | Package ID | |
| title | string | false | none | Package main title | |
| type | integer | false | none | Package type | |
| show_type | integer | false | none | Display type: 1 Normal 2 High-value recommendation 3 Not available for purchase (customization required) 4 Trial | |
| status | integer | false | none | Status: 1 listed, 0 delisted | |
| price | number(float) | false | none | Price in RMB | |
| usd_price | number(float) | false | none | Price in US Dollars | |
| price_hkd | number(float) | false | none | Hong Kong Dollar Price | |
| original_price | number(float) | false | none | Original Price (CNY) | |
| original_usd_price | number(float) | false | none | original price (USD) | |
| original_price_hkd | number(float) | false | none | Original Price (HKD) | |
| local_price | number(float) | false | none | Localized price (depends on preferred_currency) | |
| local_original_price | number(float) | false | none | Localized original price (depends on preferred_currency) | |
| preferred_currency | string | false | none | Preferred currency to display, such as USD / CNY / HKD | |
| support_currencies | string | false | none | A comma-separated list of supported currencies, e.g., USD, CNY | |
| flow_value | number(float) | false | none | Default data allowance (GB) for your data plan | |
| flow_give | number(float) | false | none | Gift data (GB) | |
| balance_give | number(float) | false | none | Balance recharge bonus amount | |
| balance_value | number(float) | false | none | Recharge amount | |
| time_validity | number(float) | false | none | Default validity period for data packages | |
| time_price | number(float) | false | none | Price per IP for data packages | |
| time_days | integer | false | none | Validity period in days, e.g., 30/90/180/365 | |
| tip1 | string | false | none | Tag explanation 1 | |
| tip2 | string | false | none | Tag Explanation 2 | |
| introduce | [string] | false | none | List of text descriptions | |
| region_list_id | integer | false | none | Region ID | |
| renew_product_list | string | false | none | List of renewable product IDs (comma-separated) | |
| parent_product_type | integer | false | none | Parent package type (valid when type=19): 14 or 25 | |
| total_count | integer | false | none | Total inventory, 0 indicates no limit | |
| remain_count | integer | false | none | Remaining inventory | |
| extension_of_time_days | [integer] | false | none | List of duration multipliers; empty or containing only 1 indicates not supported | |
| time_days_price_rate | number(float) | false | none | Duration-based price factor, price × (1 + (multiple - 1) × rate) | |
| desc | object | false | none | Package description information | |
| » subtitle | string | false | none | Subtitle | |
| » flow_value | number(float) | false | none | none | |
| » flow_give | number(float) | false | none | none | |
| » balance_give | number(float) | false | none | none | |
| » time_validity | number(float) | false | none | none | |
| » time_price | number(float) | false | none | none | |
| » tip1 | string | false | none | none | |
| » tip2 | string | false | none | none | |
| » introduce | [string] | false | none | none | |
| sku | object | false | none | Specification parameters (returned when type=11) | |
| » bandwidth_list | [object] | false | none | Bandwidth specification list | |
| »» id | integer | false | none | none | |
| »» value | integer | false | none | Bandwidth value (Mbps) | |
| »» price | number(float) | false | none | none | |
| »» price_usd | number(float) | false | none | none | |
| »» price_hkd | number(float) | false | none | none | |
| » duration_list | [object] | false | none | Duration specification list | |
| »» id | integer | false | none | none | |
| »» value | integer | false | none | Duration (days) | |
| »» price | number(float) | false | none | none | |
| »» price_usd | number(float) | false | none | none | |
| »» price_hkd | number(float) | false | none | none | |
| » concurrency_list | [object] | false | none | Concurrency specification list | |
| »» id | integer | false | none | none | |
| »» value | integer | false | none | Concurrency | |
| »» price | number(float) | false | none | none | |
| »» price_usd | number(float) | false | none | none | |
| »» price_hkd | number(float) | false | none | none |
WhiteIp
{
"id": 0,
"ip": "string",
"remark": "string",
"created_at": "2019-08-24T14:15:22Z"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | none | |
| ip | string | false | none | none | |
| remark | string | false | none | none | |
| created_at | string(date-time) | false | none | none |
WhitelistAccount
{
"id": 0,
"username": "string",
"limit": 0,
"used": 0,
"status": 0
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | none | |
| username | string | false | none | none | |
| limit | integer | false | none | none | |
| used | integer | false | none | none | |
| status | integer | false | none | none |
Coupon
{
"id": 0,
"name": "string",
"code": "string",
"discount": 0.1,
"expire_time": "2019-08-24T14:15:22Z"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | none | |
| name | string | false | none | none | |
| code | string | false | none | none | |
| discount | number(float) | false | none | none | |
| expire_time | string(date-time) | false | none | none |
Article
{
"id": 0,
"title": "string",
"content": "string",
"created_at": "2019-08-24T14:15:22Z"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | none | |
| title | string | false | none | none | |
| content | string | false | none | none | |
| created_at | string(date-time) | false | none | none |
Pagination
{
"total": 0,
"page_no": 0,
"page_size": 0,
"total_pages": 0
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| total | integer | false | none | none | |
| page_no | integer | false | none | none | |
| page_size | integer | false | none | none | |
| total_pages | integer | false | none | none |
AutoRenewalConfig
{
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"product_type": 0,
"left_traffic": 0,
"left_days": 0,
"user_product_id": 1,
"product_id": 0,
"status": 0,
"currency": "string",
"agreed_price": 0,
"agreed_bandwidth_price": 0,
"agreed_concurrency_price": 0,
"bandwidth_id": 0,
"concurrency_id": 0,
"duration": 0,
"renew_product_id": 0,
"days_before_expire": 0,
"traffic_threshold": 0,
"parent_product_type": 0,
"created_at": "string",
"updated_at": "string"
}
Auto-renewal configuration snapshot for a single plan
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | none | |
| user_id | integer | false | none | none | |
| team_id | ResourceSpaceId | false | none | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 digit public team identifier | |
| team_user_id | integer | false | none | none | |
| product_type | integer | false | none | none | |
| left_traffic | integer | false | none | Deprecated field | |
| left_days | integer | false | none | Deprecated field | |
| user_product_id | integer | false | none | none | |
| product_id | integer | false | none | Deprecated field | |
| status | integer | false | none | 0 = disabled, 1 = enabled | |
| currency | string | false | none | none | |
| agreed_price | number | false | none | agreed total price | |
| agreed_bandwidth_price | number | false | none | Agreed bandwidth unit price for Package 11 | |
| agreed_concurrency_price | number | false | none | Agreed-upon concurrency price for Package 11 | |
| bandwidth_id | integer | false | none | none | |
| concurrency_id | integer | false | none | none | |
| duration | integer | false | none | Renewal duration, in days | |
| renew_product_id | integer | false | none | none | |
| days_before_expire | integer | false | none | none | |
| traffic_threshold | integer | false | none | Traffic threshold, database value in KB | |
| parent_product_type | integer | false | none | none | |
| created_at | string | false | none | none | |
| updated_at | string | false | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| status | 0 |
| status | 1 |
AutoRenewalLog
{
"id": 1,
"user_id": 1,
"team_id": "A1b2C3d4E5f6",
"team_user_id": 0,
"config_id": 0,
"user_product_id": 1,
"product_type": 0,
"renew_product_id": 0,
"order_id": 0,
"fee": 0,
"currency": "string",
"before_expired_at": "string",
"after_expired_at": "string",
"before_remain": 0,
"after_remain": 0,
"trigger_type": 0,
"status": 1,
"revoke_at": "string",
"revoke_remark": "string",
"created_at": "string",
"updated_at": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | true | none | none | |
| user_id | integer | true | none | none | |
| team_id | ResourceSpaceId | true | none | Public resource space identifier; omit team_id or pass an empty string when requesting a personal space, and return an empty string when responding to a personal space; the number 0 and the string "0" are both invalid, team spaces use a 6-12 digit public team identifier | |
| team_user_id | integer | true | none | none | |
| config_id | integer | true | none | none | |
| user_product_id | integer | true | none | none | |
| product_type | integer | true | none | none | |
| renew_product_id | integer | true | none | none | |
| order_id | integer | true | none | none | |
| fee | number | true | none | none | |
| currency | string | true | none | none | |
| before_expired_at | string¦null | false | none | none | |
| after_expired_at | string¦null | false | none | none | |
| before_remain | integer(int64) | true | none | none | |
| after_remain | integer(int64) | true | none | none | |
| trigger_type | integer | true | none | 0 = before expiration, 1 = insufficient traffic | |
| status | integer | true | none | 1=Success, 2=Cancelled, 3=Failure | |
| revoke_at | string¦null | false | none | none | |
| revoke_remark | string | true | none | none | |
| created_at | string | true | none | none | |
| updated_at | string | true | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| trigger_type | 0 |
| trigger_type | 1 |
| status | 1 |
| status | 2 |
| status | 3 |
MonthlyRenewalBatch
{
"type": "current",
"start_at": "string",
"end_at": "string",
"target_expired_at": "string",
"timezone": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| type | string | true | none | none | |
| start_at | string | true | none | none | |
| end_at | string | true | none | none | |
| target_expired_at | string | true | none | none | |
| timezone | string | true | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| type | current |
| type | next |
MonthlyRenewalItem
{
"id": 0,
"user_product_id": 1,
"product_id": 1,
"product_type": 0,
"parent_product_type": 0,
"title": "string",
"expired_at": "string",
"target_expired_at": "string",
"renew_days": 1,
"unit_month_price": 0,
"pay_fee": 0,
"currency": "string",
"bandwidth": 0,
"bandwidth_mbsp": 0,
"concurrency": 0,
"ip": "string",
"country_code": "string",
"paid_at": "string",
"refunded_at": "string",
"created_at": "string",
"updated_at": "string"
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | false | none | Historical billing details ID | |
| user_product_id | integer | true | none | none | |
| product_id | integer | true | none | none | |
| product_type | integer | true | none | none | |
| parent_product_type | integer | true | none | none | |
| title | string | true | none | none | |
| expired_at | string | true | none | none | |
| target_expired_at | string | true | none | none | |
| renew_days | integer | true | none | none | |
| unit_month_price | number | false | none | none | |
| pay_fee | number | true | none | none | |
| currency | string | true | none | none | |
| bandwidth | integer | false | none | none | |
| bandwidth_mbsp | number | false | none | bandwidth conversion value | |
| concurrency | integer | false | none | none | |
| ip | string | false | none | Static IP Package Return | |
| country_code | string | false | none | Static IP Package Return | |
| paid_at | string¦null | false | none | none | |
| refunded_at | string¦null | false | none | none | |
| created_at | string | false | none | none | |
| updated_at | string | false | none | none |
InvoiceRecord
{
"id": 1,
"invoice_no": "string",
"invoice_amount": 0,
"invoice_download_url": "string",
"status": 0,
"remark": "string",
"order_ids": [0],
"created_at": 0,
"invoice_info": {
"invoice_code": "string",
"name": "string",
"org_name": "string",
"role_type": 1,
"invoice_type": 0
}
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| id | integer | true | none | none | |
| invoice_no | string | true | none | none | |
| invoice_amount | number | true | none | none | |
| invoice_download_url | string | true | none | none | |
| status | integer | true | none | none | |
| remark | string | true | none | none | |
| order_ids | [integer] | true | none | none | |
| created_at | integer | true | none | Unix timestamp | |
| invoice_info | any | true | none | none |
oneOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »anonymous | object | false | none | none | |
| »» invoice_code | string | true | none | none | |
| »» name | string | true | none | none | |
| »» org_name | string | true | none | none | |
| »» role_type | integer | true | none | none | |
| »» invoice_type | integer | true | none | none |
xor
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »anonymous | null | false | none | none |
Enumeration value
| Attribute | Value |
|---|---|
| role_type | 1 |
| role_type | 2 |
| invoice_type | 0 |
| invoice_type | 1 |
| invoice_type | 2 |
PayCheckData
{
"trade_no": "string",
"pm_id": 0,
"pay_method": 0,
"trade_type": "string",
"country_code": "string",
"currency": "string",
"goods_fee": 0,
"discount_fee": 0,
"handling_fee": 0,
"pay_fee": 0,
"total_fee": 0,
"pay_method_info": {
"id": 0,
"type": 0,
"title": "string",
"group": "string",
"handling_rate": 0,
"handling_fee": 0,
"handling_fee_currency": "usd",
"handling_fee_converted": 0
},
"origin": {
"pm_id": 0,
"pay_method": 0,
"goods_fee": 0,
"discount_fee": 0,
"handling_fee": 0,
"pay_fee": 0,
"total_fee": 0
}
}
property
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| trade_no | string | true | none | none | |
| pm_id | integer | true | none | none | |
| pay_method | integer | true | none | none | |
| trade_type | string | true | none | none | |
| country_code | string | true | none | none | |
| currency | string | true | none | none | |
| goods_fee | number | true | none | none | |
| discount_fee | number | true | none | none | |
| handling_fee | number | true | none | none | |
| pay_fee | number | true | none | none | |
| total_fee | number | true | none | none | |
| pay_method_info | any | true | none | none |
oneOf
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »anonymous | object | false | none | none | |
| »» id | integer | true | none | none | |
| »» type | integer | true | none | none | |
| »» title | string | true | none | none | |
| »» group | string | true | none | none | |
| »» handling_rate | number | true | none | none | |
| »» handling_fee | number | true | none | none | |
| »» handling_fee_currency | string | true | none | none | |
| »» handling_fee_converted | number | true | none | none |
xor
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| »anonymous | null | false | none | none |
continued
| Name | Type | Required | Constraint | Chinese Name | Description |
|---|---|---|---|---|---|
| origin | object | true | none | none | |
| » pm_id | integer | true | none | none | |
| » pay_method | integer | true | none | none | |
| » goods_fee | number | true | none | none | |
| » discount_fee | number | true | none | none | |
| » handling_fee | number | true | none | none | |
| » pay_fee | number | true | none | none | |
| » total_fee | number | true | none | none |