> ## Documentation Index > Fetch the complete documentation index at: https://bunny.net/docs/llms.txt > Use this file to discover all available pages before exploring further. # Upload File > Upload a file to a storage zone based on the URL path. If the directory tree does not exist, it will be created automatically. **The file content should be sent as the body of the request without any type of encoding.** ## OpenAPI ````yaml /api-reference/storage/openapi.json put /{storageZoneName}/{path}/{fileName} openapi: 3.0.0 info: version: 1.0.0 title: bunny.net Edge Storage API description: > ![bunny.net Logo](https://bunny.net/v2/images/bunnynet-logo-dark.png "bunny.net Logo") Learn how to use the [bunny.net](https://bunny.net "bunny.net - The content delivery platform that truly hops") Edge Storage API. It allows you to easily upload, download and delete files with just a few lines of code.

API libraries:

These libraries allow quick integration for bunny.net Edge Storage.

Storage Endpoints:

The storage API endpoint depends on the primary storage region of your storage zone. You can also find this in the FTP & HTTP API Information of your storage zone. termsOfService: http://swagger.io/terms/ contact: name: bunny.net API Team email: support@bunny.net url: http://bunny.net license: name: MIT url: http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT servers: - url: https://storage.bunnycdn.com/ security: - AccessKeyAuthentication: [] paths: /{storageZoneName}/{path}/{fileName}: put: tags: - Manage Files summary: Upload File description: >- Upload a file to a storage zone based on the URL path. If the directory tree does not exist, it will be created automatically. **The file content should be sent as the body of the request without any type of encoding.** parameters: - name: storageZoneName in: path description: he name of your storage zone where you are connecting to. required: true schema: type: string - name: path in: path description: >- The directory path to where your file will be stored. If this is the root of your storage zone, you can ignore this parameter. required: true schema: type: string - name: fileName in: path description: The name that the file will be uploaded as. required: true schema: type: string - name: Checksum in: header required: false description: >- The SHA256 checksum of the uploaded content in HEX format (UPPERCASE). The server will compare the final SHA256 to the checksum and reject the request in case the checksums do not match. schema: type: string example: D7A8FBB307D7809469CA9ABCB0082E4F8D5651E46D3CDB762D02D0BF37C9E592 - name: AccessKey in: header required: true description: The API AccessKey used for authentication. schema: type: string requestBody: description: >- Raw request body should contain the contents of the file. This should be raw file data without any sort of encoding. required: true content: application/octet-stream: schema: type: string format: binary responses: '201': description: The file upload was successful. '400': description: Upload failed. components: securitySchemes: AccessKeyAuthentication: type: apiKey in: header name: AccessKey description: >- The storage zone password also doubles as your API key. You can find it in your storage zone details page in the bunny.net dashboard. ```` This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.