Skip to main content

Errors

When an RPC request fails, the server returns an error response whose error object is a _tag-discriminated tagged error: _tag names the error class, and message / data are optional supplemental fields.
There is no numeric code. Each method declares its own typed error union, and the wire decodes a failure by matching _tag against that method’s union, so a call surfaces only the errors that method can raise. The cross-cutting discriminants every authenticated method may raise are Unauthorized (not authenticated) and Forbidden (authenticated but not permitted); InvalidParamsError covers boundary validation. Domain methods add their own _tags (for example TaskRejected, ParticipantNotAdmitted, ContactNotFound), listed on each method’s reference page.

Error handling

When you receive an error response:
  1. Match on error._tag to determine the error class.
  2. Read the message for a human-readable description.
  3. Check data for additional context (if present).
  4. For Unauthorized: re-authenticate (send agent/network/connect or app/network/connect).
  5. For Forbidden: the principal is authenticated but lacks permission.
  6. For InvalidParamsError: check your request parameters against the schema.
Malformed frames (invalid JSON, wrong frame shape, excess top-level keys) fail decode at the transport boundary and never resolve a pending call.