Skip to content

REST API

The Canvas REST API supports versioning through the /api/v{version} URL prefix:

  • V2 (Current): The latest stable version, featuring enhanced performance and expanded functionality. All integrations have to use this version.
  • V1 (Removed): The legacy version, which has since been removed as of November 5th 2025.

Base URL: https://canvasmc.io/api/v2

GET /projects

Returns a list of all available projects and information about them.

Example Response
{
"projects": [
{
"slug": "canvas",
"ciJob": "Canvas",
"ciJobUrl": "https://jenkins.canvasmc.io/job/Canvas/",
"javadocBaseUrl": "https://maven.canvasmc.io/javadoc/releases/io/canvasmc/canvas/canvas-api"
},
{
"slug": "horizon",
"ciJob": "Horizon",
"ciJobUrl": "https://jenkins.canvasmc.io/job/Horizon/",
"javadocBaseUrl": "https://maven.canvasmc.io/javadoc/releases/io/canvasmc/horizon/core"
}
]
}
GET /builds

Returns a list of all builds. This is identical to the /builds/all endpoint.

  • project (string) - The project slug for which to display builds
  • channel (string) - Filter builds by channel version
  • experimental (boolean) - Include experimental builds
Example Response
[
{
"buildNumber": 1337,
"url": "https://jenkins.canvasmc.io/job/Canvas/1337/",
"downloadUrl": "https://jenkins.canvasmc.io/job/Canvas/1337/artifact/canvas-server/build/libs/canvas-build.1337.jar",
"channelVersion": "1.21.4",
"timestamp": 1739339329161,
"isExperimental": true,
"commit": { // [!code --]
"message": "Hello world!", // [!code --]
"hash": "3768ac53eb2671853145bd077ade0579e13741ed" // [!code --]
}, // [!code --]
"commits": [
{
"message": "Hello world!",
"hash": "3768ac53eb2671853145bd077ade0579e13741ed"
},
{
"message": "Why are you reading this?",
"hash": "895b307dcc7c6fbb040dc7bd26d9a754e03cf8c7"
}
]
},
// ...
]
GET /builds/all

Returns a list of all builds.

  • project (string) - The project slug for which to display builds
  • channel (string) - Filter builds by channel version
  • experimental (boolean) - Include experimental builds
Example Response
[
{
"buildNumber": 1337,
"url": "https://jenkins.canvasmc.io/job/Canvas/1337/",
"downloadUrl": "https://jenkins.canvasmc.io/job/Canvas/1337/artifact/canvas-server/build/libs/canvas-build.1337.jar",
"channelVersion": "1.21.4",
"timestamp": 1739339329161,
"isExperimental": true,
"commit": { // [!code --]
"message": "Hello world!", // [!code --]
"hash": "3768ac53eb2671853145bd077ade0579e13741ed" // [!code --]
}, // [!code --]
"commits": [
{
"message": "Hello world!",
"hash": "3768ac53eb2671853145bd077ade0579e13741ed"
},
{
"message": "Why are you reading this?",
"hash": "895b307dcc7c6fbb040dc7bd26d9a754e03cf8c7"
}
]
},
// ...
]
GET /builds/latest

Returns the latest build.

  • project (string) - The project slug for which to display the build
  • channel (string) - Filter builds by channel version
  • experimental (boolean) - Include experimental builds
Example Response
{
"buildNumber": 1337,
"url": "https://jenkins.canvasmc.io/job/Canvas/1337/",
"downloadUrl": "https://jenkins.canvasmc.io/job/Canvas/1337/artifact/canvas-server/build/libs/canvas-build.1337.jar",
"channelVersion": "1.21.4",
"timestamp": 1739339329161,
"isExperimental": true,
"commit": { // [!code --]
"message": "Hello world!", // [!code --]
"hash": "3768ac53eb2671853145bd077ade0579e13741ed" // [!code --]
}, // [!code --]
"commits": [
{
"message": "Hello world!",
"hash": "3768ac53eb2671853145bd077ade0579e13741ed"
},
{
"message": "Why are you reading this?",
"hash": "895b307dcc7c6fbb040dc7bd26d9a754e03cf8c7"
}
]
}
GET /jd

Redirects to the Javadocs page for the latest build of the specified project (or filtered by channel/experimental).

  • project (string) - The project slug for which to display JDs
  • channel (string) – The channel version to use. Defaults to latest.
  • redirect (string) - What page should be opened. Defaults to the main page.
  • experimental (boolean) – Include experimental builds (true or false). Defaults to false.

Example redirect URL if project=canvas, channel=1.21.8, experimental=false and redirect=org/bukkit/plugin/java/JavaPlugin.html:

https://maven.canvasmc.io/javadoc/snapshots/io/canvasmc/canvas/canvas-api/1.21.8-R0.1-SNAPSHOT/.cache/unpack/org/bukkit/plugin/java/JavaPlugin.html
  • If version is not provided, the endpoint uses the channel version from the latest build (respecting the experimental flag to allow experimental versions).
  • This endpoint does not return JSON; it performs an HTTP redirect to the Javadocs page.
  • Use this endpoint to quickly navigate to the Javadocs without manually looking up the build number.

Bellow is a Java example file for interacting with the Canvas V2 API.

This API can be used and obtained via the io.canvasmc.httpclient:httpclient:<version> library