Yoto Developers
Card Content Schema

Card Content Schema

Complete schema reference for creating Yoto card content and playlists

A Yoto card is a large JSON object which consists of a few components.

cardId, title, and slug - Identity fields that uniquely identify and name the card.

metadata - Descriptive information about the card including category, age range, author, cover image, description, languages, and status. This section helps users discover and understand the content.

content - The playback structure defining how the card plays, including chapters with tracks (audio files or streams), playback configuration, and activity type.

Top-level card properties

Field nameTypeRequiredDescriptionConstraints / Validation
cardIdstringNoSpecify the card ID if you want to overwrite an existing card(^[a-zA-Z0-9]+$) Exactly 5 characters
createdAtstringNoISO datetime when the card was first createdMust be a valid ISO datetime (e.g. 2025-09-09T13:10:00.000Z)
updatedAtstringNoISO datetime when the card was last modifiedMust be a valid ISO datetime (e.g. 2025-09-09T13:10:00.000Z)
titlestringYesPlaylist titleMinimum 1 character Maximum 140 characters
slugstringNoURL-friendly identifier for the card

Content

Field nameTypeRequiredDescriptionConstraints / Validation
activitystringNo
chaptersarrayYesAn array of chaptersMinimum 1 character
configobjectNoAn object containing config fields
playbackTypeenumNoOne of: linear, interactive
versionstringNoTo help you track different versions of the content

Chapters

Field nameTypeRequiredDescriptionConstraints / Validation
keystringYes
titlestringYesThe chapter title
overlayLabelstringNo
availableFromdateNo
overlayLabelOverridestringNoUnused legacy property
tracksarrayYesAn array of tracks
ambientobjectNoAn object containing ambient fields
defaultTrackDisplaystringYes
defaultTrackAmbientstringYes
durationnumberNoThe total duration of the chapter in seconds
fileSizenumberNoThe total size of the chapter in bytes
displayobjectYesAn object containing display fields
hasStreamsbooleanNoLegacy property
displayOverlaystringNoUnused legacy property

Config

Field nameTypeRequiredDescriptionConstraints / Validation
autoadvanceenumNoDefines how the player should behave when a track endsOne of: next, repeat, none
onlineOnlybooleanNo
resumeTimeoutnumberNoSets how long the currently-played position is stored (in seconds). The default is 2592000 (30 days), so the player will remember your last-played position for a month.
shufflearrayNoShuffles chapters each time played. Tracks within each chapter always play in order. Each entry defines a group of chapters (by start and end index) to shuffle and optionally crop. Only supported when played on Yoto players, not in the app.

Tracks

Field nameTypeRequiredDescriptionConstraints / Validation
titlestringYesThe track title
trackUrlstringYesThe track URL, can be either a yoto
url or a regular web URL
keystringYes
formatenumYesThe file format of the track’s audio file, with opus or mp3 preferredOne of: mp3, aac, alac, flac, pcm_s16le, opus, ogg, x-m4a, wav, aiff, mpeg, or empty string
uidstringYes
typeenumYesOne of: audio, stream
displayobjectYesAn object containing display fields
displayOverlaystringNoUnused legacy property
overlayLabelOverridestringNoUnused legacy property
overlayLabelstringNoUsed in the app for track numbering
ambientobjectNoAn object containing ambient fields
durationnumberYesThe duration of the track in seconds
fileSizenumberYesThe size of the track in bytes
channelsenumNoThe audio channel configuration of the trackOne of: stereo, mono
eventsobjectNoAn object containing events fields
isNewbooleanNo

Ambient

Field nameTypeRequiredDescriptionConstraints / Validation
defaultTrackDisplaystringYes

Display

Field nameTypeRequiredDescriptionConstraints / Validation
icon16x16stringNoThe sha256 of the icon(^yoto:#[a-zA-Z0-9_-]{43}$)
iconUrl16x16stringNoMust be a fully qualified URL of a 16x16 png icon with a 32-bit RGBA color format, including alpha transparency.

Shuffle

Field nameTypeRequiredDescriptionConstraints / Validation
startnumberYesThe 0-based index of the first chapter to shuffle. For example, start = 1 leaves chapter 0 fixed and begins shuffling from chapter 1.
endnumberYesThe 0-based index of the last chapter to shuffle (inclusive). For example, end = 9 means chapters up to and including index 9 are shuffled.
limitnumberYesThe number of chapters to keep after shuffling. For example, if 7 chapters are shuffled but limit is 2, only 2 random chapters will be played. Set limit to end - start + 1 to keep all chapters.

Events

Field nameTypeRequiredDescriptionConstraints / Validation
onEndobjectNoAn object containing onEnd fields
onLhbobjectNoAn object containing onLhb fields
onRhbobjectNoAn object containing onRhb fields

OnEnd

Field nameTypeRequiredDescriptionConstraints / Validation
cmdenumYesOne of: stop, repeat, goto
paramsrecordNo

OnLhb

Field nameTypeRequiredDescriptionConstraints / Validation
cmdenumYesOne of: stop, repeat, goto
paramsrecordNo

OnRhb

Field nameTypeRequiredDescriptionConstraints / Validation
cmdenumYesOne of: stop, repeat, goto
paramsrecordNo

Metadata

Field nameTypeRequiredDescriptionConstraints / Validation
mediaobjectNoAn object containing media fields
accentstringNoThe narration’s accent
authorstringNoThe author
copyrightstringNo
readBystringNoName of the narrator
accentsarrayNoList of accents
authorsarrayNoList of authors
copyrightsarrayNoList of copyrights
narratorsarrayNoList of narrator names
categoryenumNoOne of: none, stories, music, radio, podcast, sfx, activities, alarms
coverobjectNoAn object containing cover fields
descriptionstringNoUse this field to provide a description of the content
errorobjectNoAn object containing error fields
feedUrlstringNoUsed for podcast feeds
genresarrayNoMaximum 3 characters
languagesarrayNoThe language of the content, must be a valid BCP47 language code
maxAgenumberNo
minAgenumberNo
musicTypesarrayNoMaximum 3 characters
notestringNo

Media

Field nameTypeRequiredDescriptionConstraints / Validation
durationnumberYes
fileSizenumberYes

Cover

Field nameTypeRequiredDescriptionConstraints / Validation
imageLstringNoThe URL of the card’s cover image

Error

Field nameTypeRequiredDescriptionConstraints / Validation
codestringYes
messagestringYes