API 2.0
Pgyer Open API 2.0 overview: what the API covers, authentication, common parameters, and error codes.
Overview
Pgyer's API lets you plug app upload, hosting, and install into your own systems, and pull app data back for reporting — useful for distributing and managing beta apps.
API Groups
By capability, API 2.0 breaks down into the groups below. See each page for endpoint details.
| Group | What It Covers |
|---|---|
| Upload & Release | Fast upload, HarmonyOS cert and Hsp upload, legacy upload |
| Install | Generic install endpoint, iOS in-app install |
| App Info | Fetch and update app details, list your uploads, lookup by short URL |
| Version Management | List versions, set / clear "latest", check for updates |
| App Groups | List and view user-defined app groups |
| Feedback | Feedback list and detail |
| Certificates | Certificate list |
| Deletion | Delete apps, delete versions |
Authentication
Most APIs require authentication. Grab your API Key from the API info page in the Pgyer dashboard, then pass it via POST on endpoints that require auth:
| Parameter | Description |
|---|---|
| _api_key | Identifies the caller. Required on every endpoint unless noted otherwise. Fixed per Pgyer account. |
Call Conventions
Send requests as Content-Type: application/x-www-form-urlencoded. Unless noted otherwise, the request method is POST and responses are JSON.
Common parameter concepts:
| Parameter | Description |
|---|---|
| appKey | Unique identifier for an app. Three versions of the same app share one appKey. Find it on the app management page, or in some API responses. |
| buildKey | Unique identifier for a specific app version. Three versions have three different buildKeys. Returned by several APIs. |
Error Codes
| Code | Description |
|---|---|
| 1001 | _api_key is required |
| 1002 | _api_key is invalid |
| 1003 | Error syncing user info to Tracup |
| 1007 | Search term too short |
| 1008 | buildKey and appKey cannot both be empty |
| 1009 | App info not found |
| 1010 | appKey is required |
| 1011 | buildId is required |
| 1012 | userKey is required |
| 1013 | User not found |
| 1014 | App type is required |
| 1015 | Wrong file or app type |
| 1016 | Invalid package name |
| 1017 | Short URL already in use or invalid |
| 1018 | App count exceeds the plan's limit |
| 1019 | Missing identity photos; upload the front, back, and handheld ID photos |
| 1020 | User is banned from uploading |
| 1021 | Invalid file |
| 1022 | File too large |
| 1023 | buildKey is required |
| 1024 | Distribution range exceeds the limit |
| 1025 | File upload failed |
| 1026 | Invalid file; wrong file type |
| 1027 | App name length out of range |
| 1028 | App identifier not found |
| 1029 | Short URL already in use or invalid |
| 1030 | Enterprise-signing count exceeds the plan's maximum |
| 1031 | Short URL is required |
| 1032 | Short URL is invalid |
| 1033 | You can only modify your own apps |
| 1035 | Too many fields modified |
| 1036 | Change content is empty |
| 1037 | Images must be uploaded as an array |
| 1038 | Image data is empty |
| 1039 | At most 5 app screenshots |
| 1040 | Screenshot upload failed |
| 1041 | Screenshot key is required |
| 1042 | Feedback content is empty |
| 1043 | Feedback content too long (max 200 chars) |
| 1044 | Error adding feedback |
| 1045 | Invalid userKey |
| 1047 | This app is paid; install from a phone |
| 1048 | App has expired |
| 1049 | App download quota exhausted |
| 1050 | Wrong password |
| 1051 | App violates policy |
| 1052 | App is restricted to verified users |
| 1053 | Download speed limit reached |
| 1054 | Daily download quota exhausted |
| 1055 | Invalid api key |
| 1056 | Open this link on iOS |
| 1057 | Wrong params syncing expert-test enterprise-signed app |
| 1058 | Error parsing the app |
| 1059 | Deprecated method |
| 1060 | Email is required |
| 1061 | Password is required |
| 1062 | Wrong username or password |
| 1063 | Email already exists |
| 1064 | Username is required |
| 1065 | Username must be 15 chars or fewer |
| 1066 | Name is required |
| 1067 | Company is required |
| 1068 | Occupation is required |
| 1069 | Phone number already exists |
| 1070 | Verification code is required |
| 1071 | Invalid verification code |
| 1072 | Email not found |
| 1073 | Enter valid account info |
| 1075 | appGroupKey is required |
| 1076 | appKey is invalid |
| 1079 | Voice upload failed |
| 1080 | Feedback failed |
| 1081 | Invalid request |
| 1082 | feedbackKey is required |
| 1083 | Feedback not found |
| 1084 | Log content is required |
| 1085 | Wrong system type |
| 1089 | Platform parameter is required |
| 1090 | Platform must be windows or mac |
| 1091 | Wrong version parameter |
| 1092 | Version info not found |
| 1093 | Info not found |
| 1094 | appGroupKey is invalid |
| 1095 | App name too long |
| 1096 | Wrong method |
| 1097 | Signature error |
| 1098 | Hourly API rate limit reached |
| 1099 | Update app failed |
| 1100 | App group info not found |
| 1102 | Email verification code is required |
| 1103 | Verification code is incorrect |
| 1104 | Invalid email address |
| 1105 | Account already exists |
| 1106 | Real name must be 15 chars or fewer |
| 1107 | Password is required |
| 1108 | Enter a valid phone number |
| 1109 | Enter the 6-digit verification code |
| 1110 | Registration failed |
| 1111 | Account is required |
| 1112 | This phone is linked to multiple accounts; sign in with a password |
| 1113 | Email is required |
| 1115 | User does not exist |
| 1116 | Wrong phone or password |
| 1117 | Wrong email or password |
| 1118 | Phone number is required |
| 1120 | SMS must be at least 30 seconds apart |
| 1121 | Verification failed |
| 1122 | Insufficient permissions |
| 1123 | Wrong stats type |
| 1124 | Authorization failed |
| 1125 | Bound to existing account |
| 1126 | Email not changed |
| 1127 | Email already exists |
| 1128 | Insufficient permissions — you can only delete apps you uploaded |
| 1129 | Account is already linked to a WeChat ID; enter a different account |
| 1130 | Enter a new password |
| 1131 | Confirm the password |
| 1132 | Passwords do not match |
| 1133 | JSCode is required |
| 1134 | JSCode is invalid |
| 1135 | Credential file not found |
| 1136 | Failed to delete credential file |
| 1137 | Error uploading credential file |
| 1138 | File count exceeds the limit |
| 1139 | At most two files per type |
| 1140 | Failed to add credential file |
| 1141 | Transaction type is required |
| 1142 | This version cannot be hidden |
| 1143 | encryptedData and iv are required |
| 1144 | Install start and end times are required |
| 1145 | End time must be after start time |
| 1148 | Upload the front side of your ID card |
| 1149 | Upload the back side of your ID card |
| 1150 | Upload a handheld ID card photo |
| 1151 | Company name is required |
| 1152 | Business license number is required |
| 1153 | Upload the business license photo |
| 1154 | Province is required |
| 1155 | City is required |
| 1156 | Daily auto-review quota exhausted |
| 1157 | Auto review did not pass |
| 1158 | Image must not exceed 10 MB |
| 1159 | Image must not be smaller than 15 KB |
| 1160 | Wrong image type |
| 1161 | fileType is required |
| 1162 | Name is required |
| 1163 | Description is required |
| 1164 | appKeys is required |
| 1165 | Description is too long |
| 1166 | Group name does not match the rules |
| 1167 | A group needs at least two apps |
| 1168 | URL suffix is required |
| 1169 | New number must differ from the old one |
| 1170 | Invalid phone number |
| 1171 | Real name is required |
| 1172 | ID number is required |
| 1173 | Real name does not match |
| 1174 | ID number does not match |
| 1175 | Release time is required |
| 1176 | Enter a valid release time |
| 1177 | Failed to fetch app info |
| 1178 | App type is required |
| 1179 | Cannot merge a blank app |
| 1180 | App is already merged |
| 1181 | Merge an iOS app |
| 1182 | Merge an Android app |
| 1183 | Must be your own app |
| 1184 | Cannot merge an app with itself |
| 1185 | Icon already exists; don't upload another |
| 1186 | App has not been released |
| 1187 | Upgrade your version |
| 1188 | An error occurred |
| 1189 | File cannot be changed at the moment |
| 1190 | Upload the Online Cultural Operating License |
| 1191 | Upload the ICP license |
| 1192 | Upload the software copyright registration |
| 1193 | Upload the business license |
| 1194 | Upload the financial license |
| 1195 | Upload the other required certificate |
| 1196 | Upload the required credential file |
| 1197 | Upload the license for online AV program transmission |
| 1198 | Re-upload the rejected file |
| 1199 | Mismatched file count |
| 1200 | Appeal reason must be between 20 and 500 chars |
| 1201 | At most 5 appeal images |
| 1202 | Cannot delete every downloadable version; delete the app from Settings if that's the goal |
| 1203 | Cannot delete every displayed version |
| 1212 | Channel short URL is invalid — check the short URL |
Third-Party Plugins on GitHub
Open-source Pgyer plugins contributed by third-party developers, covering Shenzhen, Jenkins, Gradle, Cordova, Android Studio, Slack, and Teamcity.
Upload & Release
Endpoints for uploading apps to Pgyer via API, including the three-step fast upload flow, HarmonyOS cert and Hsp uploads, and the legacy upload endpoint.