Skip to main content
All SDK errors inherit from SandboxError.
import {
  AuthenticationError,
  NotFoundError,
  RateLimitError,
  SandboxError,
  ServerError,
} from "porter-sandbox";

Error classes

ErrorRaised when
SandboxErrorBase class for SDK-raised API errors.
AuthenticationErrorThe API rejects credentials.
NotFoundErrorA sandbox, volume, or other resource cannot be found.
RateLimitErrorThe API returns a rate limit response.
ServerErrorThe API returns a server-side error.
Each SandboxError includes:
PropertyTypeDescription
messagestringHuman-readable error message.
statusCodenumber | nullHTTP status code, when available.
bodyunknownParsed response body, when available.

Handle errors

import { Porter, SandboxError } from "porter-sandbox";

const porter = new Porter();
const sandbox = await porter.sandboxes.create({ image: "python:3.12-slim" });

try {
  const result = await sandbox.exec(["python", "-c", "raise SystemExit(2)"]);

  if (result.exit_code !== 0) {
    console.error(result.stderr);
  }
} catch (error) {
  if (error instanceof SandboxError) {
    console.error(`Sandbox API error: ${error.message}`);
  } else {
    throw error;
  }
} finally {
  await sandbox.terminate();
  porter.close();
}
Non-zero command exit codes are returned in the exec response. They are normal command results, not SDK exceptions.