/v1/media/images
Übergibt ein Bild per öffentlich erreichbarer URL. Unser Server lädt die Datei von der URL und reicht die Bytes UNVERÄNDERT (keine Kompression) an Meta weiter; zurück kommt ein image_hash für Creatives. Synchron. Die URL wird serverseitig validiert (nur https, keine internen Ziele, keine Weiterleitungen).
Body-Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| url | string (https URL) | erforderlich | Direkte, öffentlich erreichbare https-URL zur fertigen Bilddatei (JPG/PNG/WebP, ≤ 30 MB). Wenn ihr das von uns aufgesetzte Supabase nutzt: signierte URL via supabase.storage.from(bucket).createSignedUrl(path, 3600) erzeugen. Ohne Supabase: jede öffentlich erreichbare https-URL (CDN, S3 Presigned-URL o. ä.). Sie muss von unserem Backend abrufbar sein und darf NICHT weiterleiten. z. B. https://<projekt>.supabase.co/storage/v1/object/sign/media/headliner.jpg?token=… |
Request · Next.js
const res = await fetch(`https://api.campaignkit.ventureon.io/v1/media/images`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CAMPAIGNKIT_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
url: "https://<projekt>.supabase.co/storage/v1/object/sign/media/headliner.jpg?token=…",
}),
});
const data = await res.json();Response 200
{
"data": { "id": "b3f1…", "image_hash": "a1b2c3d4e5f6", "url": "https://…fbcdn.net/…" },
"request_id": "…"
}Richtlinien: JPG/PNG/WebP, ≤ 30 MB, empfohlen ≥ 1080 px Kantenlänge. Seitenverhältnis je Platzierung (1:1, 4:5, 9:16, 1.91:1). Komprimierung macht der Kunde.