YouTube selfDeclaredMadeForKids vs madeForKids: set it on upload

On videos.insert you set status.selfDeclaredMadeForKids; the API returns madeForKids. How the two differ, and one template for a batch of AI-made Shorts.

5 min readSume
All posts

On a YouTube upload you set status.selfDeclaredMadeForKids to say whether a video is directed at children, and you read status.madeForKids to see the audience designation YouTube holds for it. For a batch of AI-made Shorts, put both audience and AI declarations in one upload template so no video is posted on defaults.

The field definitions come from the Videos resource and the videos.insert reference, read on 2026-10-02.

How do the two kids fields differ?

The Videos resource describes selfDeclaredMadeForKids as the property that lets the channel owner designate a video as child-directed during an upload or update. madeForKids is the current designation, which can be derived from that self-declaration. The insert reference lists selfDeclaredMadeForKids among the settable properties.

The page does not tell you what the right answer is for your content; that is your decision, and YouTube's own audience guidance applies. Sume does not make that call and does not set the field.

Audience and AI fields on a video (read 2026-10-02)
FieldDirectionMeaning on the Videos resource page
status.selfDeclaredMadeForKidsYou set itDesignates the video as child-directed
status.madeForKidsYou read itCurrent designation, potentially derived from your declaration
status.containsSyntheticMediaYou set itDiscloses realistic altered or synthetic content such as deepfakes or altered real events

Why put both in one template?

A batch is where defaults get inherited. If fifteen Shorts share one recipe, they usually share one audience answer and one synthetic-media answer, and you decide each once. Keep exceptions explicit: a single clip with a realistic synthetic person is a different answer from a stylized animation.

The synthetic-media field is described as disclosing realistic altered or synthetic content. For when it applies, read our post on the containsSyntheticMedia field and the platform disclosure checklist.

A template you can run

This builds the status object from per-video answers and refuses a missing audience answer, so a batch cannot post on an unanswered default. It runs as is.

def build_status(kids, synthetic, privacy="private"):
    if kids is None:
        raise ValueError("answer selfDeclaredMadeForKids for every video")
    return {
        "privacyStatus": privacy,
        "selfDeclaredMadeForKids": bool(kids),
        "containsSyntheticMedia": bool(synthetic),
    }

batch = [
    {"job": "job_a", "kids": False, "synthetic": True},
    {"job": "job_b", "kids": False, "synthetic": False},
]
for v in batch:
    print(v["job"], build_status(v["kids"], v["synthetic"]))

What do I do when the two fields disagree?

The Videos resource says madeForKids is the current designation and may be derived from your self-declaration. If you read back a value you did not expect, treat the read-back as the source of truth about the video as YouTube holds it, and use your template to correct the declaration, not the other way round.

Do not infer from the field names that setting one controls the other in every case; the page only says the first can inform the second. For anything beyond that, rely on YouTube's own audience documentation, which we did not read for this post.

Where does Sume come in?

Sume produces the files. A Format bulk run can queue up to 100 runs, and each child's receipt lists what it made. Store the audience and synthetic answers beside each job id when you plan the batch, and read the receipt, not memory, when you upload.

Sume does not upload, label or classify your videos for YouTube. The jobs guide explains how to wait on each result without resubmitting a paid create.

Keep the template in version control and review it when YouTube changes its documentation. The revision history for 2026 lists changes to thumbnails, comments, quotas and view counting, but nothing to these two fields, so we are not aware of a change here. If that changes, the template is the one place to update, and the Sume jobs that made the files do not need to run again.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume