OpenAPIOpenAPI
  • English
  • 简体中文
  • 繁體中文
  • Indonesia
  • हिंदी
  • Русский
  • Tiếng Việt
  • German
  • português
  • English
  • 简体中文
  • 繁體中文
  • Indonesia
  • हिंदी
  • Русский
  • Tiếng Việt
  • German
  • português
  • NSocks

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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource space identifier; personal space can be omitted or an empty string can be passed
pagequeryintegernonone
pageSizequeryintegernonone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenonenone
» msgstringtruenonenone
» request_idstringtruenonenone
» dataobjecttruenonenone
»» list[UserApiKeyMetadata]truenonenone
»»» idintegertruenoneAPI Key ID
»»» api_keystringtruenoneCreates a response with the full key; uses an anonymized value in the team list
»»» team_user_idintegertruenoneTeam Key: The actual member ID; personal Key: 0
»»» remarkstringtruenoneRemarks
»»» statusintegertruenone0=disabled, 1=enabled
»»» created_atstringtruenoneCreation time
»»» updated_atstring¦nullfalsenoneUpdate time
»» totalintegertruenonenone
»» pageintegertruenonenone
»» pageSizeintegertruenonenone

Enumeration value

AttributeValue
status0
status1

Create API Key via POST

POST /ep/api-keys/create

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "remark": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» remarkbodystringnonone

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 CodesStatus Code MeaningExplanationData Model
200OK Returns the complete API Key upon successful transaction, only onceInline

Return data structure

Enumeration value

AttributeValue
status0
status1

POST Enable API Key

POST /ep/api-keys/enable

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "id": 1
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyApiKeyManageRequestYesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

POST Disable API Key

POST /ep/api-keys/disable

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "id": 1
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyApiKeyManageRequestYesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

POST Delete API Key

POST /ep/api-keys/delete

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "id": 1
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyApiKeyManageRequestYesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

POST to Modify API Key Remarks

POST /ep/api-keys/update-remark

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "id": 1,
  "remark": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» idbodyintegerisnone
» remarkbodystringyesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

Team Management

POST Create Team

POST /ep/team/create

Body Request Parameters

{
  "name": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» namebodystringYesTeam 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
status0
status1
status2
status3
current_role1
current_role2
current_role3
current_role4
current_rolenull

GET List of teams currently accessible to the user

GET /ep/team/list

Request parameters

NameLocationTypeRequiredDescription
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}],
    "total": 0,
    "page": 1,
    "page_size": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
status0
status1
status2
status3
current_role1
current_role2
current_role3
current_role4
current_rolenull

GET Team Details

GET /ep/team/detail

Request parameters

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
status0
status1
status2
status3
current_role1
current_role2
current_role3
current_role4
current_rolenull

POST to change team name

POST /ep/team/update-name

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "name": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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.
» namebodystringyesnone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
status0
status1
status2
status3
current_role1
current_role2
current_role3
current_role4
current_rolenull

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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.
» namebodystringYesTeam name confirmation, must be exactly the same as the current team name
» verify_typebodystringNoTwo-factor authentication; submitted together with verify_code when verification is required
» verify_codebodystringNoTwo-factor authentication code; optional if the device is in a 15-minute trusted state

Enumeration value

AttributeValue
» verify_typephone
» verify_typeemail
» verify_typewechat
» verify_typetotp

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
status0
status1
status2
status3
current_role1
current_role2
current_role3
current_role4
current_rolenull

GET query for team disbandment status

GET /ep/team/dissolve-status

Request parameters

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
status0
status1
status2
status3
current_role1
current_role2
current_role3
current_role4
current_rolenull

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

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

GET Team Asset List

GET /ep/team/assets

Request parameters

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}],
    "total": 0,
    "page": 1,
    "page_size": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}],
    "total": 0,
    "page": 1,
    "page_size": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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_idbodyintegeryesnone

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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_idbodyintegeryesnone

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}],
    "total": 0,
    "page": 1,
    "page_size": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
direction0
direction1
transaction_type1
transaction_type2
transaction_type3
transaction_type4
transaction_type5

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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.
» amountbodynumber(double)yesnone

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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.
» amountbodynumber(double)YesMust 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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}],
    "total": 0,
    "page": 1,
    "page_size": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
role1
role2
role3
role4
status0
status1
status2
status3

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

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesnone
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}],
    "total": 0,
    "page": 1,
    "page_size": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
record_typemember
record_typeinvitation
invite_type0
invite_type1
invite_type2
invite_type3
delivery_type0
delivery_type1
delivery_type2
delivery_type3
role1
role2
role3
role4
status0
status1

POST Adjust member roles

POST /ep/team/members/update-role

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "team_member_id": 1,
  "role": 2
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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_idbodyintegeryesnone
» rolebodyintegeryesnone

Enumeration value

AttributeValue
» role2
» role3

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
role1
role2
role3
role4
status0
status1
status2
status3

POST Remove Team Member

POST /ep/team/members/remove

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "team_member_id": 1
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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_idbodyintegeryesnone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP success; data.status=3 when business logic succeedsInline

Return data structure

Enumeration value

AttributeValue
role1
role2
role3
role4
status0
status1
status2
status3

POST - Leave Team

POST /ep/team/members/leave

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP success; data.status=2 when business logic succeedsInline

Return data structure

Enumeration value

AttributeValue
role1
role2
role3
role4
status0
status1
status2
status3

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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_typebodyintegerYes1=Registered user, 2=Email, 3=Mobile number
» rolebodyintegerYes2 = Administrator, 3 = Regular Member
» user_idbodyintegerNoRequired if invite_type=1
» emailbodystring(email)NoRequired if invite_type=2
» country_codebodyintegerNoRequired if invite_type=3
» phonebodystringNoRequired if invite_type=3
» invitation_url_templatebodystringNoThis 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.
»anonymousbodyobjectnonone
»» invite_typebodyanynonone
»anonymousbodyobjectnonone
»» invite_typebodyanynonone
»anonymousbodyobjectnonone
»» invite_typebodyanynonone

Enumeration value

AttributeValue
» invite_type1
» invite_type2
» invite_type3
» role2
» role3

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code, 200 indicates business successInline

Return data structure

Enumeration value

AttributeValue
invite_type1
invite_type2
invite_type3
delivery_type1
delivery_type2
delivery_type3
role2
role3
status0
status1
status2
status3
status4
emailqueued
emailfailed
emailskipped
smsqueued
smsfailed
smsskipped
site_inner_messagecreated
site_inner_messageexists
site_inner_messagefailed

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

NameLocationTypeRequiredDescription
team_idqueryTeamPublicIdYesTeam Public Identification
pagequeryintegerNoPage number, starting from 1
page_sizequeryintegernonumber 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
invite_type1
invite_type2
invite_type3
delivery_type1
delivery_type2
delivery_type3
role2
role3
status0
status1
status2
status3
status4

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

NameLocationTypeRequiredDescription
invitation_tokenquerystringYesA 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
role2
role3
status0
status1
status2
status3
status4

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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_idbodyintegerYesInvitation 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
invite_type1
invite_type2
invite_type3
delivery_type1
delivery_type2
delivery_type3
role2
role3
status0
status1
status2
status3
status4
emailqueued
emailfailed
emailskipped
smsqueued
smsfailed
smsskipped
site_inner_messagecreated
site_inner_messageexists
site_inner_messagefailed

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» invitation_tokenbodystringYesPlaintext 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP success; if business logic succeeds, data is a member object.Inline

Return data structure

Enumeration value

AttributeValue
role1
role2
role3
role4
status0
status1
status2
status3

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» invitation_tokenbodystringYesPlaintext 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP success; data.status=2 when business logic succeedsInline

Return data structure

Enumeration value

AttributeValue
invite_type1
invite_type2
invite_type3
delivery_type1
delivery_type2
delivery_type3
role2
role3
status0
status1
status2
status3
status4

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyTeamPublicIdYesTeam 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_idbodyintegerYesInvitation 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP success; data.status=3 when business logic succeedsInline

Return data structure

Enumeration value

AttributeValue
invite_type1
invite_type2
invite_type3
delivery_type1
delivery_type2
delivery_type3
role2
role3
status0
status1
status2
status3
status4

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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource 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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» statusbodyintegerYes0 = Off, 1 = On

Enumeration value

AttributeValue
» status0
» status1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
pagequeryintegernonone
page_sizequeryintegernonone
start_datequerystring(date)NoStart date, interpreted by site timezone
end_datequerystring(date)NoEnd date, interpreted by site timezone
consumption_typequerystringNoConsumption type

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_datequerystring(date)NoStart date, interpreted by site timezone
end_datequerystring(date)NoEnd date, interpreted by site timezone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_datequerystring(date)NoStart date, defaults to 6 days ago
end_datequerystring(date)NoEnd date, defaults to today
consumption_typequerystringNoOptional consumption type
fill_gapsqueryintegerNoFill in missing dates

Enumeration value

AttributeValue
fill_gaps0
fill_gaps1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_datequerystring(date)NoStart date, defaults to 6 days ago
end_datequerystring(date)NoEnd date, defaults to today
consumption_typequerystringNoOptional consumption type
fill_gapsqueryintegerNoPad in missing hours

Enumeration value

AttributeValue
fill_gaps0
fill_gaps1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource 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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
pagequeryintegernonone
page_sizequeryintegernonone
start_datequerystring(date)NoStart date, interpreted by site timezone
end_datequerystring(date)NoEnd date, interpreted by site timezone
consumption_typequerystringNoConsumption type

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
pagequeryintegernonone
page_sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_datequerystring(date)NoStart date, interpreted by site timezone
end_datequerystring(date)NoEnd date, interpreted by site timezone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_datequerystring(date)NoStart date, defaults to 6 days ago
end_datequerystring(date)NoEnd date, defaults to today
consumption_typequerystringNoOptional consumption type
fill_gapsqueryintegerNoFill in missing dates

Enumeration value

AttributeValue
fill_gaps0
fill_gaps1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_datequerystring(date)NoStart date, defaults to 6 days ago
end_datequerystring(date)NoEnd date, defaults to today
consumption_typequerystringNoOptional consumption type
fill_gapsqueryintegerNoPad in missing hours

Enumeration value

AttributeValue
fill_gaps0
fill_gaps1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
pagequeryintegernonone
page_sizequeryintegernonone
endpointquerystringNoEndpoint type
statusquerystringnonone
start_timequerystringNoUser timezone time, format Ymd H:i:s
end_timequerystringNoUser timezone time, including end boundary
urlquerystringNoTarget URL or Data scraper identifier
job_idquerystringNoTask ID prefix

Enumeration value

AttributeValue
statuspending
statuscrawling
statuscompleted
statusfailed

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
job_idquerystringYesTask ID

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
job_idquerystringYesTask ID
pagequeryintegernocrawl/data sub-result page number
page_sizequeryintegerNoNumber of pages for crawl/data sub-results

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
limitqueryintegerNoReturns 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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
pagequeryintegernonone
page_sizequeryintegernonone
endpointquerystringNoEndpoint type, usually batch_scrape
statusquerystringnonone
start_timequerystringNoUser timezone time, format Ymd H:i:s
end_timequerystringNoUser timezone time, including end boundary
batch_idquerystringnoBatch task ID prefix

Enumeration value

AttributeValue
statuspending
statuscrawling
statuscompleted
statusfailed

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
batch_idquerystringYesBatch task ID
pagequeryintegernosub-item page number
page_sizequeryintegernoNumber of sub-items per page

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {},
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» coderesponseCodefalsenoneStatus code: 200 Success, 3 Invalid app_key
» msgstringfalsenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» idintegerfalsenoneAccount Number
»»» usernamestringfalsenoneProxy account name
»»» passwordstringfalsenoneProxy account password
»»» created_atstringfalsenoneAdded time
»»» remarkstringfalsenoneRemarks
»»» product_typeproductTypesfalsenonePackage types: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP Package, 14 Static Data Center IP Package, 25 Static Residential IP Package
»»» usage_flowintegerfalsenoneUsage flow, in KB
»»» limit_flowintegerfalsenoneCustom flow limit: maximum 102400 GB, 0 means no limit
»»» statusintegerfalsenoneEnabled status: 1 enabled, 0 disabled

Enumeration value

AttributeValue
product_type9
product_type11
product_type14
product_type25

POST detection proxy account traffic limits can be set.

POST /ep/whitelist-account/check

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "account": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» accountbodystringNoPass 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
isAgent0
isAgent1

GET Retrieve dynamic proxy sub-account quota and used quantity

GET /ep/whitelist-account/child-account

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountsbodystringYesAccount 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 (,).
» remarkbodystringNoProxy account description
» product_typebodyproductTypesNoPackage Type: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP Package, 14 Static Data Center IP Package, 25 Static Residential IP Package

Enumeration value

AttributeValue
» product_type9
» product_type11
» product_type14
» product_type25

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": null
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountsbodystringYesProxy 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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountsbodystringYesProxy 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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» datanullfalsenonenone

POST Enable Proxy Account

POST /ep/whitelist-account/enable

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "app_key": "stringstringstringstringstringst",
  "accounts": "user01,user02"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountsbodystringYesProxy 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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountbodystringYesProxy account, only numbers and letters are supported.
» passwordbodystringYesNew 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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountbodystringYesProxy account, only numbers and letters are supported.
» remarkbodystringYesNew 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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountbodystringYesProxy account, only numbers and letters are supported.
» limitbodyintegerNoTraffic limit, unit: GB, 0 means no limit

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": null
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» datanullfalsenonenone

POST Quickly create a proxy account

POST /ep/whitelist-account/quick-add

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "product_type": 0
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_typebodyintegeryesnone

Return to example

200 Response

{
  "code": 0,
  "msg": "string",
  "request_id": "string",
  "data": {
    "username": "string",
    "password": "string"
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Returns new account and password upon successful transactionInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenonenone
» msgstringfalsenonenone
» request_idstringfalsenonenone
» dataanyfalsenonenone

oneOf

NameTypeRequiredConstraintChinese NameDescription
»»anonymousobjectfalsenonenone
»»» usernamestringtruenonenone
»»» passwordstringtruenonenone

xor

NameTypeRequiredConstraintChinese NameDescription
»»anonymousnullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» accountbodystringyesnone
» daily_limitbodyintegerNoUnit: GB

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» accountbodystringyesnone
» passwordbodystringnonone
» remarkbodystringnonone
» limitbodyintegerNoTotal data limit, in GB
» daily_limitbodyintegerNoDaily data limit, in GB
» statusbodyintegernonone
» udpbodyintegernonone

Enumeration value

AttributeValue
» status0
» status1
» udp0
» udp1

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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 CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

GET agent account quota for specified product type

GET /ep/whitelist-account/quota

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
product_typequeryintegeryesnone

Return to example

200 Response

{
  "code": 0,
  "msg": "string",
  "request_id": "string",
  "data": {
    "usage": 0,
    "limit": 0,
    "expand": 0
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenonenone
» msgstringfalsenonenone
» request_idstringfalsenonenone
» dataobjectfalsenonenone
»» usageintegertruenonenone
»» limitintegertruenonenone
»» expandintegertruenonenone

GET agent account quotas for all product types

GET /ep/whitelist-account/quotas

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone

Return to example

200 Response

{
  "code": 0,
  "msg": "string",
  "request_id": "string",
  "data": {
    "list": [
      {
        "product_type": 0,
        "limit": 0,
        "usage": 0
      }
    ]
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenonenone
» msgstringfalsenonenone
» request_idstringfalsenonenone
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» product_typeintegerfalsenonenone
»»» limitintegerfalsenonenone
»»» usageintegerfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» accountbodystringisproxy account name
» passwordbodystringNoNew password, 6-16 characters of numbers or letters; if not sent, it will not be changed
» remarkbodystringNoNew note
» limitbodyintegerNoMaximum data usage, in GB, 0 indicates no limit
» daily_limitbodyintegerNoDaily data limit in GB, 0 indicates no limit
» statusbodyintegerNoEnabled status
» UDPbodyintegerNoUDP supports switching, only effective for package types 14, 16, 21, and 25

Enumeration value

AttributeValue
» status0
» status1
» udp0
» udp1

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": null
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus code, 200 Success
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
acqueryintegerYesAgent account ID or username; compatible parameter account
aequerystringnonone
stquerystringnonone
ctquerystringnonone
lfqueryintegernonone
nqueryintegernonone
fqueryintegerNoOnly affects the concatenation string format of txt/csv files
typequerystringnonone
lbquerystringnonone
epquerystringnonone
team_idqueryResourceSpaceId Nonone

Enumeration value

AttributeValue
f1
f2
f3
f4
f5
typejson
typexml
typetxt
typecsv

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success. WebV1SuccessResponse

IP whitelist

GET IP whitelist list

GET /ep/proxy-ip/list

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource space identifier; personal space can be omitted or an empty string can be passed
product_typequeryintegerNoPackage 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus code, 200 Success
» msgstringfalsenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» ipstringfalsenoneWhitelist IP
»»» remarkstringfalsenoneRemarks
»»» product_typeintegerfalsenonePackage type
»»» created_atstringfalsenoneCreation 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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» ipsbodystringYesThe whitelist of IPs to be added, multiple IPs separated by commas or newlines
» remarkbodystringNoRemark
» product_typebodyintegerNoPackage type number
» user_product_idbodyintegerNoUser package ID, required if package type is 11

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": null
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus code, 200 Success
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_keybodystringNoAuthorization key
» ipsbodystringYesThe whitelisted IPs to be deleted, multiple IPs separated by commas
» verify_typebodystringNoVerification type: phone, email, wechat, totp
» verify_codebodystringNoVerification code

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": null
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus code, 200 Success
» msgstringfalsenoneStatus message
» datanullfalsenonenone

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» ipbodystring(ipv4)yesnone
» remarkbodystringyesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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 CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

GET IP whitelist quota for specified product type

GET /ep/white-ip/quota

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
product_typequeryintegeryesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

Get IP whitelist quotas for all product types

GET /ep/white-ip/quotas

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

IP Extraction

GET IP extraction count by day

GET /ep/user-extract-ip/days

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_datequerystring(date)NoDefault: 6 days ago
end_datequerystring(date)NoDefault: Today
product_typequeryintegernonone

Enumeration value

AttributeValue
product_type9
product_type17
product_type22

Return to example

200 Response

{
  "code": 0,
  "msg": "string",
  "request_id": "string",
  "data": {
    "list": [
      {
        "count": 0,
        "date": "2019-08-24"
      }
    ]
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenonenone
» msgstringfalsenonenone
» request_idstringfalsenonenone
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» countintegertruenonenone
»»» datestring(date)truenonenone

GET Extract IP

GET /ep/ip/v3

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoTeam Key can be omitted; the team key must match the team bound to the key.
app_keyquerystring(password)YesAccess key
ccquerystringNoCountry or region
statequerystringNoProvince or State
cityquerystringNocity
formatquerystringNoGet format
lbquerystringNoSeparator, only valid for text format
numquerynumberNoNumber of items to retrieve
lifequerynumberNoKeep period - minutes
epquerystringNoProxy network

Enumeration value

AttributeValue
epus
ephk
epde

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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[any]falsenonenone

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

NameLocationTypeRequiredDescription
usernamequerystringisProxy 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus code, 200 Success
» msgstringfalsenoneStatus message
» dataobjectfalsenonenone
»» cachebooleanfalsenoneWhether it comes from the cache
»» list[object]falsenonenone
»»» Citystringfalsenonecity
»»» AreastringfalsenoneRegion
»»» StatestringfalsenoneState/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

NameLocationTypeRequiredDescription
usernamequerystringisProxy 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus code, 200 Success
» msgstringfalsenoneStatus message
» dataobjectfalsenonenone
»» cachebooleanfalsenoneWhether it comes from the cache
»» list[object]falsenonenone
»»» Citystringfalsenonecity
»»» AreastringfalsenoneRegion
»»» StatestringfalsenoneState/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

NameLocationTypeRequiredDescription
usernamequerystringisProxy 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus code, 200 Success
» msgstringfalsenoneStatus message
» dataobjectfalsenonenone
»» cachebooleanfalsenoneWhether it comes from the cache
»» list[object]falsenoneList of regions
»»» AreastringfalsenoneArea code
»»» states[object]falsenoneList of states/provinces
»»»» StatestringfalsenoneState/Province Name
»»»» cities[string]falsenoneList 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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonelist
»»» name_zh_cnstringfalsenoneCountry or region name
»»» name_enstringfalsenoneCountry or region name
»»» continent_codestringfalsenoneContinent code
»»» country_codestringfalsenonecountry or region code
»»» items[object]falsenoneProvince or State
»»»» citystringfalsenoneCity Name
»»»» statestringfalsenoneProvince or state name code
»»»» continent_codestringfalsenoneContinent code
»»»» country_codestringfalsenonecountry or region code

GET City Search

GET /ep/ip/dynamic-citys/search

Request parameters

NameLocationTypeRequiredDescription
country_codequerystringYesCountry or region code
statequerystringisstate or province code

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": {
    "list": ["string"]
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[string]falsenonelist

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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonelist
»»» name_zh_cnstringfalsenoneCountry or region name
»»» name_enstringfalsenoneCountry or region name
»»» continent_codestringfalsenoneContinent code
»»» country_codestringfalsenonecountry or region code
»»» items[object]falsenoneProvince or State
»»»» statestringfalsenoneProvince or state name code
»»»» continent_codestringfalsenoneContinent code
»»»» country_codestringfalsenonecountry or region code

GET State/Province Search

GET /ep/ip/dynamic-states/search

Request parameters

NameLocationTypeRequiredDescription
country_codequerystringYesCountry or region code

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": {
    "list": ["string"]
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[string]falsenonelist

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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource 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
areaquerystringNoCountry/Region Code
statusqueryintegerNo0 = all, 1 = valid, 2 = expired
trade_noquerystringNoOrder number
created_atqueryarray[string]NoCreation time range; both start and end times must be provided.

Enumeration value

AttributeValue
status0
status1
status2

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

GET Retrieve List of Purchased Static IPs

GET /ep/ip/get-static-ip

Request parameters

NameLocationTypeRequiredDescription
country_codequerystringNoCountry or region code
product_typequerynumberNoProduct type, 25: Static residential IP, 14: Data center IP
trade_noquerystringNoFilter by order number
pagequerynumberNoPage number
sizequerynumberNoNumber per page
statusquerynumberNoStatus, 1: Valid, 2: Invalid, 3: About to expire, 4: Under maintenance

Enumeration value

AttributeValue
product_type14
product_type25
status1 - 2 - 3 - 4

Return to example

200 Response

{}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKnoneInline

Return data structure

GET Retrieve the number of static IPs available in the regions for sale

GET /ep/ip/static-ip-region

Request parameters

NameLocationTypeRequiredDescription
ispqueryintegerNoISP filter, no filtering if not provided (except for sites 1/4/5, default is 1)
asnqueryintegerNoWhether to return ASN grouped data
exclusivequeryintegerNoWhether 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).

ValueDescription
0Static IP Address for Data Center (IDC)
1Residential Static IP (ISP)

asn: Whether to return ASN group data

ValueDescription
0Do not return ASN grouped data (default)
1Return ASN grouped data

exclusive: Whether to count inventory as exclusive.

ValueDescription
0Statistics based on current user/shared group (default)
1Exclude all assigned IPs and only count available inventory

Enumeration value

AttributeValue
isp0
isp1
asn0
asn1
exclusive0
exclusive1

Return to example

200 Response

{
  "code": 200,
  "msg": "请求成功",
  "data": {
    "list": [
      {
        "code": "US",
        "number": 55
      }
    ]
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus code, 200 Success
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» codestringtruenoneCountry or region code
»»» numberintegertruenonequantity

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus code, 200 Success
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» codestringtruenoneCountry or region code, ISO 3166-1 alpha-2
»»» numberintegertruenoneNumber of available data center IPs for the current site
»»» name_zh_cnstringfalsenoneCountry or region Chinese name
»»» name_enstringfalsenoneCountry or region name in English
»»» square_flagstringfalsenoneSquare 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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» daysbodyintegernonone
» product_typebodyintegernonone
» usernamebodystringnonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

POST proxy account historical traffic usage

POST /ep/user-usage-flow/username-total

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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 CodesStatus Code MeaningExplanationData Model
200OKGBK encoded CSV filestring

Get your total data allowance and remaining data allowance.

GET /ep/user-usage-flow/flow-total

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
unitquerystringnonone

Enumeration value

AttributeValue
unitKB
unitMB
unitGB
unitTB
unitPB

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
unitKB
unitMB
unitGB
unitTB
unitPB

GET Daily Rate Chart

GET /ep/user-usage-flow/rate-graph

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
startquerystring(date)nonone
endquerystring(date)nonone
usernamequerystringnonone
user_product_idqueryintegernonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

GET Daily Cache Traffic Statistics

GET /ep/user-usage-flow/cache-total

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_timequerystringnonone
end_timequerystringnonone
product_typequeryintegernonone
usernamequerystringnonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

GET usage data summary by day

GET /ep/user-usage-flow/total

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource space identifier; personal space can be omitted or an empty string can be passed
app_keyquerystring(password)YesAuthentication key
start_timequerystring(Ymd H:i:s)NoStart 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_timequerystring(Ymd H:i:s)NoDeadline time, accurate to the second. Please note that there is a delay of up to 5 minutes in logging. Defaults to the current time.
usernamequerystringNoSub-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_typequerynumberNoPackage type

Return to example

200 Response

{
  "code": 200,
  "msg": "string",
  "data": {
    "list": [
      {
        "day": "2022-08-01",
        "flow": 0
      }
    ]
  }
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» daystringfalsenonedate
»»» flowintegerfalsenoneTraffic consumption, in KB

Proxy Logs

GET Client IP Proxy Access Statistics

GET /ep/http-t-dom/list-v2

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_timequerystring(date)nonone
end_timequerystring(date)nonone
exportquerystringnonone

Enumeration value

AttributeValue
exportcsv

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 CodesStatus Code MeaningExplanationData Model
200OKJSON statistics;export=csv Returns a CSV filestring

Percentage of GET requests from client IP addresses

GET /ep/http-t-dom/client-ip-proportion

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
start_timequerystring(date)nonone
end_timequerystring(date)nonone
exportquerystringnonone

Enumeration value

AttributeValue
exportcsv

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 CodesStatus Code MeaningExplanationData Model
200OKJSON percentage results;export=csv Returns a CSV filestring

Monthly renewal bill

GET Current Month Summary Renewal Bill

GET /ep/monthly-renewal-bill

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
typecurrent
typenext

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

NameLocationTypeRequiredDescription
bodybodyMonthly Renewal RequestYesnone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
typecurrent
typenext

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

NameLocationTypeRequiredDescription
bodybodyMonthly Renewal RequestYesnone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

GET Monthly Summary Renewal History Bills

GET /ep/monthly-renewal-bill/history

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
trade_noquerystringnonone
start_datequerystring(date)nonone
end_datequerystring(date)nonone
pagequeryintegernonone
sizequeryintegernonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Invoice Management

GET Invoice Header Details

GET /ep/user-invoice/info

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
invoice_codequerystringnonone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please continue to check the response body code.Inline

Return data structure

Enumeration value

AttributeValue
role_type1
role_type2
invoice_type0
invoice_type1
invoice_type2

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

NameLocationTypeRequiredDescription
bodybodyanyyesnone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Request successful, data is nullInline

Return data structure

GET Invoice Header List

GET /ep/user-invoice/list

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}]
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
role_type1
role_type2
invoice_type0
invoice_type1
invoice_type2

POST to delete invoice header

POST /ep/user-invoice/delete

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "invoice_code": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_codebodystringyesnone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Request successful, data is nullInline

Return data structure

GET Invoice Record List

GET /ep/user-invoice/record-list

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
statusqueryintegernonone

Enumeration value

AttributeValue
status0
status1
status2
status3
status4

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
role_type1
role_type2
invoice_type0
invoice_type1
invoice_type2

POST Submit Invoice Request

POST /ep/user-invoice/submit

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "invoice_code": "string",
  "order_ids": [0]
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_codebodystringyesnone
» order_idsbody[integer]yesnone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "invoice_id": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_idbodyintegerisnone
» reasonbodystringnonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Request successful, data is nullInline

Return data structure

GET Invoice Amount Statistics

GET /ep/user-invoice/statistics

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

GET List of Invoiceable Orders

GET /ep/user-invoice/invoiceable-orders

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Package Inquiry

GET Purchased Package List

GET /ep/user-product/list

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource space identifier; personal space can be omitted or an empty string can be passed
app_keyquerystring(password)YesAuthentication key
trade_noquerystringNoOrder number. Please enter the complete order number. Fuzzy search is not supported.
pagequerynumberNoPagination, default: 1
sizequerynumberNoNumber of items to display per page, default: 20
product_typequerynumberNoPackage 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 CodesStatus Code MeaningExplanationData Model
200OKRequest toInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegertruenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringtruenoneStatus message
» dataobjectfalsenonenone
»» list[object]falsenonenone
»»» idintegerfalsenonePackage Number
»»» created_atstringfalsenonePackage effective time
»»» expired_atstringfalsenoneThe expiration date of the data plan. Data will be unavailable after the plan expires.
»»» product_typeproductTypesfalsenonePackage types: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP Package, 14 Static Data Center IP Package, 25 Static Residential IP Package
»»» trade_nostringfalsenoneOrder transaction number
»»» orderobjectfalsenonenone
»»»» created_atstringfalsenoneOrder creation time
»»»» pay_atstringfalsenoneOrder payment time
»»»» titlestringfalsenoneOrder description
»» pageintegertruenoneCurrent page
»» page_sizeintegerfalsenonePage size
»» total_countintegerfalsenoneTotal number of records
»» total_pageintegerfalsenoneTotal number of pages

Enumeration value

AttributeValue
product_type9
product_type11
product_type14
product_type25

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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource space identifier; personal space can be omitted or an empty string can be passed
app_keyquerystring(password)YesAuthentication key
product_typequeryintegerNoProduct type, only supports 9 (dynamic traffic plan) and 12 (long-term IDC traffic plan)

Enumeration value

AttributeValue
product_type9
product_type12

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Status code 200

NameTypeRequiredConstraintChinese NameDescription
» codeintegerfalsenoneStatus codes: 200 Success, 3 Invalid app_key, 156 Account not verified
» msgstringfalsenoneStatus message
» dataobjectfalsenonenone
»» totalintegerfalsenoneTotal traffic/IP volume (unit: KB)
»» total_countintegerfalsenoneTotal number of packages
»» effectiveintegerfalsenoneEffective remaining quantity (unit: KB)
»» effective_countintegerfalsenoneNumber of effective packages
»» effective_totalintegerfalsenoneEffective total (unit: KB)
»» effective_usedintegerfalsenoneEffective used data (in KB)
»» temporaryintegerfalsenoneTotal near-expiration quantity (expiring within 7 days, unit: KB)
»» temporary_countintegerfalsenoneNumber of near-expiration packages (expiring within 7 days)
»» expiredintegerfalsenoneExpired quantity (in KB)
»» expired_countintegerfalsenoneNumber of expired packages
»» usedintegerfalsenoneTotal 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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» statusbodyintegernonone
» pagebodyintegernonone
» sizebodyintegernonone
» user_product_idbodyintegernonone
» country_codebodystringnonone
» product_typebodyintegernonone
» ipbodystring(ipv4)nonone
» auto_renewalbodyintegernonone
» support_renewalbodyintegernonone
» remaining_daysbodyintegernonone
» limit_daysbodyintegernonone
» sortbodystringnonone
» remarkbodystringnonone

Enumeration value

AttributeValue
» auto_renewal0
» auto_renewal1
» support_renewal0
» support_renewal1
» sortexp_asc
» sortexp_desc

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

POST to delete expired plans

POST /ep/user-product/delete

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "id": 1
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» idbodyintegerisnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

POST Batch delete expired plans

POST /ep/user-product/batch-delete

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "ids": [1]
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» idsbody[integer]yesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

POST to modify package remarks

POST /ep/user-product/change-remark

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "id": 1,
  "remark": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» idbodyintegerisnone
» remarkbodystringyesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» idsbody[integer]yesnone
» udpbodyintegerisnone

Enumeration value

AttributeValue
» udp0
» udp1

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» idbodyintegerisUser Package ID
» country_codebodystringNoTarget country/region code; if not provided, the current IP address's country/region code will be used first.
» ipbodystringNoTarget 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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

GET Retrieve Static IP Change Record

GET /ep/user-product/ip-change-log

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoResource space identifier; personal space can be omitted or an empty string can be passed
pagequeryintegernonone
page_sizequeryintegernonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_idbodyintegeryesnone
» statusbodyintegerNo0 = disabled, 1 = enabled

Enumeration value

AttributeValue
» status0
» status1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "id": 1
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_idsbody[integer]yesnone
» statusbodyintegerNo0 = disabled, 1 = enabled

Enumeration value

AttributeValue
» status0
» status1

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successful; processing results returned independently for each packageInline

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_typebodyintegeryesnone
» days_before_expirebodyintegernonone
» traffic_thresholdbodyintegerNoUnit: GB, supported only on 9/12/24
» renewal_cycle_daysbodyintegerNoOnly supported for 11/14/16/25 days, and must be the current product cycle.
»anonymousbodyobjectnonone
»anonymousbodyobjectnonone
»anonymousbodyobjectnonone

Enumeration value

AttributeValue
» product_type9
» product_type11
» product_type12
» product_type14
» product_type16
» product_type24
» product_type25

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Request successful, data is nullInline

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_typebodyintegerNoIf not specified, all supported types will be returned

Enumeration value

AttributeValue
» product_type9
» product_type11
» product_type12
» product_type14
» product_type16
» product_type24
» product_type25

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
product_type9
product_type11
product_type12
product_type14
product_type16
product_type24
product_type25
sourceuser
sourcesystem
sourceuser
sourcesystem
traffic_sourceuser
traffic_sourcesystem

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_idbodyintegeryesnone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
time_unitday
time_unithour
status0
status1

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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_idbodyintegerNoIf not specified, query all records in the current space
» pagebodyintegernonone
» sizebodyintegernonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

Enumeration value

AttributeValue
trigger_type0
trigger_type1
status1
status2
status3

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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceIdNoOrder resource space identifier; personal space can be omitted or an empty string can be passed
page_noqueryintegernonone
page_sizequeryintegernonone
trade_noquerystringNoOrder number
start_timequerystring(date-time)NoStart time (inclusive), e.g., 2024-01-01 00:00:00
end_timequerystring(date-time)NoEnd time (excluding)
statusqueryintegerNoOrder status
product_typequeryintegerNoProduct type
invoicequeryintegerNoInvoice status: 0 Unrestricted, 1 Invoice issued, -1 Invoice not issued (can be reissued)
pay_fee_statusqueryintegerNoFilter by long/short amount: 1. Overpayment 2. Underpayment

Detailed description

status: Order status

StatusDescription
0Pending Payment
1Paid
2Unpaid after timeout has been cancelled
3Refund received

product_type: Product type

Product TypeDescription
3Balance Top-up
9Dynamic Data Plan
11Dynamic Global Time Package V2
12Long-term IDC traffic package
13Residential Static IP Traffic Package
14Data Center Static IP Package
15Long-term ISP data plans
16Static Data Plan
17Dynamic IP Quantity Package
18web-scraper
19Static IP Renewal
20Change Static IP Quota
21Static Traffic Package v2
24Static Traffic Supplement Package
25Residential Static IP Package
26Order 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.
27Serp
28Video

Enumeration value

AttributeValue
status0
status1
status2
status3
product_type3
product_type9
product_type11
product_type12
product_type14
product_type16
product_type17
product_type18
product_type19
product_type21
product_type24
product_type25
product_type26
product_type27
product_type28
invoice-1
invoice0
invoice1
pay_fee_status1
pay_fee_status2

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 CodesStatus Code MeaningExplanationData Model
200OKSuccessInline

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» pidbodyintegerYesPackage ID, from the id field returned by the /openapi/product interface
» upidsbodystringNoList of renewal package IDs (comma-separated), from the id field returned by the /openapi/user-product/list or /openapi/ip/get-static-ip API
» amountbodynumberNoQuantity of new package purchases
» pm_idbodyintegerYesPayment method ID, from the id field returned by the /openapi/payment/list or /openapi/payment/groups API
» region_listbodystringNoSpecify the region, quantity, and ASN number when purchasing static IPs. Format: Region, Quantity, ASN
» coupon_snbodystringNoCoupon ID
» use_invitation_registration_discountbodybooleanNoWhether to use the invitation registration discount
» renew_durationbodyintegerNoRenewal duration - optional for static IP
» product_sku_bandwidth_idbodyintegerNoPackage 11: Bandwidth Package ID
» product_sku_concurrency_idbodyintegerNoPackage 11: Concurrency Package ID
» product_sku_duration_idbodyintegerNoPackage type=11 Required: Duration Specification ID
» etdbodyintegerNoDuration multiplier, obtained from the package extension_of_time_days, 2 represents days × 2, price increases
» recharge_amountbodyintegerNoPackage 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 CodesStatus Code MeaningExplanationData Model
200OKCreated successfullyInline

Return data structure

POST Cancel Order

POST /ep/order/close

Body Request Parameters

{
  "team_id": "A1b2C3d4E5f6",
  "trade_no": "string"
}

Request parameters

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_nobodystringyesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

GET Order Details

GET /ep/order/info

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
trade_noquerystringyesnone

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
order_idquerystringYesClient-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 CodesStatus Code MeaningExplanationData Model
200OKHTTP success; order data may be carried with a business error code if the order has been paid or cancelledInline

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_listbody[string]yesnone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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.
» pidbodyintegerYesPackage ID
» upidsbodystringNoIP Renewal: List of user package IDs, comma-separated
» amountbodyintegerNoPurchase quantity
» pm_idbodyintegerYesPayment method ID
» region_listbodystringNoStatic IP purchase regions + quantity, format: region ID, quantity
» coupon_snbodystringNoCoupon ID
» renew_durationbodystringNoIP renewal duration: 1m = 1 month, 2m = 2 months, em = end of next month
» product_sku_bandwidth_idbodyintegerNoPackage type=11 Required: Bandwidth specification ID
» product_sku_concurrency_idbodyintegerNoPackage type=11 Required: Concurrency Specification ID
» product_sku_duration_idbodyintegerNoPackage type=11 Required: Duration Specification ID
» etdbodyintegerNoDuration multiplier, obtained from the package extension_of_time_days
» recharge_amountbodynumberNoPackage type=3 Required: Recharge amount

Enumeration value

AttributeValue
» renew_duration1m
» renew_duration2m
» renew_durationem

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 CodesStatus Code MeaningExplanationData Model
200OK Pre-check successfulInline

Return data structure

Payment Management

POST to initiate order payment

POST /ep/pay

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
trade_noquerystringyesnone
pm_idqueryintegernonone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» team_idbodyanyNoPublic 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
»»anonymousbodystringnonone
»»anonymousbodyTeamPublicIdNoPublic 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_nobodystringyesnone
» pay_methodbodyintegernonone
» pm_idbodyintegernonone
» trade_typebodystringnonone

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK Operation successfulNone

POST payment verification and fee preview

POST /ep/pay/pay-check

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
trade_noquerystringyesnone
pm_idqueryintegernonone

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 CodesStatus Code MeaningExplanationData Model
200OKRequest successfulInline

Return data structure

GET requests directly render the web payment page.

GET /ep/pay/web-direct-pay

Request parameters

NameLocationTypeRequiredDescription
team_idqueryResourceSpaceId Nonone
trade_noquerystringyesnone
pm_idqueryintegernonone

Return to example

200 Response

"string"

Return results

Status CodesStatus Code MeaningExplanationData Model
200OKHTML Payment Pagestring

GET to retrieve a list of payment methods

GET /ep/payment/list

Request parameters

NameLocationTypeRequiredDescription
trade_noquerystringNoOrder number - Can be passed in when a specific payment method is required for some orders
currencyquerystringnocurrency 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 CodesStatus Code MeaningExplanationData Model
200OK Successfully retrievedInline

Return data structure

GET to retrieve a list of payment methods

GET /ep/payment/groups

Request parameters

NameLocationTypeRequiredDescription
trade_noquerystringNoOrder 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 CodesStatus Code MeaningExplanationData Model
200OK Successfully retrievedInline

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 CodesStatus Code MeaningExplanationData Model
200OKOKInline

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

NameLocationTypeRequiredDescription
typequeryintegerNoPackage type, see Product.type enumeration description. Returns all types if not specified.
parent_product_typequeryintegerNoParent package type, only valid when type=19 (IP renewal), used to filter product lines: 14=Data Center 25=Residential
time_daysqueryanyNoFilter by validity period in days, supports single value or array, e.g., 30 / [30,90,365]
show_typequeryanyNoDisplays 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

AttributeValue
parent_product_type14
parent_product_type25

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 CodesStatus Code MeaningExplanationData Model
200OKOKInline

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
re_typequeryintegernonone
transaction_typequeryintegernonone
balance_typequeryintegernonone
pagequeryintegernonone
page_sizequeryintegernonone

Enumeration value

AttributeValue
re_type0
re_type1

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» start_timebodyintegerYesStart Unix timestamp, seconds
» end_timebodyintegerYesEnd Unix timestamp, seconds
» typebodystringnonone

Enumeration value

AttributeValue
» typedynamic
» typehost_pool

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "task_id": 0,
    "status": "string"
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
task_idqueryintegeryesnone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success.Inline

Return data structure

Enumeration value

AttributeValue
statuspending
statusprocessing
statuscompleted
statusfailed
statuscanceled
statusno_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

NameLocationTypeRequiredDescription
pagequeryintegernonone
sizequeryintegernonone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "list": [{}],
    "total": 0,
    "page": 0,
    "size": 0
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success.Inline

Return data structure

Enumeration value

AttributeValue
statuspending
statusprocessing
statuscompleted
statusfailed
statuscanceled
statusno_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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» task_idbodyintegeryesnone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectnonone
» statusbodyintegernonone
» pagebodyintegernonone
» sizebodyintegernonone

Enumeration value

AttributeValue
» status0
» status1
» status2

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» idbodyintegerisnone

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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
pagequeryintegernonone
sizequeryintegernonone
readqueryintegernonone
typequeryintegernonone

Enumeration value

AttributeValue
read0
read1

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success.Inline

Return data structure

Enumeration value

AttributeValue
read_status0
read_status1

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

NameLocationTypeRequiredDescription
idqueryintegeryesnone

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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success.Inline

Return data structure

Enumeration value

AttributeValue
read_status0
read_status1

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» idbodyintegerisnone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» idsbody[integer]yesnone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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 CodesStatus Code MeaningExplanationData Model
200OK 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 CodesStatus Code MeaningExplanationData Model
200OK 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 CodesStatus Code MeaningExplanationData Model
200OK 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

NameLocationTypeRequiredDescription
idqueryintegeryesnone

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "scenes": [0],
    "subscribe_all": true
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success.Inline

Return data structure

Enumeration value

AttributeValue
status0
status1

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» statusbodyintegeryesnone

Enumeration value

AttributeValue
» status0
» status1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": null,
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK 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 CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success.Inline

Return data structure

Enumeration value

AttributeValue
enabled0
enabled1

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

NameLocationTypeRequiredDescription
bodybodyobjectyesnone
» udpbodyintegerisnone

Enumeration value

AttributeValue
» udp0
» udp1

Return to example

200 Response

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "enabled": 0
  },
  "request_id": "string"
}

Return results

Status CodesStatus Code MeaningExplanationData Model
200OK HTTP successful; please check the business code, 200 indicates success.Inline

Return data structure

Enumeration value

AttributeValue
enabled0
enabled1

Data Model

ApiKeyManageRequest

{
  "team_id": "A1b2C3d4E5f6",
  "id": 1
}

property

NameTypeRequiredConstraintChinese NameDescription
team_idResourceSpaceIdfalsenonePublic 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
idintegertruenoneAPI Key ID

OpenApiAccountProfile

{
  "id": 0,
  "username": "string",
  "nickname": "string",
  "email": "string",
  "balance": "string",
  "gift_balance": "string",
  "currency": "string",
  "language": "string",
  "timezone": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegertruenoneUser ID
usernamestringtruenoneUsername
nicknamestringtruenonenickname
emailstringtruenonebind email
balancestringtruenoneRecharge balance, decimal string
gift_balancestringtruenoneCurrent gift balance, decimal string
currencystringtruenoneSite currency
languagestringtruenoneUser language, used when not configured
timezonestringtruenoneUser timezone, used when not configured

OpenApiBalanceRecord

{
  "id": 0,
  "re_type": 0,
  "transaction_type": 0,
  "balance_type": 0,
  "fee": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenoneDatabase values ​​may be serialized to strings
re_typeintegerfalsenone0 expenditure, 1 income
transaction_typeintegerfalsenoneTransaction type
balance_typeintegerfalsenoneBalance type
feestringfalsenoneVariable 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

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenoneDatabase values ​​may be serialized to strings
user_idintegerfalsenoneDetails API returns
start_timestringfalsenoneYmd H:i:s; non-RFC 3339 date
end_timestringfalsenoneYmd H:i:s; non-RFC 3339 date
statusstringfalsenonenone
file_sizeinteger¦nullfalsenonenone
record_countinteger¦nullfalsenonenone
created_atstringfalsenoneYmd H:i:s; non-RFC 3339 date
completed_atstringfalsenoneYmd H:i:s; non-RFC 3339 date
file_urlstringfalsenoneDetails returned by the API upon completion
download_urlstringfalsenoneReturns a signed download link valid for 24 hours after completion
error_messagestringfalsenoneThe details API may return a value on failure

Enumeration value

AttributeValue
statuspending
statusprocessing
statuscompleted
statusfailed
statuscanceled
statusno_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

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenoneDatabase values ​​may be serialized to strings
coupon_idintegerfalsenoneDatabase values ​​may be serialized to strings
typeintegerfalsenoneDatabase values ​​may be serialized to strings
statusintegerfalsenoneDatabase values ​​may be serialized to strings
sourceintegerfalsenoneDatabase values ​​may be serialized to strings
titlestringfalsenonenone
title_enstringfalsenonenone
descriptionstringfalsenonenone
description_enstringfalsenonenone
start_amountstring¦nullfalsenonenone
start_amount_usdstring¦nullfalsenonenone
start_amount_hkdstring¦nullfalsenonenone
deduction_amountstring¦nullfalsenonenone
deduction_amount_usdstring¦nullfalsenonenone
deduction_amount_hkdstring¦nullfalsenonenone
discount_ratestring¦nullfalsenonenone
discount_ceiling_amountstring¦nullfalsenonenone
discount_ceiling_amount_usdstring¦nullfalsenonenone
discount_ceiling_amount_hkdstring¦nullfalsenonenone
created_atstring¦nullfalsenoneYmd H:i:s
effect_atstring¦nullfalsenoneYmd H:i:s
expired_atstring¦nullfalsenoneYmd H:i:s
used_atstring¦nullfalsenoneYmd H:i:s
product_typesstringnullfalsenone
created_timestampinteger¦nullfalsenonenone
effect_timestampinteger¦nullfalsenonenone
expired_timestampinteger¦nullfalsenonenone
used_timestampinteger¦nullfalsenonenone
is_expiredbooleanfalsenoneList interface returns

OpenApiNotification

{
  "id": 0,
  "title": "string",
  "content": "string",
  "type": 0,
  "read_status": 0,
  "created_at": "string",
  "created_timestamp": 0
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenoneDatabase values ​​may be serialized to strings
titlestringfalsenonenone
contentstringfalsenoneContent rendered according to the requested language
typeintegerfalsenoneDatabase values ​​may be serialized to strings
read_statusintegerfalsenonenone
created_atstringfalsenoneYmd H:i:s; non-RFC 3339 date
created_timestampintegerfalsenonenone

Enumeration value

AttributeValue
read_status0
read_status1

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

NameTypeRequiredConstraintChinese NameDescription
anonymousintegerfalsenonePackage type: 9 Dynamic Residential Traffic Package, 11 Dynamic Residential IP, 14 Static Data Center IP, 25 Static Residential IP

Enumeration value

AttributeValue
anonymous9
anonymous11
anonymous14
anonymous25

apiKey

"pa$$word"

API Key; passed via apiKeyAuth or as a request parameter in the operation declaration.

property

NameTypeRequiredConstraintChinese NameDescription
anonymousstring(password)falsenoneAPI 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

NameTypeRequiredConstraintChinese NameDescription
anonymousintegerfalsenoneStatus code: 200 Success, 3 Invalid app_key

responseMsg

"success"

response message

property

NameTypeRequiredConstraintChinese NameDescription
anonymousstringfalsenoneresponse 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

NameTypeRequiredConstraintChinese NameDescription
codeintegertruenonenone
msgstringtruenonenone
dataobjectnulltruenone
request_idstringtruenoneRequest tracing ID

WebV1ErrorResponse

{
  "code": 2,
  "msg": "parameter error",
  "data": {},
  "request_id": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
codeintegertruenoneBusiness error code

not

NameTypeRequiredConstraintChinese NameDescription
»anonymousanyfalsenonenone

continued

NameTypeRequiredConstraintChinese NameDescription
msgstringtruenoneError description
dataobjectnulltruenone
request_idstringtruenoneRequest 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

NameTypeRequiredConstraintChinese NameDescription
anonymousstringfalsenonePublic 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

NameTypeRequiredConstraintChinese NameDescription
anonymousstringfalsenonenone

xor

NameTypeRequiredConstraintChinese NameDescription
anonymousTeamPublicIdfalsenonePublic 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

NameTypeRequiredConstraintChinese NameDescription
idTeamPublicIdtruenonePublic 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.
namestringtruenoneTeam Name
super_admin_user_idintegertruenoneSuper Administrator User ID
statusintegertruenoneTeam status: 0 = disabled, 1 = enabled, 2 = disbanding, 3 = disbanded
current_roleintegernulltruenone
dissolving_atstring¦nulltruenoneStart dissolution time
dissolved_atstring¦nulltruenoneDissolution completion time
created_atstringtruenoneCreation time
updated_atstringtruenoneUpdate time

Enumeration value

AttributeValue
status0
status1
status2
status3
current_role1
current_role2
current_role3
current_role4
current_rolenull

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

NameTypeRequiredConstraintChinese NameDescription
idintegertruenoneUser Package ID
user_idintegertruenoneResource owner's user ID
team_idResourceSpaceIdtruenonePublic 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_idintegertruenoneActual member user ID
product_idintegertruenoneProduct ID
product_typeintegertruenoneProduct type
parent_product_typeintegertruenoneParent product type
statusintegertruenonePackage status
total_amountinteger(int64)truenoneTotal amount
remaininteger(int64)truenoneRemaining quantity
bandwidthintegerfalsenoneBandwidth (Mbps); only returned for product_type=19 or 11
concurrencyintegerfalsenoneConcurrency count; only returns if product_type=11
expired_atstringnulltruenone
created_atstringtruenoneCreation time
ipstringfalsenoneStatic IP address; only returned for product_type=19
country_codestringfalsenoneStatic IP country code; only returned if product_type=19
country_namestringfalsenoneStatic IP address: Country name; only returns if product_type=19
asnstringfalsenoneStatic IP ASN; only returns if product_type=19
portintegerfalsenoneStatic 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

NameTypeRequiredConstraintChinese NameDescription
team_idTeamPublicIdtruenonePublic 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]truenoneTeam resource space has not been canceled or soft-deleted and the current site supports the following package types
product_residence_remain_countinteger(int64)falsenoneType 9 Remaining traffic
product_residence_total_countinteger(int64)falsenoneType 9 Total Flow
pdrue2_timestampinteger(int64)falsenoneType 11 Latest expiration timestamp; 0 if no team package is available
remainintegerfalsenoneType 17 Remaining quantity
total_amountintegerfalsenoneType 17 Total quantity
scraping_remaininteger(int64)falsenoneType 18 Remaining count
scraping_total_amountinteger(int64)falsenoneType 18 Total number of scrapings
scraping_timestampstringfalsenoneType 18 Latest expiration time; "-" if no plan is available
scraping_timestamp2integer(int64)falsenoneType 18 Latest expiration timestamp
common_scraping_remaininteger(int64)falsenoneType 29 Remaining attempts
common_scraping_total_amountinteger(int64)falsenoneType 29 Total number of scrapings
common_scraping_timestampstringfalsenoneType 29 Latest expiration time; "-" if no plan is available
common_scraping_timestamp2integer(int64)falsenoneType 29 Latest expiration timestamp
pdidcr_countintegerfalsenoneType 12 Valid package quantity
pdidcr_totalintegerfalsenoneType 12 Total number of packages
pdidcr_traffic_remaininteger(int64)falsenoneType 12 Remaining traffic
pdidcr_traffic_totalinteger(int64)falsenoneType 12 Total traffic
p_sitai_ip_countintegerfalsenoneType 13 Number of valid IPs
p_sitai_ipintegerfalsenoneType 13 Number of valid packages
p_sitai_ip_totalintegerfalsenoneType 13 Total number of packages
p_sitai_remaininteger(int64)falsenoneType 13/24 Remaining bandwidth
p_sitai_totalinteger(int64)falsenoneType 13/24 Total flow
pdidc_countintegerfalsenoneType 14 Quantity of valid packages
pdidc_totalintegerfalsenoneType 14 Total number of packages
pdidc_ip_countintegerfalsenoneType 14 Count of valid IPs
pdidc_ip_all_countintegerfalsenoneType 14 Total number of IPs
pdispr_countintegerfalsenoneType 15 Valid package quantity
pdispr_totalintegerfalsenoneType 15 Total number of packages
pdispr_traffic_remaininteger(int64)falsenoneType 15 Remaining traffic
pdispr_traffic_totalinteger(int64)falsenoneType 15 Total traffic
product_datacenter_isp_traffic_ip_countintegerfalsenoneType 16 Count of valid IPs
product_datacenter_isp_traffc_ipintegerfalsenoneType 16 Valid package quantity; historically compatible spelling
product_datacenter_isp_traffc_ip_totalintegerfalsenoneType 16 Total number of packages; historically compatible spelling
product_datacenter_isp_traffic_ipintegerfalsenoneType 16 Valid package quantity
product_datacenter_isp_traffic_ip_totalintegerfalsenoneType 16 Total number of packages
product_datacenter_isp_traffc_remaininteger(int64)falsenoneType 16/24 Remaining traffic; historically compatible spelling
product_datacenter_isp_traffc_totalinteger(int64)falsenoneType 16/24 Total traffic; historically compatible spelling
product_datacenter_isp_traffic_remaininteger(int64)falsenoneType 16/24 Remaining traffic
product_datacenter_isp_traffic_totalinteger(int64)falsenoneType 16/24 Total traffic
product_datacenter_isp_ipintegerfalsenoneType 21 or 25 Valid package quantity
product_datacenter_isp_ip_totalintegerfalsenoneTotal number of packages (type 21 or 25)
product_datacenter_isp_ip_countintegerfalsenoneType 21 or 25 Count of valid IPs
product_datacenter_isp_ip_all_countintegerfalsenoneType 21 or 25 Total number of IPs
product_datacenter_isp_ip_traffic_remaininteger(int64)falsenoneType 21 corresponds to Type 24: Remaining traffic
product_datacenter_isp_ip_traffic_totalinteger(int64)falsenoneType 21 corresponds to Type 24 Total Traffic
product_agent_residence_remain_countinteger(int64)falsenoneType 22 Remaining traffic
product_agent_residence_total_countinteger(int64)falsenoneType 22 Total traffic
product_serp_remaininteger(int64)falsenoneType 27 Remaining count
product_serp_totalinteger(int64)falsenoneType 27 Total count
product_serp_timestampstringfalsenoneType 27 Latest expiration time; "-" if no plan is available
product_serp_timestamp2integer(int64)falsenoneType 27 Latest expiration timestamp
product_video_remaininteger(int64)falsenoneType 28 Remaining bandwidth
product_video_totalinteger(int64)falsenoneType 28 Total video stream
product_video_timestampstringfalsenoneType 28 Latest expiration time; "-" if no package is available
product_video_timestamp2integer(int64)falsenoneType 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

NameTypeRequiredConstraintChinese NameDescription
team_idTeamPublicIdtruenonePublic 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.
balancenumber(double)truenoneCurrent available team balance
total_recharge_feenumber(double)truenoneCurrent unconsumed team recharge principal, excluding personal balance transfers
updated_atstringtruenoneWallet 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

NameTypeRequiredConstraintChinese NameDescription
idintegertruenonenone
team_idTeamPublicIdtruenonePublic 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_idintegertruenoneOperator, system refund is 0
creatorTeamCreatorfalsenonenone
directionintegertruenone0 = expenditure, 1 = income
transaction_typeintegertruenone1=Recharge to account, 2=Transfer from personal balance, 3=Balance consumption, 4=Refund or recharge refund deduction, 5=Transfer back to personal balance
amountnumber(double)truenoneThe amount of this change, the direction is indicated by direction
after_balancenumber(double)truenoneUpdated team wallet balance
link_idintegertruenoneAssociated order ID; user ID used when transferring personal balance
request_idstringtruenonenone
remarkstringtruenonenone
created_atstringtruenonenone

Enumeration value

AttributeValue
direction0
direction1
transaction_type1
transaction_type2
transaction_type3
transaction_type4
transaction_type5

TeamCreator

{
  "user_id": 0,
  "display_name": "string",
  "nickname": "string",
  "username": "string",
  "email": "string",
  "phone": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
user_idintegertruenoneOperator's user ID; system operation is 0
display_namestringtruenoneDisplays the name, in the order of nickname, username, email, and phone number
nicknamestringtruenonenone
usernamestringtruenonenone
emailstringtruenoneThis is a de-identified value from a non-administrator's perspective
phonestringtruenoneThis 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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataTeamfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» listTeam]truenonenone
»» totalintegertruenonenone
»» pageintegertruenonenone
»» page_sizeintegertruenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» listTeamMember]truenonenone
»» totalintegertruenonenone
»» pageintegertruenonenone
»» page_sizeintegertruenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» listTeamPerson]truenonenone
»» totalintegertruenonenone
»» pageintegertruenonenone
»» page_sizeintegertruenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataTeamAssetfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataTeamProductInfofalsenonePackage 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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataTeamWalletfalsenoneTeam 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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» listTeamWalletRecord]truenonenone
»» totalintegertruenonenone
»» pageintegertruenonenone
»» page_sizeintegertruenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» listTeamAsset]truenonenone
»» totalintegertruenonenone
»» pageintegertruenonenone
»» page_sizeintegertruenonenone

UserApiKeyMetadata

{
  "id": 1,
  "api_key": "string",
  "team_user_id": 0,
  "remark": "string",
  "status": 0,
  "created_at": "string",
  "updated_at": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegertruenoneAPI Key ID
api_keystringtruenoneCreates a response with the full key; uses an anonymized value in the team list
team_user_idintegertruenoneTeam Key: The actual member ID; personal Key: 0
remarkstringtruenoneNotes
statusintegertruenone0 = disabled, 1 = enabled
created_atstringtruenoneCreation time
updated_atstringnullfalsenone

Enumeration value

AttributeValue
status0
status1

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

NameTypeRequiredConstraintChinese NameDescription
invoice_codestringfalsenonenone
namestringfalsenonenone
org_namestringfalsenonenone
first_namestringfalsenonenone
last_namestringfalsenonenone
phonestringfalsenonenone
emailstring(email)falsenonenone
role_typeintegerfalsenonenone
invoice_typeintegerfalsenonenone
vat_idstringfalsenonenone
tax_nostringfalsenonenone
address_countrystringfalsenonenone
address_citystringfalsenonenone
address_line1stringfalsenonenone
address_line2stringfalsenonenone
address_postal_codestringfalsenonenone
bank_namestringfalsenonenone
bank_accountstringfalsenonenone
is_defbooleanfalsenonenone

Enumeration value

AttributeValue
role_type1
role_type2
invoice_type0
invoice_type1
invoice_type2

Monthly Renewal Request

{
  "team_id": "A1b2C3d4E5f6",
  "user_product_ids": [1],
  "user_coupon_id": 1,
  "coupon_sn": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
team_idResourceSpaceIdfalsenonePublic 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_idsanytruenoneArray of user package IDs, also compatible with comma-separated strings

oneOf

NameTypeRequiredConstraintChinese NameDescription
»anonymous[integer]falsenonenone

xor

NameTypeRequiredConstraintChinese NameDescription
»anonymousstringfalsenonenone

continued

NameTypeRequiredConstraintChinese NameDescription
user_coupon_idintegerfalsenonenone
coupon_snstringfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
idintegertruenoneInvitation ID
team_idTeamPublicIdtruenonePublic 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_idintegertruenoneInviter User ID
invitee_user_idintegertruenoneInvited user ID, 0 if no registered user has been matched
invite_typeintegertruenoneInvitation type: 1=registered user, 2=email, 3=phone number
invite_country_codeintegertruenoneCountry or region code for mobile phone number; 0 for non-mobile phone number invitations
invite_targetstringtruenoneStandardized invitation target; registered users are user:{user_id}
delivery_typeintegertruenoneOriginal 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.
roleintegertruenoneTarget role: 2 = Administrator, 3 = Regular member
statusintegertruenoneInvitation status: 0 = Pending, 1 = Accepted, 2 = Rejected, 3 = Cancelled, 4 = Expired
accepted_by_user_idintegertruenoneAccepted user ID, 0 if no user accepted
expired_atstringtruenoneExpiration time, format YYYY-MM-DD HH:mm:ss
accepted_atstringnulltruenone
rejected_atstringnulltruenone
cancelled_atstringnulltruenone
created_atstringtruenoneCreation time, format YYYY-MM-DD HH:mm:ss

Enumeration value

AttributeValue
invite_type1
invite_type2
invite_type3
delivery_type1
delivery_type2
delivery_type3
role2
role3
status0
status1
status2
status3
status4

TeamMember

{
  "team_member_id": 1,
  "team_id": "A1b2C3d4E5f6",
  "user_id": 1,
  "role": 1,
  "status": 0,
  "joined_at": "string",
  "nickname": "string",
  "username": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
team_member_idintegertruenoneMember ID
team_idTeamPublicIdtruenonePublic 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_idintegertruenoneMember User ID
roleintegertruenoneRoles: 1 = Super Administrator, 2 = Administrator, 3 = Regular Member, 4 = Financial Member
statusintegertruenoneMember status: 0 = disabled, 1 = enabled, 2 = exited, 3 = removed
joined_atstring¦nulltruenoneJoined time, format YYYY-MM-DD HH:mm:ss
nicknamestringtruenonemember nickname
usernamestringtruenonemember username

Enumeration value

AttributeValue
role1
role2
role3
role4
status0
status1
status2
status3

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

NameTypeRequiredConstraintChinese NameDescription
record_typestringtruenoneRecord type; member indicates active members, invitation indicates pending invitations
record_idintegertruenoneMembership ID or Invitation ID
team_idTeamPublicIdtruenonePublic 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_idintegertruenoneUser ID, 0 for unregistered invited users
inviter_user_idintegertruenoneInviter user ID, member record is 0
invite_typeintegertruenoneInvitation type, member record is 0
invite_country_codeintegertruenoneCountry or region code of the mobile phone number; 0 for member records
invite_targetstringtruenoneInvite target, member record is an empty string
delivery_typeintegertruenoneOriginal delivery channel, member record is 0
roleintegertruenoneRoles: 1 = Super Administrator, 2 = Administrator, 3 = Regular Member, 4 = Financial Member
statusintegertruenonemember is fixed at 1, invitation is fixed at 0
display_namestringtruenoneDisplays a unified name, in the order of nickname, username, email, and phone number; contact information from the perspective of ordinary members uses anonymized values.
nicknamestringtruenoneMember or registered invited user nickname
usernamestringtruenoneMember or registered invited username
emailstringtruenoneEmail address; Super admins and administrators return the full value, while regular members return an anonymized value marked with an asterisk
phonestringtruenoneMobile phone number; Super administrators and administrators return the full value, while regular members return an anonymized value marked with an asterisk
joined_atstringnulltruenone
expired_atstringnulltruenone
created_atstringtruenoneRecords the creation time, in YYYY-MM-DD HH:mm:ss format

Enumeration value

AttributeValue
record_typemember
record_typeinvitation
invite_type0
invite_type1
invite_type2
invite_type3
delivery_type0
delivery_type1
delivery_type2
delivery_type3
role1
role2
role3
role4
status0
status1

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataTeamInvitationfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataTeamMemberfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» invitationTeamInvitationtruenonenone
»» invitation_tokenstringtruenonePlaintext invitation token, reserved only for compatibility with existing clients; new clients should use invitation_url directly.
»» invitation_urlstring(uri)truenoneFront-end processing link containing invitation token
»» notification_channelsTeamInvitationNotificationChannelstruenonenone

TeamInvitationNotificationChannels

{
  "email": "queued",
  "sms": "queued",
  "site_inner_message": "created"
}

property

NameTypeRequiredConstraintChinese NameDescription
emailstringfalsenoneEmail channel results
smsstringfalsenoneSMS channel results
site_inner_messagestringfalsenoneResults of internal messaging channels

Enumeration value

AttributeValue
emailqueued
emailfailed
emailskipped
smsqueued
smsfailed
smsskipped
site_inner_messagecreated
site_inner_messageexists
site_inner_messagefailed

TeamInvitationPreviewResponse

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "team_name": "string",
    "role": 2,
    "status": 0,
    "expired_at": "string"
  },
  "request_id": "string"
}

property

allOf

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» team_namestringtruenoneTeam Name
»» roleintegertruenoneTarget role
»» statusintegertruenoneInvitation status
»» expired_atstringtruenoneExpiration time, format YYYY-MM-DD HH:mm:ss

Enumeration value

AttributeValue
role2
role3
status0
status1
status2
status3
status4

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» invitationTeamInvitationtruenonenone
»» invitation_urlstring(uri)truenoneNew invitation processing link; old link is invalid
»» notification_channelsTeamInvitationNotificationChannelstruenonenone

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

NameTypeRequiredConstraintChinese NameDescription
anonymousWebV1SuccessResponsefalsenonenone

and

NameTypeRequiredConstraintChinese NameDescription
anonymousobjectfalsenonenone
» dataobjectfalsenonenone
»» listTeam Invitation]truenonenone
»» totalintegertruenoneTotal number of invitations
»» pageintegertruenoneCurrent page number
»» page_sizeintegertruenoneActual 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

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenonenone
emailstring(email)falsenonenone
phonestringfalsenonenone
balancenumber(float)falsenonenone
statusintegerfalsenonenone
is_real_namebooleanfalsenonenone
created_atstring(date-time)falsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenoneOrder ID
trade_nostringfalsenoneInternal order number
out_trade_nostringfalsenoneExternal order number
product_idintegerfalsenonePackage ID
product_typeintegerfalsenonePackage type, see product type enumeration
amountintegerfalsenonePurchase quantity
unit_pricenumber(float)falsenoneunit price
total_feenumber(float)falsenoneTotal order price (excluding discounts, including handling fees)
goods_feenumber(float)falsenonePrice of goods (including discounts, excluding handling fees)
pay_feenumber(float)falsenoneActual payment amount (including discounts and handling fees)
discount_feenumber(float)falsenoneDiscount amount
handling_feenumber(float)falsenonehandling fee
refund_feenumber(float)falsenonerefund amount
pm_idintegerfalsenonePayment method ID (from /openapi/payment/list)
pm_titlestringfalsenonePayment method name
pm_logostringfalsenonePayment method Logo URL
statusintegerfalsenoneOrder status
titlestringfalsenonePackage Title
detailstringfalsenonePackage Description
region_descstringfalsenoneRegion specification description
pay_atstring(date-time)falsenonepayment time
pay_timestampintegerfalsenonepayment timestamp
created_atstring(date-time)falsenoneCreation time
pay_fee_statusintegerfalsenonePayment status: 0 Normal, 1 Overpayment (excess payment), 2 Underpayment
invoiceobjectfalsenoneInvoice information (only applicable to online payment orders)
» namestringfalsenoneFull name
» org_namestringfalsenoneCompany Name
» first_namestringfalsenonenone
» last_namestringfalsenonenone
» phonestringfalsenonenone
» emailstring(email)falsenonenone
» role_typeintegerfalsenone1 person, 2 companies
» vat_idstringfalsenoneTax ID
» address_countrystringfalsenonenone
» address_citystringfalsenonenone
» address_line1stringfalsenonenone
» address_line2stringfalsenonenone
» address_postal_codestringfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
product_idintegerfalsenonePackage ID
amountintegerfalsenonequantity
discount_feenumber(float)falsenoneDiscount amount
total_feenumber(float)falsenoneTotal order amount
pay_feenumber(float)falsenoneActual amount paid
product_typeintegerfalsenonePackage type
titlestringfalsenonePackage Title
detailstringfalsenonePackage Description
ip_result[object]falsenoneIP batch renewal result (returned only when renewing IP)
» ipstringfalsenonenone
» pricenumber(float)falsenonenone
» country_codestringfalsenonenone
» current_timestring(date-time)falsenonenone
» renewal_timestring(date-time)falsenonenone
» countryobjectfalsenonenone
»» name_zh_cnstringfalsenonenone
»» flagstringfalsenoneCircular flag URL
»» square_flagstringfalsenoneSquare 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

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenonePackage ID
titlestringfalsenonePackage main title
typeintegerfalsenonePackage type
show_typeintegerfalsenoneDisplay type: 1 Normal 2 High-value recommendation 3 Not available for purchase (customization required) 4 Trial
statusintegerfalsenoneStatus: 1 listed, 0 delisted
pricenumber(float)falsenonePrice in RMB
usd_pricenumber(float)falsenonePrice in US Dollars
price_hkdnumber(float)falsenoneHong Kong Dollar Price
original_pricenumber(float)falsenoneOriginal Price (CNY)
original_usd_pricenumber(float)falsenoneoriginal price (USD)
original_price_hkdnumber(float)falsenoneOriginal Price (HKD)
local_pricenumber(float)falsenoneLocalized price (depends on preferred_currency)
local_original_pricenumber(float)falsenoneLocalized original price (depends on preferred_currency)
preferred_currencystringfalsenonePreferred currency to display, such as USD / CNY / HKD
support_currenciesstringfalsenoneA comma-separated list of supported currencies, e.g., USD, CNY
flow_valuenumber(float)falsenoneDefault data allowance (GB) for your data plan
flow_givenumber(float)falsenoneGift data (GB)
balance_givenumber(float)falsenoneBalance recharge bonus amount
balance_valuenumber(float)falsenoneRecharge amount
time_validitynumber(float)falsenoneDefault validity period for data packages
time_pricenumber(float)falsenonePrice per IP for data packages
time_daysintegerfalsenoneValidity period in days, e.g., 30/90/180/365
tip1stringfalsenoneTag explanation 1
tip2stringfalsenoneTag Explanation 2
introduce[string]falsenoneList of text descriptions
region_list_idintegerfalsenoneRegion ID
renew_product_liststringfalsenoneList of renewable product IDs (comma-separated)
parent_product_typeintegerfalsenoneParent package type (valid when type=19): 14 or 25
total_countintegerfalsenoneTotal inventory, 0 indicates no limit
remain_countintegerfalsenoneRemaining inventory
extension_of_time_days[integer]falsenoneList of duration multipliers; empty or containing only 1 indicates not supported
time_days_price_ratenumber(float)falsenoneDuration-based price factor, price × (1 + (multiple - 1) × rate)
descobjectfalsenonePackage description information
» subtitlestringfalsenoneSubtitle
» flow_valuenumber(float)falsenonenone
» flow_givenumber(float)falsenonenone
» balance_givenumber(float)falsenonenone
» time_validitynumber(float)falsenonenone
» time_pricenumber(float)falsenonenone
» tip1stringfalsenonenone
» tip2stringfalsenonenone
» introduce[string]falsenonenone
skuobjectfalsenoneSpecification parameters (returned when type=11)
» bandwidth_list[object]falsenoneBandwidth specification list
»» idintegerfalsenonenone
»» valueintegerfalsenoneBandwidth value (Mbps)
»» pricenumber(float)falsenonenone
»» price_usdnumber(float)falsenonenone
»» price_hkdnumber(float)falsenonenone
» duration_list[object]falsenoneDuration specification list
»» idintegerfalsenonenone
»» valueintegerfalsenoneDuration (days)
»» pricenumber(float)falsenonenone
»» price_usdnumber(float)falsenonenone
»» price_hkdnumber(float)falsenonenone
» concurrency_list[object]falsenoneConcurrency specification list
»» idintegerfalsenonenone
»» valueintegerfalsenoneConcurrency
»» pricenumber(float)falsenonenone
»» price_usdnumber(float)falsenonenone
»» price_hkdnumber(float)falsenonenone

WhiteIp

{
  "id": 0,
  "ip": "string",
  "remark": "string",
  "created_at": "2019-08-24T14:15:22Z"
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenonenone
ipstringfalsenonenone
remarkstringfalsenonenone
created_atstring(date-time)falsenonenone

WhitelistAccount

{
  "id": 0,
  "username": "string",
  "limit": 0,
  "used": 0,
  "status": 0
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenonenone
usernamestringfalsenonenone
limitintegerfalsenonenone
usedintegerfalsenonenone
statusintegerfalsenonenone

Coupon

{
  "id": 0,
  "name": "string",
  "code": "string",
  "discount": 0.1,
  "expire_time": "2019-08-24T14:15:22Z"
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenonenone
namestringfalsenonenone
codestringfalsenonenone
discountnumber(float)falsenonenone
expire_timestring(date-time)falsenonenone

Article

{
  "id": 0,
  "title": "string",
  "content": "string",
  "created_at": "2019-08-24T14:15:22Z"
}

property

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenonenone
titlestringfalsenonenone
contentstringfalsenonenone
created_atstring(date-time)falsenonenone

Pagination

{
  "total": 0,
  "page_no": 0,
  "page_size": 0,
  "total_pages": 0
}

property

NameTypeRequiredConstraintChinese NameDescription
totalintegerfalsenonenone
page_nointegerfalsenonenone
page_sizeintegerfalsenonenone
total_pagesintegerfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenonenone
user_idintegerfalsenonenone
team_idResourceSpaceIdfalsenonePublic 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_idintegerfalsenonenone
product_typeintegerfalsenonenone
left_trafficintegerfalsenoneDeprecated field
left_daysintegerfalsenoneDeprecated field
user_product_idintegerfalsenonenone
product_idintegerfalsenoneDeprecated field
statusintegerfalsenone0 = disabled, 1 = enabled
currencystringfalsenonenone
agreed_pricenumberfalsenoneagreed total price
agreed_bandwidth_pricenumberfalsenoneAgreed bandwidth unit price for Package 11
agreed_concurrency_pricenumberfalsenoneAgreed-upon concurrency price for Package 11
bandwidth_idintegerfalsenonenone
concurrency_idintegerfalsenonenone
durationintegerfalsenoneRenewal duration, in days
renew_product_idintegerfalsenonenone
days_before_expireintegerfalsenonenone
traffic_thresholdintegerfalsenoneTraffic threshold, database value in KB
parent_product_typeintegerfalsenonenone
created_atstringfalsenonenone
updated_atstringfalsenonenone

Enumeration value

AttributeValue
status0
status1

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

NameTypeRequiredConstraintChinese NameDescription
idintegertruenonenone
user_idintegertruenonenone
team_idResourceSpaceIdtruenonePublic 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_idintegertruenonenone
config_idintegertruenonenone
user_product_idintegertruenonenone
product_typeintegertruenonenone
renew_product_idintegertruenonenone
order_idintegertruenonenone
feenumbertruenonenone
currencystringtruenonenone
before_expired_atstring¦nullfalsenonenone
after_expired_atstring¦nullfalsenonenone
before_remaininteger(int64)truenonenone
after_remaininteger(int64)truenonenone
trigger_typeintegertruenone0 = before expiration, 1 = insufficient traffic
statusintegertruenone1=Success, 2=Cancelled, 3=Failure
revoke_atstring¦nullfalsenonenone
revoke_remarkstringtruenonenone
created_atstringtruenonenone
updated_atstringtruenonenone

Enumeration value

AttributeValue
trigger_type0
trigger_type1
status1
status2
status3

MonthlyRenewalBatch

{
  "type": "current",
  "start_at": "string",
  "end_at": "string",
  "target_expired_at": "string",
  "timezone": "string"
}

property

NameTypeRequiredConstraintChinese NameDescription
typestringtruenonenone
start_atstringtruenonenone
end_atstringtruenonenone
target_expired_atstringtruenonenone
timezonestringtruenonenone

Enumeration value

AttributeValue
typecurrent
typenext

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

NameTypeRequiredConstraintChinese NameDescription
idintegerfalsenoneHistorical billing details ID
user_product_idintegertruenonenone
product_idintegertruenonenone
product_typeintegertruenonenone
parent_product_typeintegertruenonenone
titlestringtruenonenone
expired_atstringtruenonenone
target_expired_atstringtruenonenone
renew_daysintegertruenonenone
unit_month_pricenumberfalsenonenone
pay_feenumbertruenonenone
currencystringtruenonenone
bandwidthintegerfalsenonenone
bandwidth_mbspnumberfalsenonebandwidth conversion value
concurrencyintegerfalsenonenone
ipstringfalsenoneStatic IP Package Return
country_codestringfalsenoneStatic IP Package Return
paid_atstring¦nullfalsenonenone
refunded_atstring¦nullfalsenonenone
created_atstringfalsenonenone
updated_atstringfalsenonenone

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

NameTypeRequiredConstraintChinese NameDescription
idintegertruenonenone
invoice_nostringtruenonenone
invoice_amountnumbertruenonenone
invoice_download_urlstringtruenonenone
statusintegertruenonenone
remarkstringtruenonenone
order_ids[integer]truenonenone
created_atintegertruenoneUnix timestamp
invoice_infoanytruenonenone

oneOf

NameTypeRequiredConstraintChinese NameDescription
»anonymousobjectfalsenonenone
»» invoice_codestringtruenonenone
»» namestringtruenonenone
»» org_namestringtruenonenone
»» role_typeintegertruenonenone
»» invoice_typeintegertruenonenone

xor

NameTypeRequiredConstraintChinese NameDescription
»anonymousnullfalsenonenone

Enumeration value

AttributeValue
role_type1
role_type2
invoice_type0
invoice_type1
invoice_type2

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

NameTypeRequiredConstraintChinese NameDescription
trade_nostringtruenonenone
pm_idintegertruenonenone
pay_methodintegertruenonenone
trade_typestringtruenonenone
country_codestringtruenonenone
currencystringtruenonenone
goods_feenumbertruenonenone
discount_feenumbertruenonenone
handling_feenumbertruenonenone
pay_feenumbertruenonenone
total_feenumbertruenonenone
pay_method_infoanytruenonenone

oneOf

NameTypeRequiredConstraintChinese NameDescription
»anonymousobjectfalsenonenone
»» idintegertruenonenone
»» typeintegertruenonenone
»» titlestringtruenonenone
»» groupstringtruenonenone
»» handling_ratenumbertruenonenone
»» handling_feenumbertruenonenone
»» handling_fee_currencystringtruenonenone
»» handling_fee_convertednumbertruenonenone

xor

NameTypeRequiredConstraintChinese NameDescription
»anonymousnullfalsenonenone

continued

NameTypeRequiredConstraintChinese NameDescription
originobjecttruenonenone
» pm_idintegertruenonenone
» pay_methodintegertruenonenone
» goods_feenumbertruenonenone
» discount_feenumbertruenonenone
» handling_feenumbertruenonenone
» pay_feenumbertruenonenone
» total_feenumbertruenonenone