Uploading Files

File uploads work by first sending a file to the server and then using the ID provided.

You can find out what kinds of files you can upload by visiting the API documentation.

To upload a file, pick the desired tag then send a POST to {endpoint}/{tag} along with a multipart/form-data body with one field file that contains the file you wish to upload.

You must specify session/bot authentication token as with any other API route.

You will receive the following JSON response:

{
  "id": "0"
}

You can use the ID wherever a file is required in the API.

Code sample in JavaScript using Fetch API:

const body = new FormData();
body.append("file", file);

const data = await fetch(`${endpoint}/${tag}`, {
  method: "POST",
  body,
  headers: {
    "X-Session-Token": "...", // or X-Bot-Token
  },
}).then((res) => res.json());

// use data.id

Differences from old Autumn

If you are migrating from old Autumn, the following key points are important:

  • There are only two paths that serve a unique image, the preview version of it (if available) and the original image.
  • You should not specify any query parameters under any circumstance, the preview route will serve the optimal size for the content type.
  • Preview routes for banners, emojis, backgrounds, and attachments will redirect to the original file where the file is not an image or the image is animated.
  • If you are currently using logic to replace the URL path to start/stop animations, you should use the following templates: (NB. this only applies to avatars and icons)
    • Non-animated file: /{tag}/{file_id}
    • Animated file: /{tag}/{file_id}/{file_name} or /{tag}/{file_id}/original (if name unavailable)