Errors and rejects

OpenPit separates business rejects from API errors.

Business rejects

Policy rejects are expected outcomes. They are returned in result objects:

  • StartResult.rejects

  • ExecuteResult.rejects

  • AccountAdjustmentBatchResult.rejects

Each reject contains a stable code, reason, details, policy name, scope, and an optional user_data token.

result = engine.execute_pre_trade(order=order)
if not result:
    for reject in result.rejects:
        print(reject.policy, reject.code, reject.reason)

Exceptions

Exceptions are reserved for invalid API usage or unexpected callback failures. Common cases include:

  • TypeError for wrong wrapper types, such as raw int account IDs.

  • ValueError for invalid domain values, such as empty assets.

  • RuntimeError for lifecycle misuse, such as executing a request twice.

  • RejectError for callback-level failures surfaced by the binding.

Do not raise exceptions for normal risk decisions in custom policies. Return PolicyReject or PolicyDecision.reject(...) instead.