Documentation
Documentation
https://docs.ipfs.tech/reference/kubo/rpc/
Documentation
https://ipfs.github.io/pinning-services-api-spec/
openapi: 3.0.0
info:
title: IPFS RPC Add pins API
version: v0
description: 'When a Kubo IPFS node is running as a daemon, it exposes an HTTP RPC API that allows you to control the node and run the same commands you can from the command line.
In many cases, using this RPC API is preferable to embedding IPFS directly in your program — it allows you to maintain peer connections that are longer lived than your app and you can keep a single IPFS node running instead of several if your app can be launched multiple times. In fact, the `ipfs` CLI commands use this RPC API when operating in online mode.'
x-providerName: IPFS
x-logo:
url: https://raw.githubusercontent.com/ipfs/ipfs-docs/55fe8bc6a53ba3b9023951fb4b432efbbc81fba5/docs/.vuepress/public/images/ipfs-logo.svg
servers:
- description: Local IPFS node
url: http://localhost:5001
- description: Local IPFS node
url: http://127.0.0.1:5001
- description: Infura hosted IPFS node
url: https://ipfs.infura.io:5001
tags:
- name: pins
paths:
/pins:
get:
operationId: getPins
summary: List pin objects
description: List all the pin objects, matching optional filters; when no filter is provided, only successful pins are returned
tags:
- pins
parameters:
- $ref: '#/components/parameters/cid'
- $ref: '#/components/parameters/name'
- $ref: '#/components/parameters/match'
- $ref: '#/components/parameters/status'
- $ref: '#/components/parameters/before'
- $ref: '#/components/parameters/after'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/meta'
responses:
'200':
description: Successful response (PinResults object)
content:
application/json:
schema:
$ref: '#/components/schemas/PinResults'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/InsufficientFunds'
4XX:
$ref: '#/components/responses/CustomServiceError'
5XX:
$ref: '#/components/responses/InternalServerError'
post:
operationId: addPin
summary: Add pin object
description: Add a new pin object for the current access token
tags:
- pins
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pin'
responses:
'202':
description: Successful response (PinStatus object)
content:
application/json:
schema:
$ref: '#/components/schemas/PinStatus'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/InsufficientFunds'
4XX:
$ref: '#/components/responses/CustomServiceError'
5XX:
$ref: '#/components/responses/InternalServerError'
/pins/{requestid}:
parameters:
- name: requestid
in: path
required: true
schema:
type: string
get:
operationId: getPinByRequestId
summary: Get pin object
description: Get a pin object and its status
tags:
- pins
responses:
'200':
description: Successful response (PinStatus object)
content:
application/json:
schema:
$ref: '#/components/schemas/PinStatus'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/InsufficientFunds'
4XX:
$ref: '#/components/responses/CustomServiceError'
5XX:
$ref: '#/components/responses/InternalServerError'
post:
operationId: replacePinByRequestId
summary: Replace pin object
description: Replace an existing pin object (shortcut for executing remove and add operations in one step to avoid unnecessary garbage collection of blocks present in both recursive pins)
tags:
- pins
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Pin'
responses:
'202':
description: Successful response (PinStatus object)
content:
application/json:
schema:
$ref: '#/components/schemas/PinStatus'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/InsufficientFunds'
4XX:
$ref: '#/components/responses/CustomServiceError'
5XX:
$ref: '#/components/responses/InternalServerError'
delete:
operationId: deletePinByRequestId
summary: Remove pin object
description: Remove a pin object
tags:
- pins
responses:
'202':
description: Successful response (no body, pin removed)
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/InsufficientFunds'
4XX:
$ref: '#/components/responses/CustomServiceError'
5XX:
$ref: '#/components/responses/InternalServerError'
components:
schemas:
StatusInfo:
description: Optional info for PinStatus response
type: object
additionalProperties:
type: string
minProperties: 0
maxProperties: 1000
example:
status_details: 'Queue position: 7 of 9'
PinMeta:
description: Optional metadata for pin object
type: object
additionalProperties:
type: string
minProperties: 0
maxProperties: 1000
example:
app_id: 99986338-1113-4706-8302-4420da6158aa
TextMatchingStrategy:
description: Alternative text matching strategy
type: string
default: exact
enum:
- exact
- iexact
- partial
- ipartial
PinResults:
description: Response used for listing pin objects matching request
type: object
required:
- count
- results
properties:
count:
description: The total number of pin objects that exist for passed query filters
type: integer
format: int32
minimum: 0
example: 1
results:
description: An array of PinStatus results
type: array
items:
$ref: '#/components/schemas/PinStatus'
uniqueItems: true
minItems: 0
maxItems: 1000
Failure:
description: Response for a failed request
type: object
required:
- error
properties:
error:
type: object
required:
- reason
properties:
reason:
type: string
description: Mandatory string identifying the type of error
example: ERROR_CODE_FOR_MACHINES
details:
type: string
description: Optional, longer description of the error; may include UUID of transaction for support, links to documentation etc
example: Optional explanation for humans with more details
PinStatus:
description: Pin object with status
type: object
required:
- requestid
- status
- created
- pin
- delegates
properties:
requestid:
description: Globally unique identifier of the pin request; can be used to check the status of ongoing pinning, or pin removal
type: string
example: UniqueIdOfPinRequest
status:
$ref: '#/components/schemas/Status'
created:
description: Immutable timestamp indicating when a pin request entered a pinning service; can be used for filtering results and pagination
type: string
format: date-time
example: '2020-07-27T17:32:28.276Z'
pin:
$ref: '#/components/schemas/Pin'
delegates:
$ref: '#/components/schemas/Delegates'
info:
$ref: '#/components/schemas/StatusInfo'
Delegates:
description: List of multiaddrs designated by pinning service that will receive the pin data; see Provider Hints in the docs
type: array
items:
type: string
uniqueItems: true
minItems: 1
maxItems: 20
example:
- /ip4/203.0.113.1/tcp/4001/p2p/QmServicePeerId
Origins:
description: Optional list of multiaddrs known to provide the data; see Provider Hints in the docs
type: array
items:
type: string
uniqueItems: true
minItems: 0
maxItems: 20
example:
- /ip4/203.0.113.142/tcp/4001/p2p/QmSourcePeerId
- /ip4/203.0.113.114/udp/4001/quic/p2p/QmSourcePeerId
Pin:
description: Pin object
type: object
required:
- cid
properties:
cid:
description: Content Identifier (CID) to be pinned recursively
type: string
example: QmCIDToBePinned
name:
description: Optional name for pinned data; can be used for lookups later
type: string
maxLength: 255
example: PreciousData.pdf
origins:
$ref: '#/components/schemas/Origins'
meta:
$ref: '#/components/schemas/PinMeta'
Status:
description: Status a pin object can have at a pinning service
type: string
enum:
- queued
- pinning
- pinned
- failed
examples:
CustomServiceErrorExample:
value:
error:
reason: CUSTOM_ERROR_CODE_FOR_MACHINES
details: Optional explanation for humans with more details
summary: Response when a custom error occured
BadRequestExample:
value:
error:
reason: BAD_REQUEST
details: Explanation for humans with more details
summary: A sample response to a bad request; reason will differ
InternalServerErrorExample:
value:
error:
reason: INTERNAL_SERVER_ERROR
details: Explanation for humans with more details
summary: Response when unexpected error occured
InsufficientFundsExample:
value:
error:
reason: INSUFFICIENT_FUNDS
details: Unable to process request due to the lack of funds
summary: Response when access token run out of funds
UnauthorizedExample:
value:
error:
reason: UNAUTHORIZED
details: Access token is missing or invalid
summary: Response to an unauthorized request
NotFoundExample:
value:
error:
reason: NOT_FOUND
details: The specified resource was not found
summary: Response to a request for a resource that does not exist
parameters:
cid:
description: Return pin objects responsible for pinning the specified CID(s); be aware that using longer hash functions introduces further constraints on the number of CIDs that will fit under the limit of 2000 characters per URL in browser contexts
name: cid
in: query
required: false
schema:
type: array
items:
type: string
uniqueItems: true
minItems: 1
maxItems: 10
style: form
explode: false
example:
- Qm1
- Qm2
- bafy3
status:
description: Return pin objects for pins with the specified status (when missing, service should default to pinned only)
name: status
in: query
required: false
schema:
type: array
items:
$ref: '#/components/schemas/Status'
uniqueItems: true
minItems: 1
style: form
explode: false
example:
- queued
- pinning
name:
description: Return pin objects with specified name (by default a case-sensitive, exact match)
name: name
in: query
required: false
schema:
type: string
maxLength: 255
example: PreciousData.pdf
after:
description: Return results created (queued) after provided timestamp
name: after
in: query
required: false
schema:
type: string
format: date-time
example: '2020-07-27T17:32:28.276Z'
before:
description: Return results created (queued) before provided timestamp
name: before
in: query
required: false
schema:
type: string
format: date-time
example: '2020-07-27T17:32:28.276Z'
match:
description: Customize the text matching strategy applied when the name filter is present; exact (the default) is a case-sensitive exact match, partial matches anywhere in the name, iexact and ipartial are case-insensitive versions of the exact and partial strategies
name: match
in: query
required: false
schema:
$ref: '#/components/schemas/TextMatchingStrategy'
example: exact
meta:
description: Return pin objects that match specified metadata keys passed as a string representation of a JSON object; when implementing a client library, make sure the parameter is URL-encoded to ensure safe transport
name: meta
in: query
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/PinMeta'
limit:
description: Max records to return
name: limit
in: query
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 1000
default: 10
responses:
NotFound:
description: Error response (The specified resource was not found)
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
examples:
NotFoundExample:
$ref: '#/components/examples/NotFoundExample'
Unauthorized:
description: Error response (Unauthorized; access token is missing or invalid)
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
examples:
UnauthorizedExample:
$ref: '#/components/examples/UnauthorizedExample'
InsufficientFunds:
description: Error response (Insufficient funds)
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
examples:
InsufficientFundsExample:
$ref: '#/components/examples/InsufficientFundsExample'
BadRequest:
description: Error response (Bad request)
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
examples:
BadRequestExample:
$ref: '#/components/examples/BadRequestExample'
InternalServerError:
description: Error response (Unexpected internal server error)
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
examples:
InternalServerErrorExample:
$ref: '#/components/examples/InternalServerErrorExample'
CustomServiceError:
description: Error response (Custom service error)
content:
application/json:
schema:
$ref: '#/components/schemas/Failure'
examples:
CustomServiceErrorExample:
$ref: '#/components/examples/CustomServiceErrorExample'
externalDocs:
url: https://docs.ipfs.tech/reference/kubo/rpc/