Skip to content

REST API quick start

Detect a PeerTube instance

There are several ways to know if a website uses the PeerTube software:

  • The server exposes NodeInfo information: https://peertube2.cpy.re/nodeinfo/2.0.json
  • The server sends a x-powered-by: PeerTube header response to API requests
  • HTML pages include a <meta property="og:platform" content="PeerTube"> tag

Authentication

Get client

Some endpoints need authentication. We use OAuth 2.0 so first fetch the client tokens:

bash
curl https://peertube.example.com/api/v1/oauth-clients/local

Response example:

json
{
  "client_id": "v1ikx5hnfop4mdpnci8nsqh93c45rldf",
  "client_secret": "AjWiOapPltI6EnsWQwlFarRtLh4u8tDt"
}

Get user token

Now you can fetch the user token:

bash
curl -X POST \
 -d "client_id=v1ikx5hnfop4mdpnci8nsqh93c45rldf&client_secret=AjWiOapPltI6EnsWQwlFarRtLh4u8tDt&grant_type=password&response_type=code&username=your_user&password=your_password" \
  https://peertube.example.com/api/v1/users/token

Response example:

json
{
  "access_token": "90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0",
  "token_type": "Bearer",
  "expires_in": 14399,
  "refresh_token": "2e0d675df9fc96d2e4ec8a3ebbbf45eca9137bb7"
}

Just use the access_token in the Authorization header:

bash
curl -H 'Authorization: Bearer 90286a0bdf0f7315d9d3fe8dabf9e1d2be9c97d0' https://peertube.example.com/api/v1/jobs/completed

List videos

bash
curl https://peertube.example.com/api/v1/videos

Libraries

Convenience libraries are generated automatically from the OpenAPI specification for the following languages:

Other languages supported by the OpenAPI generator can be added to the generation, provided they make a common enough use case.