Skip to main content

Error Codes

This reference documents all error codes returned by Fluree. Errors include an error code keyword (e.g., :db/invalid-query), an HTTP status code, and a human-readable message.

Error Response Format

Fluree returns errors in this structure:


{
"status": 400,
"error": ":db/invalid-query",
"message": "Human-readable description of the error"
}

Some errors include additional context fields like ledger, commit, or validation reports.


Query Errors

Errors related to FlureeQL and SPARQL query syntax.

:db/invalid-query

Status: 400

Query syntax is invalid or malformed. This is a general query error that may have more specific variants below.

query-missing-select

Status: 400

Missing select key, which is required for all FlureeQL queries. See FlureeQL syntax.

query-missing-where

Status: 400

Missing where key, which is required for all FlureeQL queries. See FlureeQL syntax.

query-unknown-key

Status: 400

Invalid or unknown key in your query. Check for spelling errors and confirm each key is valid per the Query Object documentation.

query-invalid-select

Status: 400

Incorrect usage of the select key. See select syntax.

query-invalid-where

Status: 400

Incorrect usage of the where key. See where syntax.

query-invalid-orderby

Status: 400

Invalid value for orderBy. Must reference a binding variable from the where clause (e.g., "orderBy": "?age").

query-invalid-groupby

Status: 400

Invalid value for groupBy. Must be a string or array of binding variables. See groupBy.

query-invalid-t

Status: 400

Invalid t (transaction) value. Ensure the value is within range for your ledger and properly typed. See t parameter.

:db/invalid-property-path

Status: 400

Property path expression in query is malformed or unsupported.

:db/invalid-predicate

Status: 400

Predicate IRI in query is invalid or not found.

:db/unsupported-transitive-path

Status: 400

Transitive path syntax used is not supported.


History Query Errors

Errors specific to history queries.

query-invalid-history

Status: 400

Invalid value assigned to the history key. See history queries.

query-invalid-commit-details

Status: 400

The commit-details key requires a boolean (true/false). See commit details.


Transaction Errors

Errors when creating, updating, or deleting data.

:db/invalid-transaction

Status: 400

Transaction format is malformed or contains invalid syntax.

:db/invalid-txn

Status: 400

Transaction parsing failed. Check JSON structure and required fields.

:db/invalid-update

Status: 400

Update operation is invalid. Verify the update syntax and target entities exist.

:db/invalid-retraction

Status: 400

Retraction in transaction is invalid. Ensure you're retracting existing data with correct syntax.

:db/invalid-annotation

Status: 400

Commit annotation is malformed. Annotations must be valid JSON-LD.


Data Validation Errors

Errors when data doesn't match expected types or constraints.

:db/invalid-value

Status: 400

Value cannot be coerced to the specified datatype. Check that the value matches the property's expected type.

:db/value-coercion

Status: 400

Automatic value coercion failed. The provided value is incompatible with the target datatype.

:db/invalid-datatype

Status: 400

Unsupported or unrecognized datatype specified.

:db/invalid-time

Status: 400

Time value is not ISO-8601 compliant. Use format like "2024-01-15T10:30:00Z".

:db/invalid-json

Status: 400

JSON parsing or validation failed. Check for syntax errors in your JSON payload.

:db/invalid-dense-vector

Status: 400

Dense vector has invalid structure. Vectors must be arrays of numbers with consistent dimensions.


SHACL Validation Errors

Errors when data violates SHACL shape constraints.

:shacl/violation

Status: 422

Data violates one or more SHACL constraints. The response includes a detailed validation report:


{
"status": 422,
"error": ":shacl/violation",
"message": "SHACL validation failed",
"report": {
"constraint": "sh:minCount",
"focusNode": "ex:Person1",
"path": "schema:name",
"value": null,
"expectedValue": 1
}
}

See SHACL validation for constraint details.


Ledger Errors

Errors related to ledger creation and management.

:db/ledger-exists

Status: 409

Cannot create ledger because one with this name already exists.

:db/ledger-not-exists

Status: 409

Specified ledger does not exist. Check the ledger name and ensure it has been created.

:db/invalid-ledger-name

Status: 400

Ledger name contains invalid characters or format. Names should be alphanumeric with hyphens/underscores.

:db/invalid-ledger-id

Status: 400

Ledger ID is invalid or missing from request.

:db/invalid-ledger-opts

Status: 400

Invalid options provided during ledger creation.

:db/unkown-ledger

Status: 400

Referenced ledger is unknown or not accessible.


Branch Errors

Errors related to ledger branches.

:db/invalid-branch-name

Status: 400

Branch name contains invalid characters or format.

:db/invalid-branch

Status: 400

Specified branch does not exist on this ledger.


Commit & Time Travel Errors

Errors when working with commits and time travel queries.

:db/invalid-commit

Status: 400

Commit structure is malformed or missing required fields.

:db/invalid-commit-sha

Status: 400

Commit SHA prefix or format is invalid.

:db/ambiguous-commit-sha

Status: 400

SHA prefix matches multiple commits. Provide a longer, more specific prefix.

:db/commit-not-found

Status: 404

Specified commit was not found in the ledger history.

:db/invalid-time-travel

Status: 400

Time travel specification is invalid. Check the t, at, or commit reference.

:db/missing-transaction

Status: 404

Transaction not found for the specified address.


Policy & Authorization Errors

Errors related to data access policies.

:db/policy-exception

Status: 403

Policy rule enforcement failed. The current identity doesn't have permission for this operation.

:db/policy-error

Status: 400

Policy definition parsing or validation failed. Check your policy syntax.


Credential & Authentication Errors

Errors related to verifiable credentials and signatures.

:db/invalid-credential

Status: 400

Credential verification failed. The credential may be malformed, expired, or have an invalid signature.

:db/missing-credentials

Status: 400

Authentication credentials not provided. Include a signed credential with your request.

:credential/invalid-signature

Status: 400

Cryptographic signature verification failed. The signature doesn't match the credential content.

:credential/unknown-signing-algorithm

Status: 400

JWS header contains an unsupported signing algorithm. Supported algorithms include ES256K.


Configuration Errors

Errors related to Fluree configuration.

:db/invalid-config

Status: 400

Configuration structure is invalid.

:db/invalid-config-json

Status: 400

Configuration JSON parsing failed.

:db/invalid-configuration

Status: 400

Configuration validation failed. Check required fields and value types.

:db/missing-config-val

Status: 400

Required configuration value is missing.

:db/unsupported-config

Status: 400

Configuration option is not supported in this version.

:server/missing-config

Status: 400

Server configuration file or resource not found.


Connection Errors

Errors related to database connections.

:db/invalid-connection

Status: 400

Connection object is invalid or has been closed.

:db/connection-error

Status: 500

Failed to establish database connection.

:db/invalid-address

Status: 400

Ledger address format is invalid.

:db/invalid-server-address

Status: 400

Server address format is invalid. Check the host and port.


Storage Errors

Errors related to data storage operations.

:db/storage-error

Status: 500

Underlying storage system error. This may indicate disk issues, permissions problems, or encryption failures.

:db/file-unavailable

Status: 400

Required file cannot be accessed. Check file permissions and path.


IPFS & Nameservice Errors

Errors when using IPFS or nameservice features.

:db/ipfs-failure

Status: 500

IPFS operation failed. Check IPFS daemon connectivity.

:db/ipns

Status: 500

IPNS resolution error.

:db/push-ipfs

Status: 500

Failed to push data to IPFS.

:db/missing-ipns-key

Status: 400

IPNS key not configured. Set up an IPNS key before publishing.

:db/no-nameservice

Status: 400

No nameservice available for this operation.


Server & Consensus Errors

Errors from the Fluree server layer (when running fluree/server).

:server/invalid-header

Status: 400

Invalid HTTP header format. Boolean or JSON headers may be malformed.

:server/unrecognized-transaction

Status: 400

Transaction format not recognized by the server.

:consensus/not-leader

Status: 400

Server is not the current leader in a Raft cluster. Retry the request or redirect to the leader.

:consensus/response-timeout

Status: 408

Timeout waiting for consensus response. The cluster may be experiencing network issues.

:consensus/no-response

Status: 500

Missing event result from consensus layer.

:consensus/unexpected-event

Status: 500

Unrecognized consensus event type received.

:consensus/config

Status: 500

Configuration error in consensus setup.

:db/leader-timeout

Status: 400

Leader election timed out. The cluster may not have quorum.


Capacity & Rate Limiting Errors

Errors when system resources are constrained.

:db/queue-full

Status: 429

Transaction queue is full. The server is under heavy load; retry after a delay.

:db/pending-transaction-limit

Status: 503

Too many pending transactions. Wait for current transactions to complete.

:db/max-novelty-exceeded

Status: 503

Novelty index exceeded maximum size. Reindexing is required before accepting new transactions.

:db/unavailable

Status: 503

Service temporarily unavailable. The server may be starting up or performing maintenance.


Index Errors

Errors related to database indexing.

:db/indexing

Status: 503

Indexing operation is in progress. Retry after indexing completes.

:db/index-invariant-failure

Status: 500

Index tree structure invariant violated. This indicates a potential data integrity issue.

:db/invalid-index

Status: 400

Invalid index specification.


System Errors

General system-level errors.

:db/unexpected-error

Status: 500

An unexpected error occurred. Check server logs for details.

:db/optimization-failure

Status: 500

Query optimization failed. Try simplifying the query.

:db/timeout

Status: 408

Operation exceeded time limit.

:db/system

Status: 500

System-level error. Check server logs.

:db/migration

Status: 500

Error during data migration or upgrade.

:node/consensus

Status: 500

Unexpected exception in consensus event handler.

:db/websocket-error

Status: 500

WebSocket communication error.


HTTP Status Code Reference

StatusMeaningCommon Causes
400Bad RequestInvalid syntax, missing required fields, malformed data
403ForbiddenPolicy violation, insufficient permissions
404Not FoundMissing ledger, commit, or transaction
408TimeoutOperation took too long, consensus timeout
409ConflictLedger already exists, concurrent modification
422Unprocessable EntitySHACL validation failure
429Too Many RequestsRate limiting, queue full
500Internal Server ErrorUnexpected errors, system issues
503Service UnavailableServer overloaded, indexing in progress