When running, the LBRY daemon provides a JSON-RPC server running at http://localhost:5279
.
It can be accessed by any utility capable of making HTTPS GET and POST requests, such as cURL or possibly your toaster. On Windows? You can also use PowerShell. Learn more.
To verify the LBRY daemon is running correctly, let's try looking up a URI:
$curl 'http://localhost:5279' --data '{"method":"resolve","params":{"uri":"what"}}'
[
{
"author": "Samuel Bryan",
"content_type": "video/mp4",
"description": "What is LBRY? An introduction with Alex Tabarrok",
"language": "en",
"license": "LBRY inc",
"nsfw": false,
"sources": {
"lbry_sd_hash": "d5169241150022f996fa7cd6a9a1c421937276a3275eb912790bd07ba7aec1fac5fd45431d226b8fb402691e79aeb24b"
},
"thumbnail": "https://s3.amazonaws.com/files.lbry.io/logo.png",
"title": "What is LBRY?",
"ver": "0.0.3"
}
]
Above, we called the method
resolve
for the URL lbry://what
. This returned the metadata associated with the URL.
Now let's download it. This time we're going to call the method get
with the same parameters.
$curl 'http://localhost:5279' --data '{"method":"get","params":{"uri":"what"} }'
[
{
//some response fields omitted for brevity
"claim_id": "7b670f0034d0eb119c32acfe8b19ae6622dd218f", //a claim ID is persistent for a piece of content. It stays the same if the original publisher updates the entry.
"download_directory": "/home/kauffj/Downloads",
"download_path": "/home/kauffj/Downloads/LBRY100.mp4",
"file_name": "LBRY100.mp4",
"metadata": { ... }, //same dictionary as above
"outpoint": "6e224057a9dfa3417bb3890da2c4b4e9d2471641185c6c8b33cb57d61365a4f0:1", //an outpoint is a frozen-in-time pointer to a specific piece of content. It changes if the content changes.
"total_bytes": 158433904,
"written_bytes": 0 //will increase as the file downloads
}
]
This file will download in the background to the download_directory
specified in the returned data. Subsequent calls to get
or file_list
will return the status.
The LBRY API consists of about 50 calls, all related to discovering, distributing, and purchasing content. View the full API documentation.
You can also list all of the commands available by calling the help command.
$curl 'http://localhost:5279' --data '{"method":"help"}'
If you are running Windows and would like to follow this guide you could substitute curl with a PowerShell console and the following code.
$Invoke-RestMethod -Uri 'http://localhost:5279' -Body 'THE_JSON_DATA' -Method POST | ConvertTo-Json
If PowerShell does not work and you want to continue with cURL, you'll need to escape inner double quotes with a \ to pass the JSON properly via Command Prompt.
$curl "http://localhost:5279" --data "{\"method\":\"get\",\"params\":{\"uri\":\"what\"} }"