Skip to content
Back
Reference

shredstream.sh error code reference

Interpret account API codes, uncoded HTTP failures, verification failures, and receiver-local UDP and shred conditions with a concrete remediation for each.

Response shape

Current account API failures represented by a service error use a JSON object with error and code fields plus the HTTP status shown below. An unexpected server failure returns HTTP 500 with a generic error message and no documented code field.

UDP has no response channel. The live stream does not emit service error records. Receiver failures therefore appear as missing traffic, kernel counters, parser rejections, or application metrics.

Account API codes

CodeHTTP statusConditionMeaningRemediation
bad_email400Email is absent, not text, malformed, or longer than accepted by the applicationThe sign-in request cannot identify a valid email inputSubmit the email address used for purchase in normal address form
bad_code400Code record is absent, expired, over its attempt allowance, incorrect, or not tied to an accountAuthentication failed without disclosing which check failedRequest a new sign-in code and enter the newest code once
unauthenticated401Session cookie is absent or invalid on a protected destination routeThe request has no accepted account sessionSign in again, preserve the secure cookie, and repeat the request
no_token400Verification token is emptyThe verify route has no challenge proof to submitRead the newest UDP challenge and submit its nonempty token within 600 seconds
bad_destination400Destination address or port fails current application validationThe requested receive tuple is not acceptedUse a public IPv4 destination and an accepted UDP port, then retry
at_cap409Account already has five destinationsThe customer destination cap is reachedReuse or remove an existing destination; do not create a sixth
no_free_slot402Every paid connection is already assigned to a destinationNo purchased destination slot is availablePurchase another connection or free a currently assigned slot
slot_race409Another request claimed the selected paid slot firstConcurrent account activity won the allocation raceReload current account state and submit once against a free slot
rate_limited429An account, email, or client address exceeded a route attempt allowanceAbuse protection refused the request temporarilyStop retries, wait several minutes, and resume with bounded pacing
email_unavailable502The email provider did not accept a sign-in or contact messageThe application could not send the messageRetry after a short delay; contact the service if repeated attempts fail
service_not_configured503A required server configuration value is unavailableAccount access is temporarily unavailableRetry later; do not change receiver configuration in response
fanout_unreachable503The account application could not reach the delivery serviceDelivery control is unavailable, but the request did not change the accountPreserve current state and retry later
fanout_errorUpstream statusThe delivery service returned a non-success responseThe message and status originate from the delivery control requestFollow the returned message; retry only when the status and operation make retry safe
fulfillment_update_failed502Checkout completion could not be reported back to checkoutProvisioning may have succeeded while the checkout message update failedCheck the account before paying again, then contact the service with the checkout reference
service_errorVariesA ServiceError is constructed without a more specific codeGeneric service failure categoryUse the HTTP status and error message; preserve the request identifier if available

The login-session status endpoint can return HTTP 401 with signedIn false and no code field. Treat that as an unauthenticated session condition, not as a malformed JSON response.

Uncoded HTTP conditions

HTTP resultCode fieldMeaningRemediation
401 with signedIn falseAbsentNo valid login session on the session-status checkRequest a new sign-in code
500 with generic error textAbsentAn unhandled server failure was hidden to avoid leaking internalsRetry once with the same safe request, then report time and route
Non-JSON network failureNot availableDNS, TLS, routing, proxy, timeout, or connection failure occurred before a valid responseRecord the client error and test the network path separately
Request aborted by clientNot availableCaller canceled before completionDetermine whether the operation can be repeated without duplicating intent

Verification and delivery conditions

The labels in this table are a recommended receiver vocabulary. They are not datagrams returned by shredstream.sh.

Local conditionDetectionMeaningRemediation
challenge_timeoutNo challenge before the 600-second token window closesVerification path did not complete in timeBind first, allow 64.130.40.90, capture the destination port, then request a new challenge
challenge_prefix_mismatchDatagram does not begin with SHRED-FANOUT-VERIFY/1Traffic is not in the documented challenge formReject it, retain a bounded sample, and verify the source
challenge_source_mismatchChallenge-like datagram comes from another IPPacket is outside the documented source contractReject it and keep the allowlist at 64.130.40.90/32
live_stream_absentVerified receiver observes no live datagramsActivation delay, routing, firewall, NAT, socket, or service state may be responsibleCompare source-filtered packet capture with socket and account state
unexpected_sourceLive datagram source is not 64.130.40.90Packet is outside the documented service contractCount separately and do not enter trusted parsing
wrong_destinationPacket reaches another address or portDashboard tuple, NAT mapping, or socket binding differsCompare the registered pair at every boundary
source_port_assumptionFirewall permits only a captured source UDP portAn undocumented source-port constraint blocks trafficRemove the source-port condition
firewall_dropEdge or host rule counter rises for the feed tupleAn admission layer rejected the datagramPermit UDP from 64.130.40.90/32 to the configured port
conntrack_dropConntrack insert, drop, or table-full counter risesStateful processing refused or lost the flowFix table pressure or bypass conntrack for a safe non-NAT feed tuple
reverse_path_dropTraffic disappears on a multihomed or asymmetric host with reverse filteringReverse route does not satisfy the configured rp_filter modeCorrect routing or select loose filtering where policy permits
no_listenerUdpNoPorts rises for the destinationNo socket was bound when the datagram arrivedStart and bind the receiver before verification and streaming

Datagram and kernel conditions

Local conditionDetectionMeaningRemediation
oversize_datagramReceived UDP payload exceeds 1,228 bytesPacket violates the product maximumReject before parsing and retain a bounded sample
msg_truncReceive flags include MSG_TRUNCApplication buffer was smaller than the datagramAllocate at least 1,228 bytes per receive slot and reject truncated bytes
ancillary_truncatedReceive flags include MSG_CTRUNCTimestamp or drop-counter control data was cut offIncrease control-buffer space and invalidate affected measurements
nic_dropDriver or interface receive-discard delta risesPacket was lost before normal stack deliveryFix ring depth, queue placement, interrupt service, or upstream link errors
softnet_dropThe softnet input-backlog drop field risesPer-CPU network backlog overflowedFix CPU placement or processing capacity; test netdev backlog changes
softnet_time_squeezeThe softnet budget-exhaustion field risesNAPI or softirq work exceeded its cycle budgetMeasure budget and CPU-affinity changes with application latency
socket_overflowUdpRcvbufErrors or per-socket drops risesUDP receive memory filled before user space drained itIncrease drain capacity and test a measured SO_RCVBUF request
application_queue_fullBounded handoff rejects an itemDecoder or consumer cannot keep pace with ingestMove work off ingest, add capacity, or apply a protocol-aware shedding policy
stale_packetQueue residence exceeds the stated freshness budgetBuffering preserved bytes after their useful timeInvalidate affected state under the receiver’s age policy

Shred parser and validator conditions

Local conditionDetectionMeaningRemediation
short_common_headerDatagram is shorter than 83 bytesCommon fields cannot be read safelyReject before any offset access
unsupported_variantVariant discriminator is unknown to the pinned parserReceiver does not support the packet formatUpgrade from an authoritative release and retain a diagnostic sample
wrong_shred_versionHeader version differs from trusted cluster configurationPacket belongs to another lineage or configuration is staleVerify the target cluster and expected value
impossible_data_sizeData size is below 88 or beyond variant or receive boundsDeclared ledger-data boundary is invalidReject before exposing data bytes
invalid_parent_offsetOffset implies an impossible parent relationshipData header is malformed or outside accepted slot rulesReject and record slot plus offset
invalid_flagsData flag combination contains unsupported stateCompletion or reference-tick interpretation is unsafeReject under the pinned bit definition
invalid_coding_countsk or m is zero, impossible, or conflicts with set membersRecovery dimensions are invalidReject the member and preserve existing consistent state
invalid_coding_positionposition is not less than mCoding member has no legal local shard positionReject before recovery allocation
index_underflowDerived first coding index or FEC relation underflowsIndex metadata is inconsistentReject and avoid unsigned wraparound
leader_unknownTrusted schedule has no leader key for the slot contextAuthentication cannot be completedLoad authoritative schedule context before admission
bad_legacy_signatureLegacy signed-data verification failsScheduled leader did not authenticate the packetReject and count by source, slot, and leader
bad_merkle_proofProof cannot reconstruct a valid root for the shard positionMerkle membership is invalidReject the member and do not place it in FEC state
bad_leader_signatureLeader signature does not verify over the variant-defined messageOrigin authentication failedReject and preserve bounded conflict evidence
bad_retransmitter_signatureExtra retransmitter evidence fails its ruleRetransmission authentication is invalidReject or isolate according to the pinned variant rules
duplicateIdentical canonical bytes arrive for the same identityA repeated copy was receivedKeep the earliest valid copy and increment duplicate count
duplicate_conflictDifferent canonical bytes claim the same identityEquivocation, corruption, or parser-context conflict existsKeep both as evidence, stop silent overwrite, and verify authentication

Recovery, ordering, and decode conditions

Local conditionDetectionMeaningRemediation
fec_metadata_conflictMembers of one FEC key disagree on counts, size, variant, root, or versionShards cannot enter one Reed-Solomon matrix safelySplit only by valid context or reject the conflicting member
incomplete_fec_setFewer than k compatible shards arrive before closeoutMissing data cannot yet be reconstructedWait inside policy, use another source, or mark the range unavailable
fec_recovery_failedReed-Solomon reconstruction fails with apparently sufficient membersOne or more members or dimensions are wrongRevalidate every shard and discard corrupted state
recovered_shred_invalidA reconstructed data shred fails sanitation or authenticationMathematical output is not acceptable protocol dataReject the recovered member and mark the set failed
out_of_orderValid identity arrives behind a later data indexUDP or path reordered packetsBuffer inside a bounded slot-aware window
data_gapA required data index remains absent and unrecoveredOrdered ledger bytes are incompleteDo not decode across the gap
premature_slot_endLast-in-slot appears while earlier required data is absentCompletion marker does not make the range completeContinue recovery or close the slot as incomplete
entry_decode_failedContiguous bytes do not decode into valid entriesBoundary, recovery, version, or data integrity is wrongStop at the last valid boundary and inspect source shreds
transaction_decode_failedEntry transaction bytes do not match a supported message formDecoder or bytes are incompatiblePin the matching Solana transaction decoder and retain the entry
address_lookup_missingVersion 0 transaction references unavailable table stateLoaded account keys cannot be resolvedFetch or maintain the correct lookup-table state for that slot
clock_invalidClock step, missing timestamp, wrong domain, or uncertainty exceeds policyLatency sample cannot support a timing claimExclude the affected interval and repair clock discipline

Logging rule

Aggregate high-rate conditions by code, source, slot range, variant, and time window. Keep bounded packet samples for structural failures and duplicate conflicts. Do not write one log line per invalid packet at feed rate because logging can create the next receive overflow.

Questions

Does the UDP stream send error messages?
No. UDP delivery has no response channel and the documented live payload is a raw Solana shred, not a service envelope. Delivery failures appear as missing packets, network counters, socket drops, parser rejections, or stale application state. The receiver-local labels on this page provide a consistent diagnostic vocabulary.
What should an integrator do with fanout_error?
Read both the returned HTTP status and error message because fanout_error represents a non-success response passed through from delivery control. Do not assume every instance is retryable. Preserve current account state, avoid duplicate mutations, and retry only when the status, message, and operation make repetition safe.
Why are duplicate and duplicate_conflict separate?
An identical duplicate is expected in multi-path or repeated delivery and can be reduced to the earliest valid copy. A conflicting duplicate carries different bytes under the same cluster, slot, shred type, and index. Silent overwrite would destroy evidence of corruption, context error, or authenticated equivocation.