ai1y Docs

API

API reference

Every operation and schema of the ai1y API, written from its OpenAPI description, which is also here as openapi.json. Start with the overview.

Preview. The hosted API isn’t open yet. This is the API the creator studio answers today; the hosted service will answer the same calls.

Projects

The projects you may open, and one project with its revision.

GET /api/v1/projects

GET /api/v1/projects

Answers

StatusWhat it meansBody
200Every projectobject

GET /api/v1/projects/{project}

GET /api/v1/projects/{project}

Parameters

NameInRequiredTypeAbout
projectpathyesstring

Answers

StatusWhat it meansBody
200The projectProject
404No such project, job or callProblem (application/problem+json)

Reads

What a command changes, each at its own address, to read before you change it. See Reading a project.

A sentence: its text, its lines and their takes

GET /api/v1/projects/{project}/sentences/{sentence}

Needs the editor role · operationId read-sentence

Parameters

NameInRequiredTypeAbout
projectpathyesstring
sentencepathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A sentence: its text, its lines and their takesobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

A sentence's earlier versions, a page

GET /api/v1/projects/{project}/sentences/{sentence}/history

Needs the editor role · operationId read-sentence-history

Parameters

NameInRequiredTypeAbout
projectpathyesstring
sentencepathyesstring
beforequerynostringThe next of the page before
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A sentence's earlier versions, a pageobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The changes kept in the history, newest first, a page

GET /api/v1/projects/{project}/history

Needs the editor role · operationId read-history

Parameters

NameInRequiredTypeAbout
projectpathyesstring
beforequerynostringThe next of the page before
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The changes kept in the history, newest first, a pageobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

A word: how it is said, and its respelling

GET /api/v1/projects/{project}/words/{word}

Needs the editor role · operationId read-word

Parameters

NameInRequiredTypeAbout
projectpathyesstring
wordpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A word: how it is said, and its respellingobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

Other lines' readings of a line's words

GET /api/v1/projects/{project}/lines/{line}/borrow-sources

Needs the editor role · operationId list-borrow-sources

Parameters

NameInRequiredTypeAbout
projectpathyesstring
linepathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200Other lines' readings of a line's wordsobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The cast's characters

GET /api/v1/projects/{project}/characters

Needs the editor role · operationId list-characters

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The cast's charactersobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

One character

GET /api/v1/projects/{project}/characters/{character}

Needs the editor role · operationId read-character

Parameters

NameInRequiredTypeAbout
projectpathyesstring
characterpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200One characterobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The project's settings

GET /api/v1/projects/{project}/settings

Needs the editor role · operationId read-settings

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The project's settingsobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

Commands

Each change is a command of its own, sent with the revision you last read. See Making a change.

POST /api/v1/projects/{project}/changes

POST /api/v1/projects/{project}/changes

Deprecated

Use the commands; this goes once the studio's page does

Parameters

NameInRequiredTypeAbout
projectpathyesstring

Body

ChangeAsk.

Answers

StatusWhat it meansBody
200Saved; the project's revision after itChanged
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)

GET /api/v1/projects/{project}/commands

GET /api/v1/projects/{project}/commands

Parameters

NameInRequiredTypeAbout
projectpathyesstring

Answers

StatusWhat it meansBody
200Every command, with its bodyobject
404No such project, job or callProblem (application/problem+json)

Add a character to the cast

POST /api/v1/projects/{project}/commands/add-character

Needs the editor role · Cost: edit · operationId add-character

Add a character named name to the cast, with how it should sound, which its voice is designed from.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

NewCharacter.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Rename a character

POST /api/v1/projects/{project}/commands/rename-character

Needs the editor role · Cost: edit · operationId rename-character

Give a character a new name.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

RenameCharacter.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Say who a character is

POST /api/v1/projects/{project}/commands/describe-character

Needs the editor role · Cost: edit · operationId describe-character

Say who a character is, for the cast and the voice it is given.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

DescribeCharacter.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Say how a character should sound

POST /api/v1/projects/{project}/commands/set-voice-description

Needs the editor role · Cost: edit · operationId set-voice-description

Say how a character should sound, for designing its voice.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetVoiceDescription.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Make a character a group said at once by these members, or one character again

POST /api/v1/projects/{project}/commands/set-group-members

Needs the editor role · Cost: edit · operationId set-group-members

Make a character a group said by these characters at once, adding any new ones named; no members makes it one character again.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetGroupMembers.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

For a group: whether the narrator reads its lines instead

POST /api/v1/projects/{project}/commands/set-narrator-reads

Needs the editor role · Cost: edit · operationId set-narrator-reads

For a group: whether the narrator reads its lines instead.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetNarratorReads.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

For a group: how loosely its members keep together

POST /api/v1/projects/{project}/commands/set-group-spread

Needs the editor role · Cost: edit · operationId set-group-spread

For a group: how loosely its members keep together.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetGroupSpread.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

For a group: keep in step word by word or over the whole line

POST /api/v1/projects/{project}/commands/set-group-sync

Needs the editor role · Cost: edit · operationId set-group-sync

For a group: whether its members keep in step word by word or over the whole line.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetGroupSync.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

For a group: the member the others follow

POST /api/v1/projects/{project}/commands/set-group-lead

Needs the editor role · Cost: edit · operationId set-group-lead

For a group: the member the others follow.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetGroupLead.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

For a group: when one member starts and how loud it is

POST /api/v1/projects/{project}/commands/set-member-mix

Needs the editor role · Cost: edit · operationId set-member-mix

For a group: when one member starts and how loud it is.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetMemberMix.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Remove a character

POST /api/v1/projects/{project}/commands/remove-character

Needs the editor role · Cost: edit · operationId remove-character

Remove the character id from the cast; the narrator reads its lines. A member of a group can't be removed.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

RemoveCharacter.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Give one character's lines to another and remove it

POST /api/v1/projects/{project}/commands/merge-character

Needs the owner role · Cost: edit · operationId merge-character

Give one character's lines to another and remove it.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

CharacterMerge.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Pick the take a character's voice is made from

POST /api/v1/projects/{project}/commands/use-voice

Needs the editor role · Cost: edit · operationId use-voice

Use one of a character's voice takes, or with take None, the voice designed from its description again.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

VoicePick.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Discard voice takes of a character

POST /api/v1/projects/{project}/commands/discard-takes

Needs the editor role · Cost: edit · operationId discard-takes

Delete some of a character's voice takes, none of them in use.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

DiscardTakes.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Record a character's voice to make it from

POST /api/v1/projects/{project}/commands/record-voice

Needs the editor role · Cost: run-costly · Starts a takes job · operationId record-voice

A recording of a character's voice, to make a voice take from.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

VoiceRecording.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Ask for takes of a group's first lines, to hear it

POST /api/v1/projects/{project}/commands/preview-group

Needs the editor role · Cost: run-costly · Starts a takes job · operationId preview-group

Ask for a take of each of the group id's first lines, read by its members at once, to hear it; a line with takes waiting is left as it is.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

PreviewGroup.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Mark the drafted cast as looked at and right

POST /api/v1/projects/{project}/commands/mark-cast-reviewed

Needs the editor role · Cost: edit · operationId mark-cast-reviewed

The creator has looked at the drafted cast and marks it right.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

CastReviewed.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Say who reads a line

POST /api/v1/projects/{project}/commands/set-speaker

Needs the editor role · Cost: edit · operationId set-speaker

Who says a line; null gives it to the narrator.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetSpeaker.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set what the voice says for a line

POST /api/v1/projects/{project}/commands/set-say

Needs the editor role · Cost: edit · operationId set-say

What the voice says for a line, in place of the book's words; null says the book's words again.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetSay.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set how a line is said, in words

POST /api/v1/projects/{project}/commands/set-how

Needs the editor role · Cost: edit · operationId set-how

How a line is said, in words ("whisper it, scared"); null takes that away.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetHow.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Play a sound in place of a line's words

POST /api/v1/projects/{project}/commands/set-sound

Needs the editor role · Cost: edit · operationId set-sound

A sound that plays in place of a line's words; null takes it away.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetSound.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Pick the take a line plays

POST /api/v1/projects/{project}/commands/pick-take

Needs the editor role · Cost: edit · operationId pick-take

The take a line plays; null goes back to the take the build reads.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

PickTake.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Mark a line to come back to, or take the mark away

POST /api/v1/projects/{project}/commands/mark-line

Needs the editor role · Cost: edit · operationId mark-line

Mark a line to come back to, or take the mark away.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

LineMark.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Trim the start and end of the clip a line plays

POST /api/v1/projects/{project}/commands/trim-clip

Needs the editor role · Cost: edit · operationId trim-clip

Cut start_ms from the start and end_ms from the end of the clip a line plays, or with both 0, take its trim away (trimming clips, TM2).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

TrimAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Shape a clip's loudness over time

POST /api/v1/projects/{project}/commands/set-envelope

Needs the editor role · Cost: edit · operationId set-envelope

Make the clip a line plays as loud over its length as points say, (ms into the clip, dB) in order, or with none, take its envelope away (volume-envelope.md, VE2).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

EnvelopeAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set the silence after a line

POST /api/v1/projects/{project}/commands/set-pause

Needs the editor role · Cost: edit · operationId set-pause

Make the silence after a line's words ms long, in place of the build's own gap there, or with None, the build's own again (pauses.md, PA1).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

PauseAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Cut the clip a line plays in two

POST /api/v1/projects/{project}/commands/cut-clip

Needs the editor role · Cost: edit · operationId cut-clip

Cut the clip a line plays in two (cutting-clips.md, CT2): its audio at ms into the clip, its words before the word starting at at (a code point of its sentence) and from it on.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

CutAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Use another line's reading of the same words

POST /api/v1/projects/{project}/commands/borrow-reading

Needs the editor role · Cost: edit · operationId borrow-reading

Borrow another line's reading of the same words for the line key (borrowed-takes.md, BT4): source as lines/{key}/borrow-sources named it.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

BorrowAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Record a line in your own voice

POST /api/v1/projects/{project}/commands/record-line

Needs the editor role · Cost: edit · operationId record-line

One line read aloud on the Timeline, cut and made mono in the page, its WAV sent as base64, to keep as a take of the line (recording-voices.md, RV5, RV6).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

LineRecording.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Record how a line should be said, for its direction

POST /api/v1/projects/{project}/commands/record-how

Needs the editor role · Cost: run-costly · Starts a takes job · operationId record-how

A line read aloud in the Fix sheet to show how it goes, made mono in the page, its WAV sent as base64 (delivery-from-recording.md, DR1, DR2).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

HowRecording.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Forget a recording of how to say a line

POST /api/v1/projects/{project}/commands/forget-how

Needs the editor role · Cost: edit · operationId forget-how

The creator's reading of a line, to forget.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

HowReadingRef.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Discard takes of lines

POST /api/v1/projects/{project}/commands/discard-line-takes

Needs the editor role · Cost: edit · operationId discard-line-takes

Delete some takes of lines, none of them in use.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

DiscardLineTakes.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)

Read a sentence in one go with the next, or apart

POST /api/v1/projects/{project}/commands/join-sentences

Needs the editor role · Cost: edit · operationId join-sentences

Read a sentence in one go with the one before it (True), apart from it (False), or as the build decides (None).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

JoinAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Mark a sentence's words as spoken or not

POST /api/v1/projects/{project}/commands/set-spoken

Needs the editor role · Cost: edit · operationId set-spoken

Read a sentence aloud (True), or show it and don't read it (False).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SpokenAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Give some of a sentence's words to a reader

POST /api/v1/projects/{project}/commands/give-words

Needs the editor role · Cost: edit · operationId give-words

Give some words of a sentence to the narrator (narrator) or a character (SF14, splitting lines SL1): a stretch of one segment, in code points, as the Fix sheet picks it or the Lines screen splits a line there.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

GiveWords.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Put a sentence's lines back as they were (an undo)

POST /api/v1/projects/{project}/commands/restore-lines

Needs the editor role · Cost: edit · operationId restore-lines

Put a sentence's lines back as they were, with the takes of other lines a split set aside picked again: the Undo of a split or of putting lines together. Its clips' volumes and clean-ups, when given, are put back as they were too (readings.md, RD9).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

RestoreLines.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Play a sound in place of some of a sentence's words

POST /api/v1/projects/{project}/commands/set-words-sound

Needs the editor role · Cost: edit · operationId set-words-sound

Play a sound in place of some words of the book: a stretch of one segment, in code points.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

WordsAsSound.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set how one clip is cleaned of noise

POST /api/v1/projects/{project}/commands/set-clip-cleanup

Needs the editor role · Cost: edit · operationId set-clip-cleanup

Clean one clip of noise its own way, or as the whole book does (null).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetClipCleanup.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set how the whole book is cleaned of noise

POST /api/v1/projects/{project}/commands/set-book-cleanup

Needs the owner role · Cost: edit · operationId set-book-cleanup

How every clip of the book is cleaned of noise, unless it has its own way.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetBookCleanup.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set how loud a clip plays

POST /api/v1/projects/{project}/commands/set-volume

Needs the editor role · Cost: edit · operationId set-volume

Make a clip louder or quieter, in dB; 0 leaves it as read (clip-volume.md, VL4). The studio makes every other piece of the reading in one go it is a piece of as loud (readings.md, RD4).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

VolumeAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set the model every voice of the book is cleaned with

POST /api/v1/projects/{project}/commands/set-book-cleanup-model

Needs the owner role · Cost: edit · operationId set-book-cleanup-model

The model every voice of the book is cleaned with, unless a voice, a take or a clip has its own (cleanup-models.md, CM15).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetBookCleanupModel.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set the model a character's voice, or the narrator's, is cleaned with

POST /api/v1/projects/{project}/commands/set-voice-cleanup-model

Needs the editor role · Cost: edit · operationId set-voice-cleanup-model

The model a character's voice, or the narrator's (narrator), is cleaned with, or as the whole book (null).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetVoiceCleanupModel.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set the model a take is cleaned with

POST /api/v1/projects/{project}/commands/set-take-cleanup-model

Needs the editor role · Cost: edit · operationId set-take-cleanup-model

The model a take is cleaned with, or as its voice (null).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetTakeCleanupModel.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set the model one clip is cleaned with

POST /api/v1/projects/{project}/commands/set-clip-cleanup-model

Needs the editor role · Cost: edit · operationId set-clip-cleanup-model

The model one clip is cleaned with, or as its take or voice (null).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetClipCleanupModel.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Put clean-up models back as they were (an undo)

POST /api/v1/projects/{project}/commands/restore-cleanup-models

Needs the editor role · Cost: edit · operationId restore-cleanup-models

Put clean-up models back as they were: the whole book's, when given, and each voice's, take's and clip's named, null for none of its own. The Undo of setting one.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

RestoreCleanupModels.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Ask for takes of a line

POST /api/v1/projects/{project}/commands/queue-line-takes

Needs the editor role · Cost: run-costly · Starts a takes job · operationId queue-line-takes

Ask for takes of a line, made by the next takes job.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

QueueLineTakes.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Ask for voice takes of a character

POST /api/v1/projects/{project}/commands/queue-voice-takes

Needs the editor role · Cost: run-costly · Starts a takes job · operationId queue-voice-takes

Ask for voice takes of a character, to pick its voice from.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

QueueVoiceTakes.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Ask for takes of one run of a sentence, made next

POST /api/v1/projects/{project}/commands/queue-sentence-takes

Needs the editor role · Cost: run-costly · Starts a takes job · operationId queue-sentence-takes

Takes of one run of a sentence, made now or right after the running job, from the reader's Fix sheet (sentence fixes, SF4).

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

SentenceTakesAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Ask for voice takes of every character with no voice yet

POST /api/v1/projects/{project}/commands/queue-everyone

Needs the editor role · Cost: run-costly · Starts a takes job · operationId queue-everyone

Voice takes for every character with no voice picked and none to hear.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

EveryoneAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Take back takes asked for and not made yet

POST /api/v1/projects/{project}/commands/unqueue

Needs the editor role · Cost: edit · operationId unqueue

Take back the request id for takes, asked for and not made yet.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

QueuedRef.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)

Say how a word is said, everywhere in the book

POST /api/v1/projects/{project}/commands/respell

Needs the editor role · Cost: edit · operationId respell

Say word as respelling from now on.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

Respell.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Take a word's respelling away

POST /api/v1/projects/{project}/commands/unrespell

Needs the editor role · Cost: edit · operationId unrespell

Take the respelling of word away, so it is said as written; a suggested one is never suggested again.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

Unrespell.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Keep a suggested respelling of a word

POST /api/v1/projects/{project}/commands/keep-respelling

Needs the editor role · Cost: edit · operationId keep-respelling

Keep the respelling suggested for word as the creator's own.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

KeepRespelling.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Ask for takes of a word as respelled

POST /api/v1/projects/{project}/commands/word-takes

Needs the editor role · Cost: run-costly · Starts a takes job · operationId word-takes

Takes of word said as respelling, to hear before it is saved.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

WordTakesAsk.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Add a sound to the project

POST /api/v1/projects/{project}/commands/add-sound

Needs the editor role · Cost: edit · operationId add-sound

A recorded sound with its rights, its WAV sent as base64: the file the creator picked, in whatever format, converted in the page, with that file's name and SHA-256.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

NewSound.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Remove a sound from the project

POST /api/v1/projects/{project}/commands/remove-sound

Needs the editor role · Cost: edit · operationId remove-sound

A sound in the studio's list, by its name relative to the cast file.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SoundRef.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Add a background under some sentences

POST /api/v1/projects/{project}/commands/add-background

Needs the editor role · Cost: edit · operationId add-background

Add a background under some sentences.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

AddBackground.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set everything about a background

POST /api/v1/projects/{project}/commands/set-background

Needs the editor role · Cost: edit · operationId set-background

Set everything about a background that is there already.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetBackground.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Remove a background

POST /api/v1/projects/{project}/commands/remove-background

Needs the editor role · Cost: edit · operationId remove-background

Remove the background id from under its sentences.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

BackgroundRef.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Pick the voice engine the book is read with

POST /api/v1/projects/{project}/commands/set-engine

Needs the owner role · Cost: edit · operationId set-engine

The voice engine the book is read with.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetEngine.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Pick the engine's voice the narrator reads with

POST /api/v1/projects/{project}/commands/set-narrator-name

Needs the editor role · Cost: edit · operationId set-narrator-name

The engine's voice the narrator reads with, by its name.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetNarratorName.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Say how the narrator should sound

POST /api/v1/projects/{project}/commands/set-narrator-description

Needs the editor role · Cost: edit · operationId set-narrator-description

How the narrator should sound, for designing its voice.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetNarratorDescription.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Go back to a narrator voice designed from its description

POST /api/v1/projects/{project}/commands/use-designed-narrator

Needs the editor role · Cost: edit · operationId use-designed-narrator

Go back to a narrator voice designed from its description, from a recording.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

UseDesignedNarrator.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Record the narrator's voice to make it from

POST /api/v1/projects/{project}/commands/set-narrator-clip

Needs the editor role · Cost: edit · operationId set-narrator-clip

A recording of the narrator's voice to clone.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

NarratorClip.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set the seed readings are made with

POST /api/v1/projects/{project}/commands/set-seed

Needs the editor role · Cost: edit · operationId set-seed

The seed readings are made with, so a build can be made again the same.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetSeed.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Pick which of Breeze's loops reads

POST /api/v1/projects/{project}/commands/set-breeze-loop

Needs the editor role · Cost: edit · operationId set-breeze-loop

Which of Breeze's loops reads: its own, or the faster one.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetBreezeLoop.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set how many lines are read at once

POST /api/v1/projects/{project}/commands/set-batch

Needs the editor role · Cost: edit · operationId set-batch

How many lines the voice reads at once.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetBatch.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set whether each reading is heard back to check it

POST /api/v1/projects/{project}/commands/set-check-voices

Needs the editor role · Cost: edit · operationId set-check-voices

Whether each reading is heard back to check its words.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetCheckVoices.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Set how many readings of a line are tried

POST /api/v1/projects/{project}/commands/set-attempts

Needs the editor role · Cost: edit · operationId set-attempts

How many readings of a line are tried before one is kept.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

SetAttempts.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Make an earlier version the project's again

POST /api/v1/projects/{project}/commands/go-back

Needs the owner role · Cost: edit · operationId go-back

Make the version a change left the project's again, as a new change (history.md, HS6): the change by its number in the history. With sentence, only that sentence and those it is read in one go with.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheaderyesstringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

GoBack.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428revision-required: no revision was sent in If-MatchProblem (application/problem+json)

Show a build in the reader

POST /api/v1/projects/{project}/commands/show-build

Needs the editor role · Cost: edit · operationId show-build

Show the build name in the reader, in place of the one shown.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

ShowBuild.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)

Delete a build

POST /api/v1/projects/{project}/commands/delete-build

Needs the owner role · Cost: edit · operationId delete-build

Delete the build name and its files for good; the one the studio shows can't be.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted

Body

DeleteBuild.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)

Export samples to download: takes, a voice's samples or chapters

POST /api/v1/projects/{project}/commands/export-samples

Needs the editor role · Cost: run-costly · Starts a export job · operationId export-samples

Export samples to download: takes of lines, a character's voice samples, or chapters of a build, as audio files with a manifest (export.json, with a credit line), zipped. Audio already made is copied as it is; nothing is rendered, so a line with no take is refused (ask for takes first). A paid use, quoted exactly in audio delivered and accepted first. commercial refuses any sample a paid product may not hold: a voice whose license does not allow it (Breeze's free weights, a model nobody has read), a clean-up model that does not (Sidon), or a person's voice (their consent is not built yet). The export is named by the job; a person downloads it from media/exports/{name}, which agents are never offered.

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-MatchheadernostringThe project's revision the command is made against
Idempotency-Keyheadernostring
dry_runquerynobooleanCheck the command and say what it would touch, changing nothing; the job it starts is quoted
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote

Body

ExportSamples.

Answers

StatusWhat it meansBody
200Made; the revision after it, what it touched and its undoDone
404No such project, job or callProblem (application/problem+json)
409What it touches was changed since its revisionProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

Jobs

Builds, takes, updates and exports: asked for, followed, stopped. See Jobs.

The project's jobs, newest first, a page

GET /api/v1/projects/{project}/jobs

Needs the editor role · operationId list-jobs

Parameters

NameInRequiredTypeAbout
projectpathyesstring
beforequerynostring
limitquerynointeger

Answers

StatusWhat it meansBody
200The jobs, newest first, a page; next is the cursor of the next pageobject
404No such project, job or callProblem (application/problem+json)

Ask for a job; it runs in its turn

POST /api/v1/projects/{project}/jobs

Needs the editor role · Cost: run-costly · operationId ask-job

One call for every kind of job for now; a command per kind replaces it (PA-2's requests)

Parameters

NameInRequiredTypeAbout
projectpathyesstring
Ai1y-Accept-Up-ToheadernostringThe most this costly run may make, accepted by the person after seeing its quote (dry_run): a whole number in the quote's lead unit (x-ai1y-lead). Without it a costly run is refused as accept-required, with the quote
Idempotency-KeyheadernostringThe same key with another body is refused
dry_runquerynobooleanCheck the job and quote it (JobDryRun), asking for nothing

Body

JobAsk.

Answers

StatusWhat it meansBody
202Asked for; it waits its turnJob
200Asked for already with this Idempotency-Key: the job now; or, with dry_run, what it would make and costJob or JobDryRun
404No such project, job or callProblem (application/problem+json)
409command-in-flight: the first is being askedProblem (application/problem+json)
422Refused, with the reasonProblem (application/problem+json)
428accept-required: a costly run sent without Ai1y-Accept-Up-To, with its quoteProblem (application/problem+json)

A job as it is now

GET /api/v1/projects/{project}/jobs/{job}

Needs the editor role · operationId read-job

Parameters

NameInRequiredTypeAbout
projectpathyesstring
jobpathyesstring

Answers

StatusWhat it meansBody
200The jobJob
404No such project or jobProblem (application/problem+json)

Stop a job

POST /api/v1/projects/{project}/jobs/{job}/stop

Needs the editor role · operationId stop-job

Stop a running job, or remove one that waits. An agent stops only the jobs it asked for, which the ledger's job.asked entry names

Parameters

NameInRequiredTypeAbout
projectpathyesstring
jobpathyesstring

Answers

StatusWhat it meansBody
200Stopped, or removed while it waitedStopped
404No such project or jobProblem (application/problem+json)
409job-ended: it has already endedProblem (application/problem+json)

A job's log, its last lines

GET /api/v1/projects/{project}/jobs/{job}/log

Needs the editor role · operationId read-job-log

Parameters

NameInRequiredTypeAbout
projectpathyesstring
jobpathyesstring

Answers

StatusWhat it meansBody
200Its log's last linesobject
404No such project or jobProblem (application/problem+json)

GET /api/v1/jobs/{job}

GET /api/v1/jobs/{job}

Deprecated

Moved under the job's project

Parameters

NameInRequiredTypeAbout
jobpathyesstring

Answers

StatusWhat it meansBody
200The jobJob
404No such project or jobProblem (application/problem+json)

POST /api/v1/jobs/{job}/stop

POST /api/v1/jobs/{job}/stop

Deprecated

Moved under the job's project

Parameters

NameInRequiredTypeAbout
jobpathyesstring

Answers

StatusWhat it meansBody
200Stopped, or removed while it waitedStopped
404No such project or jobProblem (application/problem+json)
409job-ended: it has already endedProblem (application/problem+json)

GET /api/v1/jobs/{job}/log

GET /api/v1/jobs/{job}/log

Deprecated

Moved under the job's project

Parameters

NameInRequiredTypeAbout
jobpathyesstring

Answers

StatusWhat it meansBody
200Its log's last linesobject
404No such project or jobProblem (application/problem+json)

Events

What happens, as it happens. See Following along.

GET /api/v1/projects/{project}/events

GET /api/v1/projects/{project}/events

Parameters

NameInRequiredTypeAbout
projectpathyesstring
Last-Event-IDheadernointeger

Answers

StatusWhat it meansBody
200Server-sent events: first hello ({revision, replayed}, unnumbered), then job (a Job), job-removed ({id}), change ({revision, action, subject}) and command ({action, subject}), each with its numberstring (text/event-stream)
404No such project, job or callProblem (application/problem+json)

Views

Screens of the studio that put many things together, each as the studio reads it.

Everything the studio's screens show

GET /api/v1/projects/{project}/views/studio

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200Everything the studio's screens showobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The book's contents

GET /api/v1/projects/{project}/views/contents

Needs the editor role · operationId view-contents

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The book's contentsobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

A section of the book, line by line

GET /api/v1/projects/{project}/views/sections/{section}

Needs the editor role · operationId view-section

Parameters

NameInRequiredTypeAbout
projectpathyesstring
sectionpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A section of the book, line by lineobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The Timeline of a section

GET /api/v1/projects/{project}/views/timeline/{section}

Needs the editor role · operationId view-timeline

Parameters

NameInRequiredTypeAbout
projectpathyesstring
sectionpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The Timeline of a sectionobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The sentences changed since the book was built

GET /api/v1/projects/{project}/views/fixes

Needs the editor role · operationId view-fixes

Parameters

NameInRequiredTypeAbout
projectpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The sentences changed since the book was builtobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The links between sentences of a part

GET /api/v1/projects/{project}/views/joins/{part}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
partpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The links between sentences of a partobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

A part's changed sentences as they sound now

GET /api/v1/projects/{project}/views/heard-now/{part}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
partpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A part's changed sentences as they sound nowobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

A clip heard cleaned, before the clean-up is set

GET /api/v1/projects/{project}/views/cleanup-preview

Parameters

NameInRequiredTypeAbout
projectpathyesstring
clipquerynostringThe clip
noisequerynostringoff, light or strong
rumblequerynostring1 to cut it
jobquerynostringInstead, what a hear-cleaned job heard: its number
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A clip heard cleaned, before the clean-up is setobject
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

Audio and files

Takes, previews, exports and the book's files.

A take read in one go, heard whole

GET /api/v1/projects/{project}/media/readings/{take}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
takepathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A take read in one go, heard wholestring (binary) (audio/wav)
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

What borrowing a reading would copy

GET /api/v1/projects/{project}/media/lines/{line}/borrow-sources/{source}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
linepathyesstring
sourcepathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200What borrowing a reading would copystring (binary) (audio/wav)
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

A changed sentence as it sounds now

GET /api/v1/projects/{project}/media/heard-now/{version}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
versionpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A changed sentence as it sounds nowstring (binary) (audio/wav)
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The last clean-up preview, as read or cleaned

GET /api/v1/projects/{project}/media/cleanup/{which}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
whichpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200The last clean-up preview, as read or cleanedstring (binary) (audio/wav)
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

A file the studio serves, in ranges

GET /api/v1/projects/{project}/media/files/{folder}/{path}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
folderpathyesstring
pathpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200A file the studio serves, in rangesstring (binary) (*/*)
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

An export's samples, zipped, for a person

GET /api/v1/projects/{project}/media/exports/{export}

Parameters

NameInRequiredTypeAbout
projectpathyesstring
exportpathyesstring
If-None-Matchheadernostring

Answers

StatusWhat it meansBody
200An export's samples, zipped, for a personstring (binary) (application/zip)
304Not modified since the ETag sent
404No such project, job or callProblem (application/problem+json)
422No such project, job or callProblem (application/problem+json)

The ledger

The project's record of jobs, usage and accepts.

GET /api/v1/projects/{project}/ledger/verify

GET /api/v1/projects/{project}/ledger/verify

Parameters

NameInRequiredTypeAbout
projectpathyesstring

Answers

StatusWhat it meansBody
200Whether the project's ledger holdsVerified
404No such project, job or callProblem (application/problem+json)

Schemas

The bodies the operations take and answer with.

CleanupSettings

How one stretch of the voice is cleaned.

PropertyTypeRequiredAbout
noiseNoiseLevelno
rumblebooleanno

ModelName

one of "off", "deepfilternet3", "mossformer2", "sidon".

NoiseLevel

one of "off", "light", "medium", "strong".

JobAsk

Run a job: draft the cast (with Claude, rules alone, or for the narrator alone), make the queued takes, build the book, put a build on Yoto, suggest how lines are said (with Claude, or the rules, CV26), or hear a clip, a take or a voice's first clip cleaned with a model.

PropertyTypeRequiredAbout
kindone of "cast", "takes", "build", "yoto", "directions", "words", "hear-cleaned"yes
howone of "claude", "rules", "narrator"no
buildstring or nullno
iconsbooleanno
updatebooleanno
minutesnumber or nullno
restbooleanno
throughinteger or nullno
keeplist of stringno
clipstring or nullno
takestring or nullno
voicestring or nullno
modelModelName or nullno
noiseCleanupSettings or nullno

ChangeAsk

A change asked for through the API: one the studio's page could ask for, by its name, with the project's revision it was made against.

PropertyTypeRequiredAbout
actionstringyes
changeobjectyes
revisionintegeryes

Changed

PropertyTypeRequiredAbout
revisionintegeryes

ApiBuild

The book a job makes.

PropertyTypeRequiredAbout
namestringyes
made_asMadeAsyes
kept_atstring or nullyes

ApiExport

The samples a job exports, named by the job: a person downloads them, zipped, at media; agents are never offered media.

PropertyTypeRequiredAbout
namestringyes
mediastring or nullyes

ApiMade

What a job made for the customer of one product unit, for one output. A count, never money.

PropertyTypeRequiredAbout
unitstringyes
outputstringyes
countintegeryes
disputedbooleanyes

ApiProgress

PropertyTypeRequiredAbout
stepstringyes
doneintegeryes
totalintegeryes
unitstringyes
seconds_leftnumber or nullyes

ApiUsage

PropertyTypeRequiredAbout
settledbooleanyes
usedlist of ApiUsedyes
madelist of ApiMadeyes

ApiUsed

What a job used of one provider's model, in one unit.

PropertyTypeRequiredAbout
providerstringyes
modelstringyes
unitstringyes
countintegeryes
reportedbooleanyes
disputedbooleanyes

JobId

string.

JobKind

one of "cast", "takes", "build", "yoto", "directions", "words", "hear-cleaned", "export".

JobState

one of "waiting", "running", "done", "failed", "stopped".

MadeAs

one of "whole", "update", "first", "more", "rest", "chapter".

Outcome

one of "succeeded", "failed", "stopped".

Job

A job as the API shows it.

PropertyTypeRequiredAbout
idJobIdyes
projectstringyes
kindJobKindyes
stateJobStateyes
outcomeOutcome or nullyes
titlestringyes
asked_atstringyes
started_atstring or nullyes
ended_atstring or nullyes
whystring or nullyes
last_linestring or nullno
buildApiBuild or nullyes
exportApiExport or nullno
progressApiProgress or nullyes
logstring or nullyes
usageApiUsageyes

Project

PropertyTypeRequiredAbout
idstringyes
namestringyes
revisionintegeryes

Stopped

PropertyTypeRequiredAbout
idJobIdyes
stoppedtrueno

Verified

What checking the project's ledger found (PL-L3).

PropertyTypeRequiredAbout
okbooleanyes
entriesintegeryes
badinteger or nullyes
whystring or nullyes

ApiUndo

The command that undoes one, sent as any other.

PropertyTypeRequiredAbout
commandstringyes
bodyobjectyes
goneanyno
sentencesanyno

Done

A command made.

PropertyTypeRequiredAbout
revisionintegeryes
subjectstring or nullyes
undoApiUndo or nullno

ApiCredits

A quote in credits: at most, and likely when that is known.

PropertyTypeRequiredAbout
mostintegeryes
likelyinteger or nullyes

ApiQuote

What a job would make, in the unit its cap counts, and cost, with nothing asked. A null says it can't be told honestly, and notes say why.

PropertyTypeRequiredAbout
kindJobKindyes
leadstring or nullyes
outputstring or nullyes
mostinteger or nullyes
likelyinteger or nullyes
creditsApiCredits or nullyes
provisionalbooleanyes
noteslist of stringyes
tablestringyes

JobDryRun

A job asked for with ?dry_run=true: checked and refused as asking for it is, and quoted, with nothing asked.

PropertyTypeRequiredAbout
kindJobKindyes
coststringyes
quoteApiQuoteyes
dry_runtrueno

Command

A command, for a program or an agent to find what it can ask.

PropertyTypeRequiredAbout
namestringyes
summarystringyes
coststringyes
startsJobKind or nullyes
rolestringyes
revisionbooleanyes
bodyobjectyes

NewCharacter

Add a character named name to the cast, with how it should sound, which its voice is designed from.

PropertyTypeRequiredAbout
namestringyes
voiceDescriptionstringno

RenameCharacter

Give a character a new name.

PropertyTypeRequiredAbout
idstringyes
namestringyes

DescribeCharacter

Say who a character is, for the cast and the voice it is given.

PropertyTypeRequiredAbout
idstringyes
descriptionstringyes

SetVoiceDescription

Say how a character should sound, for designing its voice.

PropertyTypeRequiredAbout
idstringyes
voiceDescriptionstringyes

SetGroupMembers

Make a character a group said by these characters at once, adding any new ones named; no members makes it one character again.

PropertyTypeRequiredAbout
idstringyes
memberslist of stringyes
newMemberslist of stringno

SetNarratorReads

For a group: whether the narrator reads its lines instead.

PropertyTypeRequiredAbout
idstringyes
narratorReadsbooleanyes

SetGroupSpread

For a group: how loosely its members keep together.

PropertyTypeRequiredAbout
idstringyes
spreadone of "tight", "natural", "loose"yes

SetGroupSync

For a group: whether its members keep in step word by word or over the whole line.

PropertyTypeRequiredAbout
idstringyes
syncone of "words", "line"yes

SetGroupLead

For a group: the member the others follow.

PropertyTypeRequiredAbout
idstringyes
leadstringyes

MemberMixChange

When a member other than the lead starts and how loud it is, each None to draw it from the line within the group's spread.

PropertyTypeRequiredAbout
memberstringyes
delayMsinteger or nullno
volumeinteger or nullno

SetMemberMix

For a group: when one member starts and how loud it is.

PropertyTypeRequiredAbout
idstringyes
memberMixMemberMixChangeyes

RemoveCharacter

Remove the character id from the cast; the narrator reads its lines. A member of a group can't be removed.

PropertyTypeRequiredAbout
idstringyes

CharacterMerge

Give one character's lines to another and remove it.

PropertyTypeRequiredAbout
idstringyes
intostringyes

VoicePick

Use one of a character's voice takes, or with take None, the voice designed from its description again.

PropertyTypeRequiredAbout
idstringyes
takestring or nullno

DiscardTakes

Delete some of a character's voice takes, none of them in use.

PropertyTypeRequiredAbout
idstringyes
takeslist of stringyes

VoiceRecording

A recording of a character's voice, to make a voice take from.

PropertyTypeRequiredAbout
wordsstringyes
datastring (binary)yes
idstringyes

PreviewGroup

Ask for a take of each of the group id's first lines, read by its members at once, to hear it; a line with takes waiting is left as it is.

PropertyTypeRequiredAbout
idstringyes

CastReviewed

The creator has looked at the drafted cast and marks it right.

object.

SetSpeaker

Who says a line; null gives it to the narrator.

PropertyTypeRequiredAbout
keystringyes
speakerstring or nullyes

SetSay

What the voice says for a line, in place of the book's words; null says the book's words again.

PropertyTypeRequiredAbout
keystringyes
saystring or nullyes

SetHow

How a line is said, in words ("whisper it, scared"); null takes that away.

PropertyTypeRequiredAbout
keystringyes
howstring or nullyes

SetSound

A sound that plays in place of a line's words; null takes it away.

PropertyTypeRequiredAbout
keystringyes
soundstring or nullyes

PickTake

The take a line plays; null goes back to the take the build reads.

PropertyTypeRequiredAbout
keystringyes
takestring or nullyes

LineMark

Mark a line to come back to, or take the mark away.

PropertyTypeRequiredAbout
keystringyes
markedbooleanyes

TrimAsk

Cut start_ms from the start and end_ms from the end of the clip a line plays, or with both 0, take its trim away (trimming clips, TM2).

PropertyTypeRequiredAbout
keystringyes
start_msintegeryes
end_msintegeryes

EnvelopeAsk

Make the clip a line plays as loud over its length as points say, (ms into the clip, dB) in order, or with none, take its envelope away (volume-envelope.md, VE2).

PropertyTypeRequiredAbout
keystringyes
pointslist of list of numberyes

PauseAsk

Make the silence after a line's words ms long, in place of the build's own gap there, or with None, the build's own again (pauses.md, PA1).

PropertyTypeRequiredAbout
keystringyes
msinteger or nullyes

CutAsk

Cut the clip a line plays in two (cutting-clips.md, CT2): its audio at ms into the clip, its words before the word starting at at (a code point of its sentence) and from it on.

PropertyTypeRequiredAbout
keystringyes
msintegeryes
atintegeryes

BorrowAsk

Borrow another line's reading of the same words for the line key (borrowed-takes.md, BT4): source as lines/{key}/borrow-sources named it.

PropertyTypeRequiredAbout
keystringyes
sourcestringyes

LineRecording

One line read aloud on the Timeline, cut and made mono in the page, its WAV sent as base64, to keep as a take of the line (recording-voices.md, RV5, RV6).

PropertyTypeRequiredAbout
keystringyes
datastring (binary)yes

HowRecording

A line read aloud in the Fix sheet to show how it goes, made mono in the page, its WAV sent as base64 (delivery-from-recording.md, DR1, DR2).

PropertyTypeRequiredAbout
keystringyes
datastring (binary)yes

HowReadingRef

The creator's reading of a line, to forget.

PropertyTypeRequiredAbout
keystringyes

DiscardLineTakes

Delete some takes of lines, none of them in use.

PropertyTypeRequiredAbout
takeslist of stringyes

JoinAsk

Read a sentence in one go with the one before it (True), apart from it (False), or as the build decides (None).

PropertyTypeRequiredAbout
segmentstringyes
togetherboolean or nullyes
takesmap of stringno

SpokenAsk

Read a sentence aloud (True), or show it and don't read it (False).

PropertyTypeRequiredAbout
segmentstringyes
spokenbooleanyes

GiveWords

Give some words of a sentence to the narrator (narrator) or a character (SF14, splitting lines SL1): a stretch of one segment, in code points, as the Fix sheet picks it or the Lines screen splits a line there.

PropertyTypeRequiredAbout
segmentstringyes
startintegeryes
endintegeryes
speakerstringyes

Envelope

How loud the clip a line plays is over its length, drawn on its waveform on the Timeline (volume-envelope.md, VE2): points of (ms into the clip, dB), the volume going straight from one to the next in dB, and held before the first and after the last. Like a trim, it applies only while the line plays the clip it was drawn on, and the clip itself is never changed.

PropertyTypeRequiredAbout
clipstringyes
pointslist of listyes

SavedLine

A line of the cast file as it was before a split, to put back, with its id (readings.md, RD8).

PropertyTypeRequiredAbout
idstring or nullno
startintegeryes
endintegeryes
speakerstring or nullyes
by_modelbooleanno
saystring or nullno
howstring or nullno
how_byone of "model", "creator" or nullno
soundstring or nullno
takestring or nullno
trimTrim or nullno
envelopeEnvelope or nullno
pause_msinteger or nullno

Trim

What is cut from the start and the end of the clip a line plays, its take or its sound, set on the Timeline (trimming clips, TM2). The clip itself is never changed, so a trim can be changed or taken away; it applies only while the line plays the clip it was set on.

PropertyTypeRequiredAbout
clipstringyes
start_msintegeryes
end_msintegeryes

RestoreLines

Put a sentence's lines back as they were, with the takes of other lines a split set aside picked again: the Undo of a split or of putting lines together. Its clips' volumes and clean-ups, when given, are put back as they were too (readings.md, RD9).

PropertyTypeRequiredAbout
segmentstringyes
lineslist of SavedLineyes
takesmap of stringno
volumeobject or nullno
cleanupobject or nullno
modelsobject or nullno

WordsAsSound

Play a sound in place of some words of the book: a stretch of one segment, in code points.

PropertyTypeRequiredAbout
segmentstringyes
startintegeryes
endintegeryes
soundstringyes

SetClipCleanup

Clean one clip of noise its own way, or as the whole book does (null).

PropertyTypeRequiredAbout
clipstringyes
settingsCleanupSettings or nullyes

SetBookCleanup

How every clip of the book is cleaned of noise, unless it has its own way.

PropertyTypeRequiredAbout
settingsCleanupSettings or nullyes

VolumeAsk

Make a clip louder or quieter, in dB; 0 leaves it as read (clip-volume.md, VL4). The studio makes every other piece of the reading in one go it is a piece of as loud (readings.md, RD4).

PropertyTypeRequiredAbout
clipstringyes
gainDbintegeryes

SetBookCleanupModel

The model every voice of the book is cleaned with, unless a voice, a take or a clip has its own (cleanup-models.md, CM15).

PropertyTypeRequiredAbout
modelModelNameyes

SetVoiceCleanupModel

The model a character's voice, or the narrator's (narrator), is cleaned with, or as the whole book (null).

PropertyTypeRequiredAbout
voicestringyes
modelModelName or nullyes

SetTakeCleanupModel

The model a take is cleaned with, or as its voice (null).

PropertyTypeRequiredAbout
takestringyes
modelModelName or nullyes

SetClipCleanupModel

The model one clip is cleaned with, or as its take or voice (null).

PropertyTypeRequiredAbout
clipstringyes
modelModelName or nullyes

RestoreCleanupModels

Put clean-up models back as they were: the whole book's, when given, and each voice's, take's and clip's named, null for none of its own. The Undo of setting one.

PropertyTypeRequiredAbout
bookModelName or nullno
voicesmap of ModelName or nullno
takesmap of ModelName or nullno
clipsobjectno

QueueLineTakes

Ask for takes of a line, made by the next takes job.

PropertyTypeRequiredAbout
keystringyes
countintegerno

QueueVoiceTakes

Ask for voice takes of a character, to pick its voice from.

PropertyTypeRequiredAbout
idstringyes
countintegerno

SentenceTakesAsk

Takes of one run of a sentence, made now or right after the running job, from the reader's Fix sheet (sentence fixes, SF4).

PropertyTypeRequiredAbout
keystringyes
countintegerno

EveryoneAsk

Voice takes for every character with no voice picked and none to hear.

PropertyTypeRequiredAbout
countintegerno

QueuedRef

Take back the request id for takes, asked for and not made yet.

PropertyTypeRequiredAbout
idstringyes

Respell

Say word as respelling from now on.

PropertyTypeRequiredAbout
wordstringyes
respellingstringyes

Unrespell

Take the respelling of word away, so it is said as written; a suggested one is never suggested again.

PropertyTypeRequiredAbout
wordstringyes

KeepRespelling

Keep the respelling suggested for word as the creator's own.

PropertyTypeRequiredAbout
wordstringyes

WordTakesAsk

Takes of word said as respelling, to hear before it is saved.

PropertyTypeRequiredAbout
wordstringyes
respellingstringyes
countintegerno

NewSound

A recorded sound with its rights, its WAV sent as base64: the file the creator picked, in whatever format, converted in the page, with that file's name and SHA-256.

PropertyTypeRequiredAbout
titlestringyes
sourcestringyes
licensestringyes
authorstringno
originalNamestringno
originalSha256stringno
datastring (binary)yes

SoundRef

A sound in the studio's list, by its name relative to the cast file.

PropertyTypeRequiredAbout
namestringyes

AddBackground

Add a background under some sentences.

PropertyTypeRequiredAbout
soundstringyes
firststringyes
laststringyes
levelone of "quiet", "soft", "medium"no
loopbooleanno
gainDbintegerno
fadeInMsintegerno
fadeOutMsintegerno
risebooleanno
leadMsintegerno
holdMsintegerno

SetBackground

Set everything about a background that is there already.

PropertyTypeRequiredAbout
soundstringyes
firststringyes
laststringyes
levelone of "quiet", "soft", "medium"no
loopbooleanno
gainDbintegerno
fadeInMsintegerno
fadeOutMsintegerno
risebooleanno
leadMsintegerno
holdMsintegerno
idstringyes

BackgroundRef

Remove the background id from under its sentences.

PropertyTypeRequiredAbout
idstringyes

SetEngine

The voice engine the book is read with.

PropertyTypeRequiredAbout
enginestringyes

SetNarratorName

The engine's voice the narrator reads with, by its name.

PropertyTypeRequiredAbout
narratorNamestringyes

SetNarratorDescription

How the narrator should sound, for designing its voice.

PropertyTypeRequiredAbout
narratorDescriptionstringyes

UseDesignedNarrator

Go back to a narrator voice designed from its description, from a recording.

object.

NarratorClip

A recording of the narrator's voice to clone.

PropertyTypeRequiredAbout
wordsstringyes
datastring (binary)yes

SetSeed

The seed readings are made with, so a build can be made again the same.

PropertyTypeRequiredAbout
seedintegeryes

SetBreezeLoop

Which of Breeze's loops reads: its own, or the faster one.

PropertyTypeRequiredAbout
breezeLoopone of "stock", "fast"yes

SetBatch

How many lines the voice reads at once.

PropertyTypeRequiredAbout
batchintegeryes

SetCheckVoices

Whether each reading is heard back to check its words.

PropertyTypeRequiredAbout
checkVoicesbooleanyes

SetAttempts

How many readings of a line are tried before one is kept.

PropertyTypeRequiredAbout
attemptsintegeryes

GoBack

Make the version a change left the project's again, as a new change (history.md, HS6): the change by its number in the history. With sentence, only that sentence and those it is read in one go with.

PropertyTypeRequiredAbout
tointegeryes
sentencestring or nullno

ShowBuild

Show the build name in the reader, in place of the one shown.

PropertyTypeRequiredAbout
namestringyes

DeleteBuild

Delete the build name and its files for good; the one the studio shows can't be.

PropertyTypeRequiredAbout
namestringyes

ExportChapters

Whole parts of one of the studio's builds, as its package has them, by their place in its reading order, from 1.

PropertyTypeRequiredAbout
what"chapters"yes
buildstringyes
chapterslist of integeryes

ExportLines

The take each of these lines plays now, in the order given.

PropertyTypeRequiredAbout
what"lines"yes
keyslist of stringyes

ExportVoice

The lines a character's voice take in use was made reading.

PropertyTypeRequiredAbout
what"voice"yes
characterstringyes

ExportSamples

Export samples to download: takes of lines, a character's voice samples, or chapters of a build, as audio files with a manifest (export.json, with a credit line), zipped. Audio already made is copied as it is; nothing is rendered, so a line with no take is refused (ask for takes first). A paid use, quoted exactly in audio delivered and accepted first. commercial refuses any sample a paid product may not hold: a voice whose license does not allow it (Breeze's free weights, a model nobody has read), a clean-up model that does not (Sidon), or a person's voice (their consent is not built yet). The export is named by the job; a person downloads it from media/exports/{name}, which agents are never offered.

PropertyTypeRequiredAbout
samplesExportLines or ExportVoice or ExportChaptersyes
formatone of "wav", "m4a"no
useone of "personal", "commercial"no

Problem

RFC 9457: act on type and next; detail is for a person

PropertyTypeRequiredAbout
typeone of "https://ai1y.co/problems/not-found", "https://ai1y.co/problems/invalid-body", "https://ai1y.co/problems/cannot-run", "https://ai1y.co/problems/idempotency-key-reused", "https://ai1y.co/problems/revision-required", "https://ai1y.co/problems/stale-revision", "https://ai1y.co/problems/job-ended", "https://ai1y.co/problems/command-in-flight", "https://ai1y.co/problems/accept-required", "https://ai1y.co/problems/forbidden", "https://ai1y.co/problems/too-large", "https://ai1y.co/problems/failed"yes
titlestringyes
statusintegeryes
detailstringyes
nextstringyesWhat to do next: one fixed sentence for each type
kindone of "transient", "refused", "fatal", "invariant"yesWho acts: transient (try again after Retry-After), refused (change something first), fatal (this can't go on), invariant (a bug: tell the person)
retryablebooleanyesWhether sending it again, after Retry-After, may succeed
codestringnoOnly when an error of ai1y's named it: its stable code
saidstringnoThe refusal in the person's own words, for their page: it may hold the book's text or a file's name
revisionintegernoOnly in stale-revision: the project's revision now
subjectstring or nullnoOnly in stale-revision: what was changed, to read again
quoteobject or nullnoOnly in accept-required: what the run would make and cost (a Quote), to show the person before they accept