TL;DR: Every LingCode Cloud API error comes back as a short JSON code. In the SDK, a failed call resolves to { data: null, error } where error.code is the string code and error.status is the HTTP status. Over REST, errors look like { ok: false, error: "<code>", message: "โฆ" }. Find the code below to see what it means and how to fix it.
This page is a lookup table, not a walkthrough. Errors are grouped by the product that raises them โ data, auth, storage, functions, secrets, hosting, vector search, and a handful of general transient ones. Match on the code string; the message is human-readable but the code is what's stable.
You never have to parse prose. Both transports carry the same machine-readable code:
// SDK
const { data, error } = await lingcode.from('todos').update({ done: true });
if (error) {
console.log(error.code); // e.g. "where_required"
console.log(error.status); // e.g. 400
}
// REST
// HTTP 400
// { "ok": false, "error": "where_required", "message": "update requires a filter" }
Look up error.code in the tables below.
Raised by table reads, writes, and the SQL query editor. Full guide: Database.
| Code | What it means | Fix |
|---|---|---|
| where_required | update()/delete() ran without a filter. | Add a filter (.eq/.match) to scope the rows. |
| table_not_found (404) | The table name is wrong or hasn't been created. | Check the name; run the migration that creates it. |
| invalid_request (400) | A required field is missing or malformed (wrong table/filter/row shape). | Fix the table name, filter, or row shape. |
| not_provisioned (409) | The backend isn't live yet (still provisioning). | Wait and retry, or poll the backend status. |
| read_only_violation | The console SQL query editor only runs read statements (SELECT/WITH/TABLE/EXPLAIN/SHOW). | Use a migration for writes and DDL. |
| quota_exceeded (402) | A tier cap was hit (tables, rows, etc.). | Free up room or upgrade. |
Raised by sign-up, sign-in, OTP/magic-link, MFA, and OAuth. Full guide: Authentication.
| Code | What it means | Fix |
|---|---|---|
| unauthorized (401) | Missing or invalid token. | Send the anon key (Bearer or ?apikey=) or the signed-in user token. |
| forbidden (403) | An RLS policy denied it โ the row isn't owned by this user, or the table has no policy granting access. | Review your policies. |
| invalid_code / invalid_or_expired / too_many_attempts | A one-time code or magic link was wrong, expired, or retried too often. | Request a fresh one. |
| mfa_required | The backend requires MFA and the session is not yet at AAL2. | Complete the MFA verify step. |
| state_secret_missing / invalid_redirect | OAuth isn't fully configured, or the redirect URL isn't on the allow-list. | Configure the provider in the console and use an allowed redirect. |
Raised by bucket uploads, downloads, and removes. Full guide: Storage.
| Code | What it means | Fix |
|---|---|---|
| object_not_found (404) | No object at that bucket/path. | Check the bucket and path. |
| object_too_large / value_too_large | The file exceeds the inline per-object cap. | Use the direct presigned-upload path (the SDK does this automatically) or upgrade the tier. |
| direct_upload_unavailable | The presigned direct-to-storage path isn't available on this backend. | Fall back to the inline upload for small files. |
| quota_exceeded (402) | The backend's total storage cap is reached. | Free up space or upgrade. |
Raised by builtin and custom serverless function invocations. Full guide: Functions.
| Code | What it means | Fix |
|---|---|---|
| unknown_function (404) | The slug is wrong โ a wrong name, not that functions are unavailable. | Check the function slug. |
| functions_runtime_unavailable (503) | The Deno runtime isn't installed on this server, so custom functions can't run (builtins still work). | Use a builtin, or contact the operator to install the runtime. |
| function_error | Your function threw. | Check the returned logs field for the message. |
| source_too_large | Custom function source exceeds 256 KB. | Trim it. |
| missing_secret | The function needs a vault secret that isn't set. | Add it in the console Secrets. |
| timeout | The function exceeded the tier's wall-clock limit (3s free / 10s pro / 30s max_pro). Message: Function timed out after Xms. | Make it faster or move long work elsewhere. |
Raised by the secrets vault. Full guide: Secrets vault.
| Code | What it means | Fix |
|---|---|---|
| too_many_secrets | A backend allows at most 32 secrets. | Delete an unused secret first. |
| value_too_large | A secret value exceeds 16 KB. | Store a shorter value or a reference to the data. |
| vault_not_configured | The server's vault key isn't set (operator/infra issue, not your app). | Contact the operator. |
Raised by app deploys and custom-domain attachment. Full guide: App hosting.
| Code | What it means | Fix |
|---|---|---|
| no_build_config | The build didn't produce dist/server/wrangler.json (the Cloudflare Vite plugin didn't run). | Rebuild with the correct adapter. |
| bundle_too_large | The Worker bundle exceeds 60 MB. | Trim dependencies and assets. |
| cap_reached | You've hit the limit of hosted Worker apps (10). | Delete an old one or upgrade. |
| rate_limited | Too many deploys (12/hour). | Wait and retry. |
| custom_domain_failed / domain_taken / reserved_domain / invalid_domain | A custom-domain attach problem โ DNS not pointing at the edge, the domain is already attached elsewhere, reserved, or malformed. | Point DNS at the edge, free or rename the domain, and use a valid hostname. |
Raised by semantic search. Full guide: Vector search.
| Code | What it means | Fix |
|---|---|---|
| embeddings_not_configured / embeddings_failed | Managed embeddings aren't available or failed. | Set them up, or pass your own precomputed vectors to vector.search. |
Transient and rate-limit errors that any endpoint can return.
| Code | What it means | Fix |
|---|---|---|
| server_error / cloud_error | A transient server problem. | Retry; if it persists, contact support. |
| too_many_inflight | Too many concurrent requests in flight. | Back off and retry. |
| rate_limited | You're sending requests too fast. | Slow down. |
Run the advisors for schema and RLS issues, check the backend Logs in the console for the underlying error, and see support.