Policies

Content policy

What gets refused, why resending fails, and your duty to label AI ads.

Read as Markdown

What RiffAds refuses to make, and what you must do with what it makes.

One check on every path

REST, MCP, the CLI, the app and workflow runs all run the same check. Refused on one, refused on all. The check runs before anything is charged, so a refusal carries credits_charged: 0.

What is checked

InputWhen
ScriptOn submit
Free text fields (prompt, brief, lyrics, headline, instruction)On submit
Uploaded imagesWhen the upload is finalized, before use
Import URLsBefore anything is fetched

Text is matched against a fixed rule list. A model pass can sit on top for wording the list misses.

CategoryResult
Sexual content involving minorsRefused
Explicit sexual contentRefused
Credible violence and threatsRefused
Illicit goodsRefused
HateRefused
Self harmWarning, job runs
ImpersonationWarning, job runs

Video and audio are not scanned

Uploads return content_checked: false for video and audio. Nothing reads their contents. Don't tell your users they were reviewed.

What a refusal looks like

Response: 422
{
  "error": {
    "ok": false,
    "code": "moderation_blocked",
    "message": "This request was refused by our content policy. Change the wording or the input; sending it again unchanged will be refused again.",
    "retryable": false,
    "credits_charged": 0
  }
}
  • One sentence. No category, no internal id. There is nothing to reverse engineer.
  • A refused file names its ast_ id. That file can never be used. Upload a different one.
  • An upload still being scanned returns input_not_ready. That one is retryable.

Resending fails

The rule list gives the same answer to the same words, forever. Repeats get blocked:

Refused byRefusalsThenFor
The rule list2Refused without checking30 days
A model3Pausedabout 1 hour

A blocked request returns request_blocked (429, not retryable, blocked_reason: "moderation_blocked"). Change the script or the inputs. Blocks never cross workspaces.

If checks are down, agent submits return moderation_unavailable (503, retryable). Reads still work.

Think a refusal is wrong? There is no appeal button. Change the wording. A different request gets a fresh check.

Everything is AI made

Every file RiffAds returns is AI generated or AI edited. Video, images, voice, music, scripts. That stays true with your own script or your own uploads.

The file carries no label. No watermark, no visible mark, no C2PA data. Some models may add hidden marks. RiffAds does not add, check or promise them.

Labeling is your job

RiffAds never publishes anything. You choose where the file goes, so the duty to disclose goes with you. No API, MCP or CLI response tells your agent to label. Build it into your process.

Label where law, a regulator or a platform requires it:

  • EU AI Act. Transparency rules apply from 2 August 2026. Realistic content that looks like real people, places or events must be disclosed.
  • Laws on deepfakes, synthetic media, political ads, and use of a person's name, image or voice.
  • Advertising and consumer law, including fake reviews, testimonials and endorsements.
  • Ad policies of every platform you run on.

Use a label people notice: "AI generated" or "Made with AI", or the platform's own AI label. To burn one in, use the text_overlay capability. Capabilities. Not legal advice.

Actors are not real people

  • Library actors are AI. They never used, tested or recommended anything. Don't present one as a real customer, reviewer or expert.
  • Making an actor from a real person's photo, or cloning a real voice? Get their written consent first. Never anyone under 18. Keep a copy.
  • RiffAds does not verify who is in a photo or voice sample. Impersonation wording is a warning, not a block. The job runs. The duty is yours.

Review before you publish

Nobody at RiffAds watches output. Expect sometimes:

  • Wrong, missing or mispronounced words.
  • Lips out of sync. Odd faces, hands or text.
  • False product details or claims, including in AI-written scripts.
  • Accidental likeness to a real person or brand.

The check runs on inputs, not on the finished file. Watch, listen, read. Make sure every claim is true.

Full rules: AI Disclosure and Acceptable Use Policy. Legal.

On this page