uploads

Create upload

Creates a new upload session. This allows you to upload the data for a new mod file version.

⚠️ Files larger than 100 MiB must use a multi part upload.

Next steps

  • Call PUT with your file data to the returned presigned_url. Recommended for files up to 100 MiB.
    • ⚠️ You must send a Content-Disposition header of attachment; filename="<filename>", using the filename from your request. This value is part of the presigned URL signature, so the upload is rejected if the header is missing or does not match.
  • Once all data is uploaded, finalise the upload.

Content integrity (md5)

Supplying md5 binds the presigned URL to that one file. The digest forms part of the URL signature, so the URL cannot be reused to upload different content, and storage rejects a body that does not match it.

⚠️ md5 is optional today and becomes required on or after 2026-12-01. Send it now to avoid a breaking change later.

  • md5 in your request body is the hex digest — the 32 characters md5sum prints, in upper or lower case.
  • Your PUT must also carry a Content-MD5 header holding the base64 encoding of the same digest (openssl dgst -md5 -binary <file> | base64). As with Content-Disposition, this value is part of the signature, so the upload is rejected if it is missing or does not match.
  • Retrying the same bytes to the same URL still succeeds, so this does not affect resumed or repeated uploads.
post/uploads

Request

  • Base URL: https://api.nexusmods.com/v3
  • URL: https://api.nexusmods.com/v3/uploads
  • Auth: one of:
    • API key in header apikey
    • HTTP bearer

Request body

size_bytesinteger required

Size of the archive being uploaded, in bytes.

filenamestring required

Filename for the archive being uploaded. This is the name sent in the Content-Disposition header when you upload the data, not the name of the mod file version created from it.

md5string nullable

⚠️ Optional today, required on or after 2026-12-01. From that date, single-part uploads that omit it are rejected.

Hex MD5 digest of the file - the 32 hex characters md5sum prints. Accepted in upper or lower case, and null is treated the same as omitting the field.

Binds the presigned URL to this one file, so it cannot be reused to upload different content. Your PUT must send the same digest base64-encoded in a Content-MD5 header (openssl dgst -md5 -binary <file> | base64).

Response

Upload ID and presigned URL

Changes

No recorded changes to this operation across all 1 revision of this API.