Docs durchsuchen

Guides und API-Endpunkte durchsuchen

Referenz

Creatives

Visuelles Asset (Bild ODER Video) + Text, Link und Call-to-Action. Die Absender-Identität (Facebook-Page, optional Instagram) kommt aus der Kunden-Konfiguration — nicht aus dem Request.

Verfügbar
POST

/v1/creatives

Registriert ein zuvor hochgeladenes Medium (image_hash aus /v1/media/images ODER video_id aus /v1/media/videos) als Creative-ENTWURF. Genau eines von beiden angeben. Hier wird KEIN Meta-Creative gebaut und KEINE Copy gesetzt: Texte, CTA, Ziel-Link und angezeigter Link gehören zur Anzeige und werden in POST /v1/ads übergeben — dort entsteht aus diesem Entwurf (creative_id) das finale Creative. Gleicher Ablauf wie beim Vorlagen-Render.

Body-Parameter

NameTypPflichtBeschreibung
image_hashstringoptionalBild-Hash aus POST /v1/media/images. Genau eines von image_hash oder video_id ist erforderlich. z. B. a1b2c3d4e5f67890a1b2c3d4e5f67890
video_idstringoptionalVideo-ID aus POST /v1/media/videos. Genau eines von image_hash oder video_id ist erforderlich. Das Video muss spätestens beim Anlegen der Anzeige (POST /v1/ads) READY sein. z. B. 239847562018
thumbnail_hashstringoptionalNur bei video_id. Optionaler image_hash als Video-Thumbnail. Ohne Angabe wird in POST /v1/ads das von Meta automatisch generierte Thumbnail verwendet (Video muss dann READY sein). z. B. f0e1d2c3b4a5
namestringoptionalOptionaler interner Name des Entwurfs. z. B. Headliner Visual

Request · Next.js

const res = await fetch(`https://api.campaignkit.ventureon.io/v1/creatives`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.CAMPAIGNKIT_API_KEY}`,
      "Content-Type": "application/json",
      "Idempotency-Key": crypto.randomUUID(),
    },
    body: JSON.stringify({
      image_hash: "a1b2c3d4e5f67890a1b2c3d4e5f67890",
      video_id: 239847562018,
      thumbnail_hash: "f0e1d2c3b4a5",
      name: "Headliner Visual",
    }),
});
const data = await res.json();

Response 200

{
  "data": { "id": "1f0c…", "type": "IMAGE", "status": "DRAFT" },
  "request_id": ""
}

Liefert die `id` (= creative_id für POST /v1/ads) — noch KEINE meta_creative_id. Texte, CTA, Ziel-Link und Display-Link setzt du in POST /v1/ads; dort wird das finale Meta-Creative gebaut. Onboarding (Token, Werbekonto, Page, Instagram, DSA) wird beim Anlegen der Anzeige geprüft.

GET

/v1/creatives

Listet die Creatives des Kontos, optional nach Status gefiltert.

Query-Parameter

NameTypPflichtBeschreibung
statusenumoptionalACTIVE | PAUSED | ARCHIVED.
limitintegeroptionalAnzahl pro Seite (Default 25, max 100).
offsetintegeroptionalVersatz für Pagination (Default 0).

Request · Next.js

const res = await fetch(`https://api.campaignkit.ventureon.io/v1/creatives`, {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.CAMPAIGNKIT_API_KEY}`,
    },
});
const data = await res.json();

Response 200

{
  "data": [
    {
      "id": "1f0c7a44-2d9e-4c61-b3a8-5e7f0c2a1b9d",
      "name": "Headliner Visual",
      "type": "IMAGE",
      "status": "ACTIVE",
      "meta_creative_id": "120210394857"
    }
  ],
  "request_id": ""
}
PATCH

/v1/creatives/{id}

Benennt ein Creative um. Inhalt (Bild, Text, Link) ist bei Meta unveränderlich — nur der Name lässt sich ändern.

Path-Parameter

NameTypPflichtBeschreibung
idstring (UUID)erforderlichInterne Creative-ID (aus POST/GET).

Body-Parameter

NameTypPflichtBeschreibung
namestringerforderlichNeuer interner Name (1–200 Zeichen).

Request · Next.js

const id = "";

const res = await fetch(`https://api.campaignkit.ventureon.io/v1/creatives/${id}`, {
    method: "PATCH",
    headers: {
      Authorization: `Bearer ${process.env.CAMPAIGNKIT_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      name: "",
    }),
});
const data = await res.json();

Response 200

{
  "data": { "id": "1f0c…", "name": "Headliner Visual v2", "type": "IMAGE", "meta_creative_id": "120210394857" },
  "request_id": ""
}
DELETE

/v1/creatives/{id}

Archiviert ein Creative (status=ARCHIVED).

Path-Parameter

NameTypPflichtBeschreibung
idstring (UUID)erforderlichInterne Creative-ID.

Request · Next.js

const id = "";

const res = await fetch(`https://api.campaignkit.ventureon.io/v1/creatives/${id}`, {
    method: "DELETE",
    headers: {
      Authorization: `Bearer ${process.env.CAMPAIGNKIT_API_KEY}`,
    },
});
const data = await res.json();

Response 200

{ "data": { "id": "1f0c…", "status": "ARCHIVED" }, "request_id": "" }

Archiviert statt hart zu löschen — nur in campaignKit, das Meta-Creative bleibt bestehen (wird ggf. von Ads weiterverwendet).