AI Disclosure Object

Declares whether a campaign item's media is AI-generated or AI-modified. The ai_disclosure object is an optional field on a campaign item and, where applicable, on individual carousel cards. Taboola uses its value to render the required user-facing AI-content label on downstream surfaces where AI-content disclosure laws apply (for example, the EU AI Act, effective 2 August 2026, and comparable jurisdictions as they come online).

Taboola preserves and transmits the disclosure signal to downstream partners (API publishers, publishers, and RTB integrations), so the label is rendered consistently with the advertiser's declaration.

Object structure

NameModifier & DefaultsTypeDescription
statusRequired when ai_disclosure is present

String (enum)

Possible values:

AI_GENERATED
NOT_AI_GENERATED

The AI-content verdict for the item's media. See Status values.
📘

To retrieve the current list of allowed values at runtime, call the Dictionary endpoint GET /backstage/api/1.0/resources and read the ai_disclosure_status resource. This is recommended for integrations that render these values in a UI.

Status values

ValueMeaning
AI_GENERATEDOne or more assets in the item were created or substantially modified by generative AI.
NOT_AI_GENERATEDThe advertiser has affirmatively declared that no assets in the item were AI-generated or AI-modified.

Behavior

Create

  • If ai_disclosure is omitted, the item is created with no disclosure.
  • To declare a disclosure at creation time, send status explicitly (AI_GENERATED or NOT_AI_GENERATED).

Update

  • Omitting the ai_disclosure field is a no-op. It does not clear an existing disclosure.
  • To change an existing disclosure, send a new explicit status.
  • A disclosure cannot be un-set once it has been made through the API. To reverse a disclosure, submit the opposite status (for example, replacing AI_GENERATED with NOT_AI_GENERATED).

Read (GET)

  • The ai_disclosure object is returned only when a disclosure has been recorded.
  • When nothing has been disclosed, the field is returned as null (or omitted).

Carousel items

For carousel campaign items, set ai_disclosure on each hierarchy_children[] card individually, not on the parent item. Each card's declaration is independent and drives labeling for that card.

Examples

Declaring AI-generated content on create

{
  "url": "https://advertiser.example.com/landing",
  "title": "Watch all your favorite channels in one place",
  "ai_disclosure": {
    "status": "AI_GENERATED"
  }
}

Affirmatively declaring not-AI-generated

{
  "url": "https://advertiser.example.com/landing",
  "title": "Watch all your favorite channels in one place",
  "ai_disclosure": {
    "status": "NOT_AI_GENERATED"
  }
}

Reading an item with no disclosure

{
  "id": "1234567891",
  "url": "https://advertiser.example.com/landing",
  "ai_disclosure": null
}

Carousel: per-card declaration

{
  "url": "https://advertiser.example.com/landing",
  "hierarchy_children": [
    {
      "title": "Card 1 - human-shot photo",
      "ai_disclosure": {
        "status": "NOT_AI_GENERATED"
      }
    },
    {
      "title": "Card 2 - AI-generated illustration",
      "ai_disclosure": {
        "status": "AI_GENERATED"
      }
    }
  ]
}

Errors

Validation rejections return HTTP 400.

ConditionError message
ai_disclosure is present but status is missing or null (offending_field: ai_disclosure.status)Missing required field
Unknown value supplied for statusEnum validation error

Endpoints supporting ai_disclosure

The ai_disclosure object is accepted on requests to, and returned on responses from, the campaign item endpoints:

POST /backstage/api/1.0/{account_id}/campaigns/{campaign_id}/items            # Create a campaign item
POST /backstage/api/1.0/{account_id}/campaigns/{campaign_id}/items/{item_id}  # Update a campaign item
GET  /backstage/api/1.0/{account_id}/campaigns/{campaign_id}/items/{item_id}  # Get a campaign item
GET  /backstage/api/1.0/{account_id}/campaigns/{campaign_id}/items            # List campaign items

Reference pages: Create a campaign item, Update a campaign item, Get a campaign item, List campaign items.

The object is also accepted on the equivalent Creative Library endpoints, and on any endpoint that accepts or returns a campaign item payload.

Backwards compatibility

  • The ai_disclosure field is optional. Existing integrations that do not send it continue to function unchanged.
  • Items created before this feature are returned with ai_disclosure: null on read (no disclosure recorded).
  • Existing integrations that do not read the field are unaffected.
📘

Any integration that creates or updates campaign items in markets subject to AI-content disclosure laws should populate ai_disclosure with an explicit status.

When advertisers must declare

The obligation to accurately declare AI-generated content sits with the advertiser as the Deployer under applicable transparency regulations (for example, EU AI Act Article 50(4)). Taboola's role is to preserve and propagate the declared signal.

Content that must be declared as AI_GENERATED includes, but is not limited to, any image, video, audio, or text in the item that was:

  • Created from scratch by a generative AI tool (for example, Midjourney, DALL·E, Stable Diffusion, Adobe Firefly, OpenAI Sora, Runway, Veo, or ElevenLabs).
  • Substantially edited or transformed by AI (for example, face-swap, voice clone, Generative Fill that alters key visual elements, or AI translation and dubbing).
  • Generated text on matters of public interest (health, elections, news).

Minor enhancements such as automatic upscaling, denoising, sharpening, or color correction are not in scope, and should be declared as NOT_AI_GENERATED (or left undisclosed).

For advertiser-facing guidance, see the Realize AI Content Disclosure Help Center article.

Related references


Did this page help you?