I'm trying to make a simple request to bitcoind using perl I followed the example from the API reference, but it fails saying "401 Authorization Required"

#!/usr/bin/perl -w 

use JSON::RPC::Client;
use Data::Dumper;

my $client = new JSON::RPC::Client;

    'localhost:8332', 'jsonrpc', 'bitcoinrpc' => 'mybitcoinrpcpassword'  # REPLACE WITH YOUR bitcoin.conf rpcuser/rpcpassword

my $uri = 'http://localhost:8332/';
my $obj = {
    method  => 'getinfo',
    params  => [],

my $res = $client->call( $uri, $obj );

if ($res){
    if ($res->is_error) { print "Error : ", $res->error_message; }
    else { print Dumper($res->result); }
} else {
    print $client->status_line;

Am I missing something obvious? Thanks for any help!

1 Answer 1


Figured it out. Turns out that (at least on Bitcoind 0.8.1 on Ubuntu), specifying the conf file when starting bitcoind doesn't do anything. I was starting it with:

bitcoind -daemon -conf=./bitcoin.conf 

from a bitcoin directory I had created /home/vijay/btc/. But bitcoind automatically uses the conf file in ~/.bitcoin/bitcoin.conf and mine was being completely ignored. Not sure what the point of the "-conf" option is!

So the solution was just to add my rpc username and password to the default conf file, which fixed the authorization failed error.

  • You can use --datadir instead. May 4, 2013 at 16:42
  • 1
    Sounds like a bug! Did you report it?
    – Noldorin
    Apr 10, 2016 at 1:48

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.