As far as I understand, if you supply a made up TxID to the getrawtransaction RPC API, it should return an error code that suggests the record is not found (i.e. 404 HTTP STATUS CODE?). However, in bitcoin-core 0.12.1 and 0.13.1 it's returning 500-Internal Server Error, as if the node had some problem processing the request.

FYI, I have txindex=1 enabled in this node, so it's not because of the lack of data. Should this be fixed upstream or is it already fixed? Or is there a better reason for why this is the case?

1 Answer 1


It should return HTTP status 500 if the transaction doesn't exist. 404 is just for method-does-not-exist errors. (See here.) Reading the code, I don't see how error 404 could be returned for a transaction not existing. (I checked the current code and 0.13.)

HTTP status codes are pretty non-specific. You should parse the JSON response if you want something more specific than 'an error happened.' (But it doesn't always return JSON. IIRC, 401 Authorization errors aren't JSON.)

  • This is the problem I'm mentioning, the error response is not json and has even changed across versions: github.com/bitcoin/bitcoin/commit/… thus, one cannot distinguish between an error state of the server and the server claiming that the tx doesn't exist. I disagree that 500 should be thrown here, because 5xx errors are "server errors" and it's not a server error, it's just a normal response. See en.wikipedia.org/wiki/… , querying about a non-existent transaction is not something "unexpected".
    – knocte
    May 18, 2017 at 6:45
  • 404 doesn't mean "method not found" but simply "not found". Method not found would actually be better mapped to 400 "bad request"
    – knocte
    May 18, 2017 at 6:45
  • 1) Looks like JSON to me. What do you get? If you want something that usually doesn't change between versions, the JSON error code (the negative number) changes less often than the error message. 2) Hey, I didn't pick the status codes. Just be glad it's not error 418.
    – Nick ODell
    May 18, 2017 at 16:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.