# API & CLI reference
Looking for user and developer references for IPFS? Find them here.
# HTTP Gateway
The Gateway API provides implementation-agnostic HTTP interface for retrieving content-addressed data from IPFS with regular HTTP clients and libraries. Use it for future-proofing your applications.
# Custom APIs
Implementation and language specific interfaces can be used when HTTP Gateway API is not enough, or you need additional flexibility.
# Kubo (go-ipfs)
Kubo is the earliest and most widely used implementation of IPFS, written in Go.
Use it as:
CLI tool Working in the terminal? Here's where you'll find Kubo's command-line interface (CLI) reference.
HTTP RPC endpoint RPC API v0 reference for Kubo — control your node over HTTP using the same commands you can from the command line!
Go library See Go API reference for Kubo, including the Go CoreAPI, the Go embedded client, and a Go client for interacting with Kubo over HTTP RPC API.
# JavaScript (js-ipfs)
WARNING
# js-ipfs being discontinued
Development of the js-ipfs project (opens new window) is being discontinued to focus on Helia (opens new window), a leaner, more modular, modern implementation of IPFS in JavaScript scheduled for release in 2023. To learn more about Helia and the current state of IPFS in JS, see the blog post (opens new window).
Because of this, js-ipfs tutorials may be out of date, and will eventually be archived.
API resources for js-ipfs, including the JS core API reference and the JS HTTP client library.
Explore the Mutable File System, Regular Files API, and DAG API through ProtoSchool's coding challenges (opens new window).