Skip to main content
OpenPMM uses a multipart upload for each file. Each part is 8 MiB, except the final part. Read the media guidelines before you upload. Each destination has its own image limits and video limits.
1

Begin the upload

Calculate the CRC64NVME checksum for each part. Send the checksums in part order.
OpenPMM returns one upload_url for each part. It also returns the required headers for each URL.Use video for every video file. This value does not select a YouTube Short or a provider Reel placement. Set that choice in the Post destination options.
2

Upload the bytes

Send each part to its upload_url. Include all values from required_headers.Do not send the OpenPMM API key to an upload URL. Save the ETag response header for each part.You can retry a failed part with the same URL. A retry replaces the earlier data for that part number.
3

Complete the upload

Calculate the CRC64NVME checksum for the full file. Send the checksum, size, and completed parts.
Call POST /workspaces/{workspace_id}/asset-uploads/{upload_id}/complete. OpenPMM checks the stored file and returns the asset.
Store the returned asset id. Add the ID to the post media array for the opening post. Use media_items to select a body item in a self-reply chain:
The first body item has the item_index value 0. Attach the returned Asset to a Post and publish normally. If the file cannot publish to a selected Destination, the publication request returns media_change_required. See Resolve media changes.
The upload URLs expire at expires_at. Create a new upload after this time.