Witness Errors

All errors return a structured JSON response:

{
  "error": {
    "code": "error_code",
    "message": "Human readable message"
  }
}

Common errors

CodeStatusCauseFix
validation_error400Invalid request body or parametersCheck fields object for specific failures
unauthorized401Missing or invalid API keyAdd Authorization: Bearer sm_... header. See Authentication
forbidden403Not authorized for this resourceVerify you own the chain you’re accessing
not_found404Chain or resource doesn’t existCheck chain ID; ensure chain is initialized
insufficient_balance402Not enough balance for operationAdd credits at Pricing
rate_limit_exceeded429Too many requestsImplement exponential backoff. See Rate Limits

Witness-specific errors

CodeStatusCauseFix
witness.chain_not_initialized400Chain not initializedCall POST /v1/witness/sys/init before notarizing logs
witness.chain_already_initialized409Chain already existsInitialization is one-time; skip init and proceed to notarize
witness.invalid_config400S3 config validation failedCheck all required fields (endpoint, bucket, region, credentials)
witness.storage_endpoint_blocked400S3 endpoint blocked by SSRF checkUse public HTTPS endpoints only; no private IPs or localhost
witness.invalid_receipt_format400Receipt missing required fieldsUse complete receipt from POST /v1/witness/log
witness.log_too_large413JSON log exceeds size limitReduce log size to under 100 KB

Getting help

  1. Check status.solenoid.systems
  2. Review the API Reference
  3. See Troubleshooting for step-by-step diagnosis
  4. Contact support@solenoid.systems with your chain ID, sequence ID, and error messages