# IPFS RPC API

Filebase now supports a limited set of IPFS RPC-compatible API endpoints. These endpoints allow developers and tools that integrate with [Kubo](https://github.com/ipfs/kubo) to communicate directly with Filebase using familiar IPFS HTTP API routes.

This API is **complementary to our S3-compatible API** and simplifies integration with the IPFS CLI, IPFS-compatible libraries, and other standard HTTP clients.

## Base URL

```
https://rpc.filebase.io
```

All API requests require a **Bearer API key** via the `Authorization` header.

***

## 🔐 Authentication

API keys can be found at the bottom of the [Access Keys](https://console.filebase.com/keys) page. Keys are bucket-specific. All requests must include an API key in the `Authorization` header:

```http
Authorization: Bearer <api-key>
```

***

## 🧪 IPFS CLI Integration

You can use the IPFS CLI directly with Filebase by passing the `--api` flag:

```bash
ipfs --api="/dns4/rpc.filebase.io/tcp/443/https" \
  --api-auth="<api-key>" add file1
```

***

## 📌 `/api/v0/pin/ls`

List all pinned objects.

**Method**: `POST`

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/pin/ls"
```

***

## 🔢 `/api/v0/version`

Get the version of the IPFS daemon.

**Method**: `POST`

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/version"
```

***

## 📂 `/api/v0/cat`

Fetch and return the contents of a file by CID.

**Method**: `POST`

**Query Parameter**:

* `arg` (string) – CID of the file.

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/cat?arg=Qm..."
```

***

## 📦 `/api/v0/block/get`

Retrieve a raw block by CID.

**Method**: `POST`

**Query Parameter**:

* `arg` (string) – CID of the block.

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/block/get?arg=Qm..."
```

***

## ➕ `/api/v0/add`

Add a file to IPFS.

**Method**: `POST`**Form Field**:

* `file` (multipart/form-data) – The file to upload.

**Supported Query Parameters**:

| Parameter             | Type    | Description                                              |
| --------------------- | ------- | -------------------------------------------------------- |
| `wrap-with-directory` | Boolean | Wrap the uploaded file in a directory. Default: `false`. |
| `cid-version`         | Integer | CID version to use (0 or 1). Default: `0`.               |

**Basic Example**:

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/add" \
  -F "file=@file1"
```

**Example with `wrap-with-directory` and `cid-version`**:

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/add?wrap-with-directory=true&cid-version=1" \
  -F "file=@file1" -F "file=@file2"
```

> 💡 When using `wrap-with-directory=true`, the returned CID will represent a directory containing the file rather than the file directly.

***

## 📌 `/api/v0/pin/add`

Pin a CID to ensure it remains stored.

**Method**: `POST`

**Query Parameter**:

* `arg` (string) – CID to pin.

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/pin/add?arg=Qm..."
```

***

## 🧹 `/api/v0/pin/rm`

Unpin a CID to remove it from persistent storage.

**Method**: `POST`

**Query Parameter**:

* `arg` (string) – CID to unpin.

```bash
curl -X POST -H "Authorization: Bearer <api-key>" \
  "https://rpc.filebase.io/api/v0/pin/rm?arg=Qm..."
```
