Media - S3 Direct Upload

Create upload transaction

Creates a new upload transaction. Specify resourceType (e.g. PLANNER) and the list of parts. The backend derives the storage bucket and path from the resource type and your user ID. Single-part → simple presigned URL. Multi-part → multipart upload with per-part presigned URLs.

put/v2/media/s3/upload-transactions

Request

  • Base URL: https://app.metricool.com/api
  • URL: https://app.metricool.com/api/v2/media/s3/upload-transactions
  • Auth: none declared

Request body

resourceType'planner' | 'studio-logo' required

Type of resource being uploaded. Determines the storage strategy (bucket and path). Case-insensitive. Supported values: 'planner', 'studio-logo'.

contentTypestring required

MIME type of the file

fileExtensionstring

Optional file extension hint (e.g., 'mp4', 'jpg'). If not provided, derived from contentType.

Example request

{
  "resourceType": "planner",
  "contentType": "image/png",
  "parts": [
    {
      "size": 5242880,
      "endByte": 5242880,
      "hash": "x3b2yqV2wFk8B0LBDYhRGwXlNRgzTqnm4WIaxKnIRWQ="
    }
  ],
  "fileExtension": "mp4"
}

Response

Upload transaction created successfully

metadataobject

Example response

{
  "data": {
    "key": "uploads/123/202601/abc123_video.mp4",
    "bucket": "metricool-upload",
    "expiresAt": "2026-01-26T12:15:00Z",
    "fileUrl": "https://metricool-upload.s3.eu-west-1.amazonaws.com/uploads/123/202601/abc123_video.mp4",
    "presignedUrl": "https://metricool-upload.s3.eu-west-1.amazonaws.com/...?X-Amz-Signature=...",
    "uploadId": "abc123xyz...",
    "parts": [
      {
        "partNumber": 1,
        "presignedUrl": "https://bucket.s3.amazonaws.com/key?partNumber=1&uploadId=...",
        "partSize": 5242880,
        "endByte": 5242880
      }
    ],
    "totalSize": 10485760,
    "uploadType": "MULTIPART"
  }
}

Changes

No recorded changes to this operation across all 5 revisions of this API.