Skip to main content
Version: 2.11

JetStream Errors

This page contains a comprehensive list of all JetStream error codes and their descriptions, organized by category.

Account Errors

Error CodeConstantHTTP StatusDescription
10002JSAccountResourcesExceededErr400resource limits exceeded for account
10035JSNoAccountErr503account not found
10039JSNotEnabledForAccountErr503JetStream not enabled for account

General Errors

Error CodeConstantHTTP StatusDescription
10003JSBadRequestErr400bad request
10015JSSnapshotDeliverSubjectInvalidErr400deliver subject not valid
10023JSInsufficientResourcesErr503insufficient resources
10025JSInvalidJSONErr400invalid JSON: {err}
10028JSMemoryResourcesExceededErr500insufficient memory resources available
10038JSNotEmptyRequestErr400expected an empty request payload
10041JSRaftGeneralErrF500{err}
10042JSRestoreSubscribeFailedErrF500JetStream unable to subscribe to restore snapshot {subject}: {err}
10043JSSequenceNotFoundErrF400sequence {seq} not found
10047JSStorageResourcesExceededErr500insufficient storage resources available
10072JSTempStorageFailedErr500JetStream unable to open temp storage for restore
10073JSTemplateNameNotMatchSubjectErr400template name in subject does not match request
10075JSPeerRemapErr503peer remap failed
10076JSNotEnabledErr503JetStream not enabled
10120JSNoLimitsErr400no JetStream default or applicable tiered limit present
10133JSReplicasCountCannotBeNegative400replicas count cannot be negative
10157JSPedanticErrF400pedantic mode: {err}

Clustering Errors

Error CodeConstantHTTP StatusDescription
10004JSClusterIncompleteErr503incomplete results
10005JSClusterNoPeersErrF400{err}
10006JSClusterNotActiveErr500JetStream not in clustered mode
10007JSClusterNotAssignedErr500JetStream cluster not assigned to this server
10008JSClusterNotAvailErr503JetStream system temporarily unavailable
10009JSClusterNotLeaderErr500JetStream cluster can not handle request
10010JSClusterRequiredErr503JetStream clustering support required
10011JSClusterTagsErr400tags placement not supported for operation
10036JSClusterUnSupportFeatureErr503not currently supported in clustered mode
10040JSClusterPeerNotMemberErr400peer not a member
10044JSClusterServerNotMemberErr400server is not a member of the cluster

Consumer Errors

Error CodeConstantHTTP StatusDescription
10012JSConsumerCreateErrF500{err}
10013JSConsumerNameExistErr400consumer name already in use
10014JSConsumerNotFoundErr404consumer not found
10016JSConsumerDurableNameNotInSubjectErr400consumer expected to be durable but no durable name set in subject
10017JSConsumerDurableNameNotMatchSubjectErr400consumer name in subject does not match durable name in request
10018JSConsumerDurableNameNotSetErr400consumer expected to be durable but a durable name was not set
10019JSConsumerEphemeralWithDurableInSubjectErr400consumer expected to be ephemeral but detected a durable name set in subject
10020JSConsumerEphemeralWithDurableNameErr400consumer expected to be ephemeral but a durable name was set in request
10026JSMaximumConsumersLimitErr400maximum consumers limit reached
10029JSMirrorConsumerSetupFailedErrF500{err}
10045JSSourceConsumerSetupFailedErrF500{err}
10078JSConsumerConfigRequiredErr400consumer config required
10079JSConsumerDeliverToWildcardsErr400consumer deliver subject has wildcards
10080JSConsumerPushMaxWaitingErr400consumer in push mode can not set max waiting
10081JSConsumerDeliverCycleErr400consumer deliver subject forms a cycle
10082JSConsumerMaxPendingAckPolicyRequiredErr400consumer requires ack policy for max ack pending
10083JSConsumerSmallHeartbeatErr400consumer idle heartbeat needs to be >= 100ms
10084JSConsumerPullRequiresAckErr400consumer in pull mode requires explicit ack policy on workqueue stream
10085JSConsumerPullNotDurableErr400consumer in pull mode requires a durable name
10086JSConsumerPullWithRateLimitErr400consumer in pull mode can not have rate limit set
10087JSConsumerMaxWaitingNegativeErr400consumer max waiting needs to be positive
10088JSConsumerHBRequiresPushErr400consumer idle heartbeat requires a push based consumer
10089JSConsumerFCRequiresPushErr400consumer flow control requires a push based consumer
10090JSConsumerDirectRequiresPushErr400consumer direct requires a push based consumer
10091JSConsumerDirectRequiresEphemeralErr400consumer direct requires an ephemeral consumer
10092JSConsumerOnMappedErr400consumer direct on a mapped consumer
10093JSConsumerFilterNotSubsetErr400consumer filter subject is not a valid subset of the interest subjects
10094JSConsumerInvalidPolicyErrF400{err}
10095JSConsumerInvalidSamplingErrF400failed to parse consumer sampling configuration: {err}
10098JSConsumerWQRequiresExplicitAckErr400workqueue stream requires explicit ack
10099JSConsumerWQMultipleUnfilteredErr400multiple non-filtered consumers not allowed on workqueue stream
10100JSConsumerWQConsumerNotUniqueErr400filtered consumer not unique on workqueue stream
10101JSConsumerWQConsumerNotDeliverAllErr400consumer must be deliver all on workqueue stream
10102JSConsumerNameTooLongErrF400consumer name is too long, maximum allowed is {max}
10103JSConsumerBadDurableNameErr400durable name can not contain '.', '*', '>'
10104JSConsumerStoreFailedErrF500error creating store for consumer: {err}
10105JSConsumerExistingActiveErr400consumer already exists and is still active
10106JSConsumerReplacementWithDifferentNameErr400consumer replacement durable config not the same
10107JSConsumerDescriptionTooLongErrF400consumer description is too long, maximum allowed is {max}
10108JSConsumerWithFlowControlNeedsHeartbeats400consumer with flow control also needs heartbeats
10112JSConsumerInvalidDeliverSubject400invalid push consumer deliver subject
10114JSConsumerMaxRequestBatchNegativeErr400consumer max request batch needs to be > 0
10115JSConsumerMaxRequestExpiresToSmall400consumer max request expires needs to be >= 1ms
10116JSConsumerMaxDeliverBackoffErr400max deliver is required to be > length of backoff values
10119JSConsumerOfflineErr500consumer is offline
10121JSConsumerMaxPendingAckExcessErrF400consumer max ack pending exceeds system limit of {limit}
10125JSConsumerMaxRequestBatchExceededF400consumer max request batch exceeds server limit of {limit}
10126JSConsumerReplicasExceedsStream400consumer config replica count exceeds parent stream
10127JSConsumerNameContainsPathSeparatorsErr400Consumer name can not contain path separators
10131JSConsumerCreateFilterSubjectMismatchErr400Consumer create request did not match filtered subject from create subject
10132JSConsumerCreateDurableAndNameMismatch400Consumer Durable and Name have to be equal if both are provided
10134JSConsumerReplicasShouldMatchStream400consumer config replicas must match interest retention stream's replicas
10135JSConsumerMetadataLengthErrF400consumer metadata exceeds maximum size of {limit}
10136JSConsumerDuplicateFilterSubjects400consumer cannot have both FilterSubject and FilterSubjects specified
10137JSConsumerMultipleFiltersNotAllowed400consumer with multiple subject filters cannot use subject based API
10138JSConsumerOverlappingSubjectFilters400consumer subject filters cannot overlap
10139JSConsumerEmptyFilter400consumer filter in FilterSubjects cannot be empty
10148JSConsumerAlreadyExists400consumer already exists
10149JSConsumerDoesNotExist400consumer does not exist
10153JSConsumerInactiveThresholdExcess400consumer inactive threshold exceeds system limit of {limit}
10159JSConsumerPriorityPolicyWithoutGroup400Setting PriorityPolicy requires at least one PriorityGroup to be set
10160JSConsumerInvalidPriorityGroupErr400Provided priority group does not exist for this consumer
10161JSConsumerEmptyGroupName400Group name cannot be an empty string
10162JSConsumerInvalidGroupNameErr400Valid priority group name must match A-Z, a-z, 0-9, -_/=)+ and may not exceed 16 characters
10178JSConsumerPushWithPriorityGroupErr400priority groups can not be used with push consumers
10195JSConsumerOfflineReasonErrF500consumer is offline: {err}

Stream Errors

Error CodeConstantHTTP StatusDescription
10021JSStreamExternalApiOverlapErrF400stream external api prefix {prefix} must not overlap with {subject}
10022JSStreamExternalDelPrefixOverlapsErrF400stream external delivery prefix {prefix} overlaps with stream subject {subject}
10024JSStreamInvalidExternalDeliverySubjErrF400stream external delivery prefix {prefix} must not contain wildcards
10027JSMaximumStreamsLimitErr400maximum number of streams reached
10048JSStreamAssignmentErrF500{err}
10049JSStreamCreateErrF500{err}
10050JSStreamDeleteErrF500{err}
10051JSStreamGeneralErrorF500{err}
10052JSStreamInvalidConfigF500{err}
10053JSStreamLimitsErrF500{err}
10054JSStreamMessageExceedsMaximumErr400message size exceeds maximum allowed
10056JSStreamMismatchErr400stream name in subject does not match request
10057JSStreamMsgDeleteFailedF500{err}
10058JSStreamNameExistErr400stream name already in use with a different configuration
10059JSStreamNotFoundErr404stream not found
10060JSStreamNotMatchErr400expected stream does not match
10061JSStreamReplicasNotUpdatableErr400Replicas configuration can not be updated
10062JSStreamRestoreErrF500restore failed: {err}
10063JSStreamSequenceNotMatchErr503expected stream sequence does not match
10064JSStreamSnapshotErrF500snapshot failed: {err}
10065JSStreamSubjectOverlapErr400subjects overlap with an existing stream
10066JSStreamTemplateCreateErrF500{err}
10067JSStreamTemplateDeleteErrF500{err}
10068JSStreamTemplateNotFoundErr404template not found
10069JSStreamUpdateErrF500{err}
10070JSStreamWrongLastMsgIDErrF400wrong last msg ID: {id}
10071JSStreamWrongLastSequenceErrF400wrong last sequence: {seq}
10074JSStreamReplicasNotSupportedErr500replicas > 1 not supported in non-clustered mode
10077JSStreamStoreFailedF503{err}
10096JSStreamInvalidErr500stream not valid
10097JSStreamHeaderExceedsMaximumErr400header size exceeds maximum allowed of 64k
10109JSStreamSealedErr400invalid operation on sealed stream
10110JSStreamPurgeFailedF500{err}
10111JSStreamRollupFailedF500{err}
10113JSStreamMaxBytesRequired400account requires a stream config to have max bytes set
10117JSStreamInfoMaxSubjectsErr500subject details would exceed maximum allowed
10118JSStreamOfflineErr500stream is offline
10122JSStreamMaxStreamBytesExceeded400stream max bytes exceeds account limit max stream bytes
10123JSStreamMoveAndScaleErr400can not move and scale a stream in a single update
10124JSStreamMoveInProgressF400stream move already in progress: {msg}
10128JSStreamNameContainsPathSeparatorsErr400Stream name can not contain path separators
10129JSStreamMoveNotInProgress400stream move not in progress
10130JSStreamNameExistRestoreFailedErr400stream name already in use, cannot restore
10156JSStreamTransformInvalidDestination400stream transform: {err}
10158JSStreamDuplicateMessageConflict409duplicate message id is in process
10163JSStreamExpectedLastSeqPerSubjectNotReady503expected last sequence per subject temporarily unavailable
10164JSStreamWrongLastSequenceConstantErr400wrong last sequence
10167JSStreamTooManyRequests429too many requests
10194JSStreamOfflineReasonErrF500stream is offline: {err}

Mirror Errors

Error CodeConstantHTTP StatusDescription
10030JSMirrorMaxMessageSizeTooBigErr400stream mirror must have max message size >= source
10031JSMirrorWithSourcesErr400stream mirrors can not also contain other sources
10032JSMirrorWithStartSeqAndTimeErr400stream mirrors can not have both start seq and start time configured
10033JSMirrorWithSubjectFiltersErr400stream mirrors can not contain filtered subjects
10034JSMirrorWithSubjectsErr400stream mirrors can not contain subjects
10055JSStreamMirrorNotUpdatableErr400stream mirror configuration can not be updated
10142JSMirrorInvalidStreamName400mirrored stream name is invalid
10143JSMirrorWithFirstSeqErr400stream mirrors can not have first sequence configured
10150JSMirrorMultipleFiltersNotAllowed400mirror with multiple subject transforms cannot also have a single subject filter
10151JSMirrorInvalidSubjectFilter400mirror transform source: {err}
10152JSMirrorOverlappingSubjectFilters400mirror subject filters can not overlap
10154JSMirrorInvalidTransformDestination400mirror transform: {err}

Source Errors

Error CodeConstantHTTP StatusDescription
10046JSSourceMaxMessageSizeTooBigErr400stream source must have max message size >= target
10140JSSourceDuplicateDetected400duplicate source configuration detected
10141JSSourceInvalidStreamName400sourced stream name is invalid
10144JSSourceMultipleFiltersNotAllowed400source with multiple subject transforms cannot also have a single subject filter
10145JSSourceInvalidSubjectFilter400source transform source: {err}
10146JSSourceInvalidTransformDestination400source transform: {err}
10147JSSourceOverlappingSubjectFilters400source filters can not overlap
10155JSStreamTransformInvalidSource400stream transform source: {err}

Message Errors

Error CodeConstantHTTP StatusDescription
10037JSNoMessageFoundErr404no message found
10165JSMessageTTLInvalidErr400invalid per-message TTL
10166JSMessageTTLDisabledErr400per-message TTL is disabled

Appendix

Additional Information

Some errors include additional context:

  • Help Text: Some errors provide additional help information to guide troubleshooting
  • Comments: Internal comments about the error condition
  • Deprecations: Some errors deprecate older error codes
  • Placeholders: Errors with F suffix typically include placeholders (e.g., {err}, {limit}) that are replaced with actual values at runtime

HTTP Status Codes

JetStream errors typically map to the following HTTP status codes:

  • 400 Bad Request: Client error, invalid request or configuration
  • 404 Not Found: Resource not found (stream, consumer, message)
  • 409 Conflict: Conflicting operation or state
  • 412 Precondition Failed: Required precondition not met
  • 429 Too Many Requests: Rate limiting
  • 500 Internal Server Error: Server-side error
  • 503 Service Unavailable: Temporary unavailability or clustering issues