JavaScript SDK - Errors#

Every failure throws a RafikiDBError with fully serializable fields.

Fields#

FieldTypeExample
messagestring"invalid credentials"
statusnumber401
codestring"unauthorized"
errorsstring[]["Email is required"]

code is one of: unauthorized, forbidden, not_found, conflict, invalid_input, quota_exceeded, internal_error.

Handling#

import { RafikiDBError } from '@rafikidb/sdk';

try {
  await db.from('profiles').insert({});
} catch (error) {
  if (error instanceof RafikiDBError) {
    message.error(error.message);            // "Nationality is required"
    console.error(error.status, error.code, error.errors);
    console.log(JSON.stringify(error));      // complete object
  } else {
    // network errors etc.
  }
}
TypeScript

Because message is enumerable, console.log(error) and JSON.stringify include it (native Error.message is hidden by default).

Common codes#

CodeHTTPMeaning
invalid_input400Malformed body, missing/invalid field
unauthorized401Missing or invalid key / JWT
forbidden403Authenticated but not allowed (scope, RLS)
not_found404Resource or table does not exist
conflict409Duplicate email/phone, conflicting state
quota_exceeded429Plan request limit reached
internal_error500Server error

See Error codes for the REST reference.