Aveiro API
Authentication
Sites
List Sites
List Templates
Create Site
Pages
Create a Page
Delete a Page
List Pages
Reorder Pages
Update a Page
Site Media
Publish Site
Audience
Newsletter API Overview
Newsletter Campaigns
Social
Social API Overview
Social Accounts
Social Media
Social Posts
Social Performance
Website Mockup Video
TrademarkTrademark
Ctrl k
Search…
Sign up
Aveiro API
Authentication
Sites
List Sites
List Templates
Create Site
Pages
Create a Page
Delete a Page
List Pages
Reorder Pages
Update a Page
Site Media
Publish Site
Audience
Newsletter API Overview
Newsletter Campaigns
Social
Social API Overview
Social Accounts
Social Media
Social Posts
Social Performance
Website Mockup Video
Sponsored
Aveiro
aveiro.app
Sponsored
Aveiro
aveiro.app
TrademarkTrademark
AveiroBlogContact
© Aveiro. All rights reserved.
Built with Aveiro

Site Media

List a site's uploaded images and get direct-upload targets for new ones.
Updated 14d ago
Update a Page
Publish Site
In short
GET /api/v1/sites/{siteId}/media lists a site's uploaded images. POST …/media/upload returns a short-lived signed URL you PUT raw image bytes to. Both feed page content: embed the public URL as <Media src> or page metadata image.

Why this exists

Pages should illustrate with real files, never invented image URLs (made-up links 404 and render broken). Agents check the library first, reuse what's there, and upload only when a new image is genuinely needed. Files land in the same site media library the dashboard's upload dialog uses, so everything stays visible in the editor.

List site media

GET /api/v1/sites/{siteId}/media?cursor=0&limit=24 Authorization: Bearer av_live_…
Required scope: content:read 200 OK

Prepare an upload

POST /api/v1/sites/{siteId}/media/upload Authorization: Bearer av_live_… Content-Type: application/json { "contentType": "image/png", "size": 482133 }
Required scope: content:write 201 Created Then PUT the raw bytes with exactly the returned headers:
curl -X PUT -H 'Content-Type: image/png' \ --data-binary @cover.png '…upload.url…'
Once the PUT succeeds, embed publicUrl in page MDX or metadata:
<Media src="https://…/site-media/SITE_ID/1754900000000-ab12cd.png" alt="Launch cover" />

Limits

  • Image types: JPEG, PNG, WebP, GIF (no SVG — signed uploads bypass server-side sanitization)
  • Max size 10MB; the signed URL is valid for 2 hours
  • Uploads are capped per rolling day per site, and count against the organization's storage quota

Errors

HTTP
Code
When
400VALIDATION_ERRORUnsupported type or size over the cap
403FORBIDDENMissing scope or storage quota exceeded
429RATE_LIMITEDDaily upload limit reached

Related

  • Create a page
  • Update a page
  • Social media uploads
{
  "images": [
    {
      "name": "1754900000000-ab12cd.png",
      "url": "https://…/assets/site-media/SITE_ID/1754900000000-ab12cd.png",
      "createdAt": "2026-08-01T09:00:00.000Z",
      "size": 482133
    }
  ],
  "nextCursor": null
}
{
  "upload": {
    "url": "https://…signed-upload-url…",
    "method": "PUT",
    "headers": { "Content-Type": "image/png" },
    "expiresInSeconds": 7200
  },
  "publicUrl": "https://…/assets/site-media/SITE_ID/1754900000000-ab12cd.png",
  "path": "site-media/SITE_ID/1754900000000-ab12cd.png",
  "name": "1754900000000-ab12cd.png",
  "mediaType": "image",
  "maxBytes": 10485760
}