Media

Media Overview

Uploading photos and videos for listings via API

Media files are a required part of listings. You need at least 3 photos for publishing. The API supports two upload methods and automatically optimizes all files.

You don't need to optimize photos before uploading — upload originals.

Upload Methods

MethodWhen to UseDescription
URL in listingWhenever possibleSimplest — pass URLs directly when creating a listing
Import by URLPre-uploadUpload photos separately, then link to listing
Signed URLUpload from local diskFor files without a public URL

Recommendation: Pass photo URLs directly when creating a listing — the system will download them automatically. This is the simplest approach.

Supported Formats

Images

JPEG, PNG, WebP, HEIC, and other popular formats.

Video

MP4, AVI, MOV — up to 3 minutes.

Limits

ParameterValue
Minimum photos for publishing3
Maximum photos per listing20
Files in a single requestup to 100
Signed URL validity30 minutes

Typical Scenario

Recommended approach — in one request:

PUT /listings
→ pass files: [{ url: "https://..." }] and announcementStatus: "active"
→ system automatically downloads and optimizes photos

Alternative approach — separate upload:

1. Upload photos → POST /media/bulk
   → with upload-from-url operation

2. Link to listing → PUT /listings
   → pass files: [{ id: 123 }] or [{ externalFileId: "..." }]

Media File Structure

After upload and optimization, a file contains:

{
  "id": 123,
  "externalId": "photo-001",
  "size": 245000,
  "contentType": "image/jpeg",
  "optimization": "success",
  "blurhash": "L7HuX^zY1z-6ADx?0z2@1Io#{yV_",
  "originalUrl": "https://storage.../original.jpg",
  "variants": [
    { "url": "https://storage.../128.webp", "variantSize": "128", "size": 4074 },
    { "url": "https://storage.../512.webp", "variantSize": "512", "size": 32850 },
    { "url": "https://storage.../1024.webp", "variantSize": "1024", "size": 98500 }
  ]
}
FieldDescription
idInternal file ID
externalIdYour CRM ID
optimizationOptimization status
blurhashString for generating placeholder
originalUrlLink to original
variantsOptimized versions of different sizes

API Endpoints

MethodPathDescription
POST/media/upload-from-urlImport by URL
POST/media/bulkBulk operations (upload-from-url, confirm-upload, etc.)
POST/media/request-upload-urlSigned URL
GET/media/:idGet file
GET/media/external/:externalIdGet by external ID
DELETE/media/:idDelete file
DELETE/media/external/:externalIdDelete by external ID
POST/media/:id/linkLink external ID
DELETE/media/:id/linkUnlink external ID

Next Steps

Copyright © 2026