Errors
Error codes and handling patterns for the Picadabra API.
The Picadabra API uses standard oRPC error codes. All errors include a code and message.
Error Codes
| Code | HTTP Status | Description |
|---|---|---|
UNAUTHORIZED | 401 | Missing or invalid authentication token |
FORBIDDEN | 403 | Authenticated but not authorized for this action |
NOT_FOUND | 404 | Requested resource does not exist |
PAYLOAD_TOO_LARGE | 413 | Request body exceeds size limit |
INTERNAL_SERVER_ERROR | 500 | Server-side error |
Handling Errors
try {
const = await ..();
} catch () {
if ( instanceof ) {
// Check error code
const = ( as any).code;
switch () {
case "UNAUTHORIZED":
.("Please log in");
break;
case "FORBIDDEN":
.("Access denied");
break;
case "NOT_FOUND":
.("Resource not found");
break;
default:
.("Error:", .);
}
}
}Error Response Structure
type = {
: string;
: string;
?: unknown;
};Common Error Scenarios
Authentication Errors
// No auth token provided
const = ({
: "https://api.picadabra.example.com",
// getAuthToken not provided
});
// This will throw UNAUTHORIZED
try {
await ..();
} catch () {
// code: 'UNAUTHORIZED'
}Resource Not Found
try {
await ..({ : "non-existent-file.txt" });
} catch () {
// code: 'NOT_FOUND'
}Rate Limiting
The API enforces rate limits (100 requests per 60 seconds per IP). Exceeding this limit returns a 429 Too Many Requests response.
async function <>(: () => <>, = 3): <> {
for (let = 0; < ; ++) {
try {
return await ();
} catch () {
const = ( as any).status;
if ( === 429 && < - 1) {
// Exponential backoff
await new (() => (, .(2, ) * 1000));
continue;
}
throw ;
}
}
throw new ("Max retries exceeded");
}
// Usage
const = await (() => ..());How is this guide?