SuperAPI AI Directory

bmob-error-codes

Coding & development

View repository

Updated 10-15 17:27

About this skill

Bmob Error Code Dictionary

Bmob errors consist of three independent numbering spaces:

  1. Android SDK local errors: 9001–9023 (thrown on the SDK client side, does not go over the network)
  2. iOS SDK local errors: 100, 20000–20030 (thrown on the SDK client side)
  3. REST API server errors: HTTP status code + business code (401 / 500 / 400 + the code field in the body; all SDK network errors are essentially this)

Key diagnostic flow: after getting the error,first check whether it is a network error(see whether there is { "code": ..., "error": "..." }in the response body); if so, look it up in the REST API error code table; if there is no response body and only a local code thrown by the SDK (9xxx or 2xxxx), look it up in the SDK local table.

Reverse lookup by symptom (response body error in English)

Symptom / error keyword Business code Detailed table
object not found 101 REST §3 below
invalid field name 105 REST §3
unique index cannot has duplicate value 211 etc. REST §3
QPS beyond the limit 10076 REST §4
mobilePhoneNumber already taken 206 etc. REST §3 user-related
Could not find user / login failed 101 / 201 REST §3; check username and password
Android only 9015, vague description 9015 Section 1 below 9015 special topic
iOS 20017 initialization not completed 20017 Section 2 below
HTTP 401 Unauthorized — wrong key or wrong signature;shared/faq.md
Permission / ACL denied 9015 / 9016 / 138 etc. shared/anti-patterns.md;P1 bmob-acl-and-roles

More routing-related issues:shared/faq.md。

1. Android SDK local error codes (9001–9023)

Code Meaning Common cause / fix
9001 Application Id is empty Did not call Bmob.initialize(context, "AppId"); check whether the initialization timing is before using the SDK
9002 Error parsing returned data The server returned unexpected JSON; check the raw HTTP response
9003 Error uploading file Any issue with file path, permissions, or network
9004 File upload failed Same as 9003, often together with 9022
9005 Batch operation exceeds 50 records Bmob's single batch limit is 50; split into multiple calls
9006 objectId is empty objectId was not passed when updating/deleting/fetching a single record
9007 File size exceeds 10M Single file limit is 10MB; split large files into chunks or migrate to another service
9008 Uploaded file does not exist Wrong path, or the file was deleted asynchronously
9009 No cached data Enabled CACHE_ONLY policy but the cache is empty
9010 Network timeout Troubleshoot mobile network and server response time
9011 BmobUser class does not support batch operations The user table only supports single-record registration/login
9012 Context is empty Bmob.initialize passed a null context
9013 Table name format is incorrect Table names must start with a letter and contain only letters/digits/underscores
9014 Third-party account authorization failed The third-party OAuth flow was interrupted
9015 Other errors(fallback code) Key: must read the response body's error text to determine; see the "9015 topic" below for details
9016 No network connection Client network unavailable, different from 9010
9017 Third-party login error See the response description
9018 Parameter cannot be empty Required field is empty
9019 Incorrect format: phone number / email / verification code Client-side format validation failed
9020 Failed to save CDN information Failed to write the record after uploading to CDN
9021 File upload is missing the WAKE_LOCK permission AndroidManifest.xml add <uses-permission android:name="android.permission.WAKE_LOCK"/>
9022 File upload failed, please retry Usually a network glitch
9023 Please call Bmob.initialize to initialize the SDK Same as 9001, but triggered at a different point

9015 topic

9015 is the Android SDK's fallback error code—all exceptions that are not explicitly categorized return it. To handle it, you must look at the description field in the response body, not just the code.

Special warning:If you call a business method inside the Bmob SDK's success callback and it throws an exception, the SDK will catch that exception and trigger the error callback as 9015, creating the illusion that "done was seemingly called twice". The fix is to add try/catch in the business method.

2. iOS SDK local error codes (100, 20000–20030)

Code Meaning
100 The request content is incorrect (wrong query condition)
20000 Password is empty (login/register)
20001 Username is empty
20002 Request failed
20003 Missing objectId (update/delete/query a single record)
20004 Query result is empty
20005 Cached query expired
20006 Cloud function call failed
20008 Upload file filename is empty
20009 Upload file does not exist
20010 Unknown error
20011 Upload file content is empty
20012 Update content is empty
20013 Cloud function name is empty
20014 Batch array out of bounds
20015 Batch array is empty
20016 Push content is empty
20017 Initialization not completed
20023 Initialization failed
20024 Batch file upload format error
20025 Table name is empty
20027 Parameter is incorrect (usually an empty string)
20028 Invalid phone number
20029 Invalid verification code
20030 File does not exist (delete / get URL)

3. REST API server-side error codes (returned via HTTP by any client)

HTTP 401 / 500 (no body code)

{ "error": "unauthorized" }
HTTP Common meaning
401 There is a problem with the Application Id / REST API Key / encrypted authorization signature
500 Temporary server-side failure, retry later

HTTP 400 (with body code) — core error codes

{ "code": 101, "error": "object not found for e1kXT22L" }

Object / Query / Class (100–199)

code Meaning Fix suggestion
101 object does not exist / wrong username or password Check objectId; on login failure, do not distinguish wrong username vs wrong password (security design)
102 Invalid field name/field value / GeoPoint format error Field names are case-sensitive and must start with a letter
103 Missing objectId or invalid class name Class names follow the same naming rules as fields
104 Associated class does not exist Create the target table before creating a Pointer/Relation
105 Invalid field name or reserved field Reserved fields:objectId / createdAt / updatedAt / ACL
106 Pointer format error Must be {"__type":"Pointer","className":"X","objectId":"..."}
107 JSON / Date / ACL / __op format error; wrong Content-Type See the corresponding error description
108 username + password required (sign up / log in) —
109 Missing login information —
110 Database migration in progress, POST/PUT/DELETE prohibited Wait for the migration to complete
111 Field value does not match the type get_project_tables fetch schema for comparison
112 requests must be an array Batch API input parameters
113 Each item in the requests array has a format error { "method": "POST", "path": "...", "body": {...} }
114 requests array exceeds 50 items Split
117 Latitude / longitude out of range lat ∈ [-90,90],lng ∈ [-180,180]
118 Missing required parameter The error description contains the parameter name
120 Email verification feature not enabled Console → App Settings to enable
121 API call count exceeds plan limit Upgrade the plan or wait for the reset
122 User permission verification failed Check ACL / Role configuration
125 Default value JSON format error —

Push / Device (131–141)

code Meaning
131 Invalid device token / installation ID / deviceType
132 device token or installation ID already exists
136 Field cannot be modified / Android does not need a deviceToken
137 The client is not allowed to perform an operation on the installation class
138 Field is read-only / SDK deletion is prohibited for this App
139 Invalid role name format / already exists
141 Missing push data

Time / File / Image (142–165)

code Meaning
142 Invalid time format (should be 2013-12-04 00:51:13)
143 Must be a number
144 Cannot be a past time
145–157 Various errors such as file size / name / URL / permission / deletion
160–165 Invalid image processing parameters (width, height, edge length, etc.)

User system (201–211)

code Meaning
201 Missing required user field
202 username is already in use
203 email is already in use
204 email must be provided
205 No user found for the corresponding email/username
206 No permission to operate on the user table — pass the MasterKey when initializing the app(server-side only)
207 Incorrect verification code
208 Third-party authorization data error / already linked to another user
209 mobilePhoneNumber is already in use
210 Old password is incorrect
211 User is not logged in or the login has expired, login is required again

Payment (232–236, 10001–10006)

code Meaning
232 Payment service unavailable
233 API endpoint disabled
234 No payment permission, contact Bmob staff
235 Failed to obtain payment permission
236 Please fill in payment-related information in the app configuration
10001 Missing payment parameters
10002 order_no does not exist or does not belong to this app
10003 Payment-related error
10004 Shengpay payment error
10005 Shengpay payment storage error
10006 Professional edition or above package required

Cloud Functions / Hooks (310–324)

code Meaning
310 Error calling cloud code
311 Invalid cloud code name format
312 Missing cloud code
313 Error updating cloud code
314 Cloud code does not exist
315 Error deleting cloud code
316 Error generating cloud code file
317 Container call failed
318 Error writing cloud code to Redis / Failed to get configuration
319 Failed to get cloud code list/details
320 Error parsing cloud code
321 Code contains unsupported JS objects
322 Failed to update Java cloud code
323 Failed to delete Java cloud code
324 Data Hook error
330 Push service requires payment

Other

code Meaning
401 Duplicate value for unique index — create_table was set to unique:true field was written with an existing value
402 where query condition exceeds byte limit
501 User is banned from access
601 BQL statement error

SMS (10010–10022)

code Meaning
10010 Sending limit reached for this phone number
10011 SDK SMS quota used up
10012 Related to real-name / status / screenshot review
10013 Illegal SMS content
10014 SMS content contains URL
10015 Illegal content
10016 deviceId is empty / RESTful SMS quota used up
10017 Device has reached SMS sending limit
10018 smsId does not exist
10019 Incorrect time format (requires 2006-01-02 15:04:05)
10020 Time must be > 10 minutes from now / App not found
10021 Custom SMS interface not allowed
10022 SMS template does not exist

App Management (10030–10042)

code Meaning
10030 App name is required
10031 Failed to create app
10032 App name exceeds 30 characters
10034 App name must be a string
10035 Incorrect field value
10037 App creation limit reached
10038 Failed to update app information
10039 App name is empty
10040 SDK is not allowed to create/delete columns
10041 App name cannot start with _ and must be ≤ 20 characters
10042 File name cannot contain backslashes

Schema Management (10061–10075)

code Meaning
10061 Master Key error
10062 className does not match the path
10063 Field name is a reserved word
10064 Field already exists
10065 TargetClass requires className
10066 TargetClass does not exist
10067 Failed to save table structure
10068 Failed to save field
10069 Data type does not exist
10070 Unsupported operation
10071 Field does not exist
10072 Failed to delete field
10073 Modifying the user table structure is not allowed
10074 Failed to delete table structure
10075 The unique index may already exist

QPS / Quota (10076, 10210)

code Meaning
10076 QPS exceeds the limit — The client request rate is too high; add rate limiting
10200 Request timed out
10210 The application exceeded the request count limit within half an hour

Troubleshooting process (recommended)

flowchart TD
    Start([拿到 Bmob 错误]) --> A{有 HTTP 响应体吗?}
    A -->|有 code + error| B[REST API 服务端错误码表]
    A -->|纯 SDK 本地抛出| C{Android or iOS?}
    C -->|Android| D[9001-9023 表]
    C -->|iOS| E[100, 20000-20030 表]
    B --> F[读 error 字段的描述]
    D --> F
    E --> F
    F --> G{描述里有变量 (%s, %d)?}
    G -->|有| H[把变量值代入定位具体字段/资源]
    G -->|没有| I[按表中"修复建议"操作]
    H --> I

Full original text

metadata.docs_raw is a pure markdown version that the agent can directly WebFetch (some rows in the original table have line break formatting):

https://raw.githubusercontent.com/bmob/BmobDocs/master/mds/other/error_code/index.md

If you need to review a code within the IDE that is not in this skill's table (for example, a new one added by Bmob in the future), simply fetch that URL.