Machine-readable reason on an API error envelope, present on refusals that carry one.
Branch on this rather than on message, which is prose and may be reworded.
retrieval_failed — transient; worth retrying.
not_licensable — report the work as undelivered.
price_drifted — re-quote before retrying.
client_error — ours to fix; must never be retried unchanged.
insufficient_funds — cleared by funding the wallet.
daily_spend_cap_reached — deliberately not cleared by funding the wallet; see
SpendCapReachedError.
Machine-readable reason on an API error envelope, present on refusals that carry one. Branch on this rather than on
message, which is prose and may be reworded.retrieval_failed— transient; worth retrying.not_licensable— report the work as undelivered.price_drifted— re-quote before retrying.client_error— ours to fix; must never be retried unchanged.insufficient_funds— cleared by funding the wallet.daily_spend_cap_reached— deliberately not cleared by funding the wallet; see SpendCapReachedError.On the bulk acquisition steps:
exclusions_unacknowledged— callacquisitions.acknowledgeExclusions()first.quote_not_ready— keep polling apendingquote, or re-quote afailedone (quote_statesays which).quote_expired— re-quote.quote_in_progress— wait for the re-quote already running.invalid_acquisition_state— re-read the acquisition;statusandexpected_statusarrive inLedewireError.details.nothing_to_hold— every work was excluded; a different Selection is needed.run_not_started— the run could not be queued, so nothing was held and the same authorization is safe to retry.