Fills in an artist's Audora profile, tracks, albums, credits and release drafts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add a post to a campaign on one lane and day, as Promo's + does, with its words, the angle they take and a picture or video from the Library if you have them. It is a post on its own, not part of a moment, and a draft until it is scheduled.
The day it goes out, YYYY-MM-DD, inside the campaign's window. A draft may be saved with a day gone by; Schedule asks for one still ahead (schedule_check says so).
Where it goes.
From list_campaigns.
The time it goes out, HH:MM 24-hour, in the artist's own time zone.
Which of Audora's post angles the words take (the key names it: listener_pov is the listener's side of the song, tail_section a part of the track no other post used, hook_object an object the song names, and so on). Audora counts how each angle does for the artist, and promo_results' what_works shows the result. get_campaign shows each post's angle.
Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.
The words of the post, as they will be published. The lane's limit and Audora's text rules apply (no placeholders, nothing that points back at another post).
True to check the call and see what it would do, without writing anything.
Up to 12 hashtags, with or without #. Replaces the list.
A web address the post links to, or null to remove it.
A picture (for a picture post) or a video (for a video post) already in the artist's Library, by its media asset id. Audora does not make pictures or videos through this connection.
Send the same key if you retry, and the change happens once.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Add a post to a campaign on one lane and day, as Promo's + does, with its words, the angle they take and a picture or video from the Library if you have them. It is a post on its own, not part of a moment, and a draft until it is scheduled.
| Argument | Type | Description |
|---|---|---|
| date* | string | The day it goes out, YYYY-MM-DD, inside the campaign's window. A draft may be saved with a day gone by; Schedule asks for one still ahead (schedule_check says so). |
| lane* | string | Where it goes. |
| time | string | The time it goes out, HH:MM 24-hour, in the artist's own time zone. |
| angle | string | Which of Audora's post angles the words take (the key names it: listener_pov is the listener's side of the song, tail_section a part of the track no other post used, hook_object an object the song names, and so on). Audora counts how each angle does for the artist, and promo_results' what_works shows the result. get_campaign shows each post's angle. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| caption | string | The words of the post, as they will be published. The lane's limit and Audora's text rules apply (no placeholders, nothing that points back at another post). |
| dry_run | boolean | True to check the call and see what it would do, without writing anything. |
| hashtags | array | Up to 12 hashtags, with or without #. Replaces the list. |
| link_url | string | null | A web address the post links to, or null to remove it. |
| campaign_id* | string | From list_campaigns. |
| media_asset_id | string | A picture (for a picture post) or a video (for a video post) already in the artist's Library, by its media asset id. Audora does not make pictures or videos through this connection. |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"campaign_id",
"lane",
"date"
],
"properties": {
"date": {
"type": "string",
"description": "The day it goes out, YYYY-MM-DD, inside the campaign's window. A draft may be saved with a day gone by; Schedule asks for one still ahead (schedule_check says so)."
},
"lane": {
"enum": [
"instagram",
"story",
"facebook",
"tiktok",
"youtube"
],
"type": "string",
"description": "Where it goes."
},
"time": {
"type": "string",
"description": "The time it goes out, HH:MM 24-hour, in the artist's own time zone."
},
"angle": {
"enum": [
"pin_angle.hook_object",
"pin_angle.listener_pov",
"pin_angle.lyric_line_on_beat",
"pin_angle.occasion_day",
"pin_angle.one_answerable_question",
"pin_angle.ordinary_scene_contrast",
"pin_angle.place_light_and_weather",
"pin_angle.place_named_in_words",
"pin_angle.release_fact_card",
"pin_angle.repeat_what_worked",
"pin_angle.scene_vocabulary",
"pin_angle.show_coming_up",
"pin_angle.story_line_that_nearly_went",
"pin_angle.story_place",
"pin_angle.tail_section",
"pin_angle.uploaded_asset_hero"
],
"type": "string",
"description": "Which of Audora's post angles the words take (the key names it: listener_pov is the listener's side of the song, tail_section a part of the track no other post used, hook_object an object the song names, and so on). Audora counts how each angle does for the artist, and promo_results' what_works shows the result. get_campaign shows each post's angle."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"caption": {
"type": "string",
"description": "The words of the post, as they will be published. The lane's limit and Audora's text rules apply (no placeholders, nothing that points back at another post)."
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would do, without writing anything."
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 12 hashtags, with or without #. Replaces the list."
},
"link_url": {
"type": [
"string",
"null"
],
"description": "A web address the post links to, or null to remove it."
},
"campaign_id": {
"type": "string",
"description": "From list_campaigns."
},
"media_asset_id": {
"type": "string",
"description": "A picture (for a picture post) or a video (for a video post) already in the artist's Library, by its media asset id. Audora does not make pictures or videos through this connection."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}Send the ARTIST'S answer to a question Audora asked about their release (see get_release_questions). Ask the artist and relay what they say. Never answer for them and never guess: an answer can be a statement about rights or ownership that Audora relies on. Audora is told it came through their assistant. The release status does not change; Audora reads the answer and moves the release on.
| Argument | Type | Description |
|---|---|---|
| answer* | string | The artist's answer, in their words. Up to 4000 characters. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| dry_run | boolean | True to check the question is open, without sending anything. |
| release_id* | string | |
| idempotency_key | string | Send the same key if you retry, and the answer is sent once. |
{
"type": "object",
"required": [
"release_id",
"answer"
],
"properties": {
"answer": {
"type": "string",
"description": "The artist's answer, in their words. Up to 4000 characters."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"dry_run": {
"type": "boolean",
"description": "True to check the question is open, without sending anything."
},
"release_id": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the answer is sent once."
}
},
"additionalProperties": false
}Cancel one of the artist's events. Everyone invited or coming is told. Artist connections only.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| event_id* | string | |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"event_id": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}The latest import (or the one named): how many records are in, and each record's outcome.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| job_id | string |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"job_id": {
"type": "string"
}
},
"additionalProperties": false
}For one track or one album: everything Audora still needs before that release could be submitted, and anything worth a second look that does not block it. That includes the stores' intake rules, checked against the uploaded master and cover themselves (a stereo WAV, FLAC or Apple Lossless master at a rate the stores take; square RGB JPG 3000–6000 px). Call this after writing, and again before telling the artist something is ready.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| album_id | string | Check an album or EP. Give this or track_id, not both. |
| track_id | string | Check a single. Give this or album_id, not both. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"album_id": {
"type": "string",
"description": "Check an album or EP. Give this or track_id, not both."
},
"track_id": {
"type": "string",
"description": "Check a single. Give this or album_id, not both."
}
},
"additionalProperties": false
}Close one to-do the artist does not want to see, exactly as closing it in Audora does: it comes back by itself when what it is about changes. A track's or album's missing details are not closed: they are fixed.
| Argument | Type | Description |
|---|---|---|
| key* | string | The to-do's key, from list_todos. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "The to-do's key, from list_todos."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}"That's me": record the candidates the ARTIST said are theirs (a catalog can be split across pages). Only ids find_my_music offered. Ask the artist. Never confirm on a guess.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| deezer_ids* | array | The candidates' ids the artist picked. |
| idempotency_key | string | Send the same key if you retry, and it happens once. |
{
"type": "object",
"required": [
"deezer_ids"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"deezer_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "The candidates' ids the artist picked."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and it happens once."
}
},
"additionalProperties": false
}Create an album or EP. Put tracks on it afterward with set_album_tracks.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| fields* | object | The fields to set, by the `name` get_requirements gives each one. |
| dry_run | boolean | True to check the call and see what it would replace, without writing anything. |
| idempotency_key | string | Send the same key if you retry, and the create happens once. |
{
"type": "object",
"required": [
"fields"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"fields": {
"type": "object",
"description": "The fields to set, by the `name` get_requirements gives each one.",
"additionalProperties": true
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would replace, without writing anything."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the create happens once."
}
},
"additionalProperties": false
}Create a track from its metadata. The audio and the cover art are uploaded separately. Pass idempotency_key if you might retry, so a timeout does not leave two tracks.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| fields* | object | The fields to set, by the `name` get_requirements gives each one. |
| dry_run | boolean | True to check the call and see what it would replace, without writing anything. |
| idempotency_key | string | Send the same key if you retry, and the create happens once. |
{
"type": "object",
"required": [
"fields"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"fields": {
"type": "object",
"description": "The fields to set, by the `name` get_requirements gives each one.",
"additionalProperties": true
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would replace, without writing anything."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the create happens once."
}
},
"additionalProperties": false
}Audora can design a logo, cover art, brand colors and typefaces, artist photos, and promotion posts and short videos for the artist. Those are made inside Audora, not through this connection: call this to get the exact page to send the artist to, with a sentence on what they will find there. Use it whenever the artist wants a logo, artwork, a cover, visuals, photos or promo video made.
| Argument | Type | Description |
|---|---|---|
| what* | string | |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| album_id | string | For cover_art on an album or EP. |
| track_id | string | For cover_art on a single. |
{
"type": "object",
"required": [
"what"
],
"properties": {
"what": {
"enum": [
"logo",
"cover_art",
"palette",
"typography",
"artist_photos",
"promotion"
],
"type": "string"
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"album_id": {
"type": "string",
"description": "For cover_art on an album or EP."
},
"track_id": {
"type": "string",
"description": "For cover_art on a single."
}
},
"additionalProperties": false
}Audora reads the file you uploaded (the file itself, not its name) and attaches it only if it meets the upload spec. A master that is secretly an MP3, or a cover that is not square or is under 3000 pixels, is refused here and the file is removed. Passing here is not the same as being releasable: a release also needs a stereo master and a square RGB JPG cover of 3000–6000 px, which check_readiness reports on.
| Argument | Type | Description |
|---|---|---|
| name | string | A short name, for an artist image. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| upload_id* | string |
{
"type": "object",
"required": [
"upload_id"
],
"properties": {
"name": {
"type": "string",
"description": "A short name, for an artist image."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"upload_id": {
"type": "string"
}
},
"additionalProperties": false
}Find which artist on Deezer (and Apple Music) is this artist, to bring their released records in: the confirmed one, or candidates to show the artist. A link to their music (Deezer, Spotify or Apple, artist or record) searches from that instead of the name.
| Argument | Type | Description |
|---|---|---|
| link | string | Optional: a link to the artist's music. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"link": {
"type": "string",
"description": "Optional: a link to the artist's music."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}Runs Audora's own lookup of what the artist has already published (streaming profiles, releases, their site and social profiles), or reads where one is and what it found. Use it only when you cannot search the web yourself: otherwise look the artist up with your own search, check with them that you found the right artist, and fill their page with update_profile. With action "start" it begins one, which takes 1–2 minutes; the artist gets a few a day, shared with Soundcheck in Audora. The account's first lookup is free and each later one costs credits and needs the artist's spend permission: start with dry_run: true to read the price, tell the artist, then start with confirm_cost_credits. With action "status" (the default) it reads the newest lookup, or the one named by run_id. Every fact comes with the pages it was read on. It never changes the artist's profile: when it is done, call propose_profile so the artist keeps what is theirs in Audora.
| Argument | Type | Description |
|---|---|---|
| link | string | For start: one page the artist is on (Apple Music, Deezer, SoundCloud, YouTube, Bandcamp, their site, Instagram), as a full https:// address. It is the best starting point. A Spotify link is kept as theirs but never opened, so another page starts the lookup better. |
| action | string | "start" a new lookup, or read its "status". Default: status. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| not_me | array | For start: names of earlier matches the artist said are not them. |
| run_id |
One campaign as Promo's calendar: every post by day and lane, with its words, hashtags, picture or video, status, and schedule_check: exactly what Audora's Schedule would decide about it now, and in the artist's words what it still needs.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| campaign_id* | string | From list_campaigns. |
{
"type": "object",
"required": [
"campaign_id"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"campaign_id": {
"type": "string",
"description": "From list_campaigns."
}
},
"additionalProperties": false
}The plan, whether distribution is included, credits remaining, and the track, album and storage allowances. Check before uploading or preparing a submission.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}The artist profile as Audora holds it.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}Questions Audora's reviewers asked about the artist's releases (for example, whether the rights to a remix are cleared), with the whole conversation. A release with an unanswered question does not go out until the artist answers. Omit release_id for every open question.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| release_id | string | One release, including a closed conversation. Omit for all open questions. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"release_id": {
"type": "string",
"description": "One release, including a closed conversation. Omit for all open questions."
}
},
"additionalProperties": false
}Every field Audora needs, with its exact limit in characters or words, the closed list to choose from where there is one, and the accepted file formats and sizes. Call this BEFORE filling anything in. The limits differ per field: some are refused when exceeded and some only flagged. What blocks a release is set by Audora, and it changes.
| Argument | Type | Description |
|---|---|---|
| entity | string | Narrow to one kind of thing. Omit for everything. |
| release_type | string | Narrow to the fields this kind of release needs. An album needs more than a single. |
{
"type": "object",
"required": [],
"properties": {
"entity": {
"enum": [
"artist",
"track",
"track_artist",
"contributor",
"album",
"release",
"split",
"files"
],
"type": "string",
"description": "Narrow to one kind of thing. Omit for everything."
},
"release_type": {
"enum": [
"single",
"ep",
"album",
"compilation"
],
"type": "string",
"description": "Narrow to the fields this kind of release needs. An album needs more than a single."
}
},
"additionalProperties": false
}Streams, saves and growth per track, which stores and playlists the listening comes from, TikTok use, the audience's age and gender, how the artist's promotion posts performed, and their followers. For the whole catalog, when the artist has connected their own Songstats account, it also gives their numbers across the web (listeners, followers, playlist reach, socials, Shazam, charts), the cities they are listened to in now, the playlists carrying them and dated events. The same numbers the artist sees in Audora. Use it to answer "how is my release doing", to write a pitch or bio from real numbers, or to suggest where to focus next. When a figure is missing, say "not reported yet", never zero.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| album_id | string | Every track on one album or EP. |
| track_id | string | One track. Leave out both ids for the whole catalog, which also includes posts, followers and audience. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"album_id": {
"type": "string",
"description": "Every track on one album or EP."
},
"track_id": {
"type": "string",
"description": "One track. Leave out both ids for the whole catalog, which also includes posts, followers and audience."
}
},
"additionalProperties": false
}One track with its billed artists and its song credits.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| track_id* | string | The track's id, from list_tracks. |
{
"type": "object",
"required": [
"track_id"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"track_id": {
"type": "string",
"description": "The track's id, from list_tracks."
}
},
"additionalProperties": false
}Start bringing the chosen records into the catalog, within the plan's room. Covers come in only when the artist said they are theirs to use (rights_confirmed: true, their own words, recorded as their consent); otherwise every record comes in with its codes and the cover is left to upload.
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| idempotency_key | string | Send the same key if you retry, and it happens once. |
| rights_confirmed | boolean | Only true when the artist said the covers are theirs to use. |
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"deezer_album_id",
"include"
],
"properties": {
"include": {
"type": "boolean"
},
"deezer_album_id": {
"type": "string"
}
}
}
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and it happens once."
},
"rights_confirmed": {
"type": "boolean",
"description": "Only true when the artist said the covers are theirs to use."
}
},
"additionalProperties": false
}Bring a skipped post, or one that did not go out, back as a draft to schedule. A draft is already kept.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| post_id* | string | The post's id (post_id from get_campaign or promo_this_week). |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"post_id"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"post_id": {
"type": "string",
"description": "The post's id (post_id from get_campaign or promo_this_week)."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}Every album in this account, newest first.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}Every Promo campaign in this account, with its window, whether it is ahead, running or over, and how many posts are to look at, scheduled, posted or did not go out. A release's campaign is kind release; between releases a campaign is a month (kind between_releases), and none starts by itself: start_campaign with between_releases plans the next one. Also lists upcoming releases that have no campaign yet, and campaigns being planned right now.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}The shows, release parties and listening parties the artist has posted, with who is invited and who is coming, and their drafts (saved, not posted, seen by nobody else). Artist connections only: Scene is between artists.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}The artist's pictures or videos in Audora's Library, newest first, searchable by name and filterable by category (Brand kit, Logo, Cover art, Promo, a platform, Generated, Uploaded, Stock footage). Each has a media_asset_id (what update_post takes) and a preview link valid for an hour.
| Argument | Type | Description |
|---|---|---|
| kind | string | Pictures (default) or videos. |
| limit | integer | |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| offset | integer | |
| search | string | Words in the item's name, or the artist, track or album it belongs to. |
| categories | array | Only items in every one of these. |
{
"type": "object",
"required": [],
"properties": {
"kind": {
"enum": [
"images",
"videos"
],
"type": "string",
"description": "Pictures (default) or videos."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"offset": {
"type": "integer",
"minimum": 0
},
"search": {
"type": "string",
"description": "Words in the item's name, or the artist, track or album it belongs to."
},
"categories": {
"type": "array",
"items": {
"enum": [
"branding",
"logo",
"cover-art",
"promo",
"tiktok",
"instagram",
"youtube",
"facebook",
"ai-generated",
"uploaded",
"stock"
],
"type": "string"
},
"description": "Only items in every one of these."
}
},
"additionalProperties": false
}With release_id: the release's "Around the release" checklist (pitch, pre-save, Canvas, lyrics, release day and the weeks after), each with when it is due, why, where it is done and whether it is done. Without: the artist's "Set up once" list (Instagram ready to post, photos and clips for the posts, claiming the store profiles, the bio link).
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| release_id | string | The release (list_releases). Leave out for "Set up once". |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"release_id": {
"type": "string",
"description": "The release (list_releases). Leave out for \"Set up once\"."
}
},
"additionalProperties": false
}Every release in this account with where it has reached (status_label: Draft, Submitted, Changes asked, Going to the stores, Ready for release day, Live, Rejected, Takedown asked, Taken down, Released elsewhere), including anything Audora asked about.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}Every open to-do the artist sees on their pages, most urgent first: what it is, how urgent, where it is fixed and the tool that fixes it from here. Each has a key; closable says whether close_todo can close it.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}Every track in this account, newest first.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}The records of the confirmed artist, newest first and 50 a page, with their codes, date and type, matched against the catalog: new, already in the catalog, or in conflict with another account. total says how many there are in all. Also the plan's room for songs and albums.
| Argument | Type | Description |
|---|---|---|
| page | integer | Optional: which page, 0 the newest (the default). |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| deezer_album_ids | array | Optional: only these records. |
{
"type": "object",
"required": [],
"properties": {
"page": {
"type": "integer",
"minimum": 0,
"description": "Optional: which page, 0 the newest (the default)."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"deezer_album_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional: only these records."
}
},
"additionalProperties": false
}The posts that went out, best first, with their latest reach, likes, comments, shares, saves and views, the totals over the window, and the followers on each connected account. A missing number is not reported yet, never zero. what_works: per platform, the angles and posting hours that have beaten the artist's usual most often, from their own posts only, with how many posts each rests on.
| Argument | Type | Description |
|---|---|---|
| days | number | How far back, 1–365 days. Default 90. |
| limit | number | How many posts to list, 1–50. Default 10. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"days": {
"type": "number",
"description": "How far back, 1–365 days. Default 90."
},
"limit": {
"type": "number",
"description": "How many posts to list, 1–50. Default 10."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}What goes out in the next days across every campaign, what in that time is not scheduled yet (and so will not go out unless it is), and what did not go out lately and needs the artist.
| Argument | Type | Description |
|---|---|---|
| days | number | How many days ahead, 1–14. Default 7. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"days": {
"type": "number",
"description": "How many days ahead, 1–14. Default 7."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}Puts a finished find_online lookup in front of the artist in Audora and returns the link to it. The artist confirms it is them and keeps what is right there. This call writes nothing to their profile, and you should not copy the findings into update_profile yourself. Their Home says their assistant found something to look at.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| run_id | string | The lookup to propose. Default: the newest. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"run_id": {
"type": "string",
"description": "The lookup to propose. Default: the newest."
}
},
"additionalProperties": false
}Call this whenever the artist asks for something there is no tool for, or a tool refuses in a way you cannot work around. It files the ask in Audora's support inbox, where a person reads it, and it shows in the artist's Settings › Support. Call it before you tell the artist no. It changes nothing in their catalog, and it is the only way the ask reaches anyone.
| Argument | Type | Description |
|---|---|---|
| note | string | Anything that would help Audora understand the ask. |
| asked_for* | string | What the artist wanted, in their own words as far as you can keep them. |
| tool_tried | string | The tool you tried or looked for, if there was one. |
{
"type": "object",
"required": [
"asked_for"
],
"properties": {
"note": {
"type": "string",
"description": "Anything that would help Audora understand the ask."
},
"asked_for": {
"type": "string",
"description": "What the artist wanted, in their own words as far as you can keep them."
},
"tool_tried": {
"type": "string",
"description": "The tool you tried or looked for, if there was one."
}
},
"additionalProperties": false
}Ask for a one-time address to upload a master, cover art, a logo or an artist photo to. You need the file's NAME, nothing else. Never ask the artist how big a file is. PUT the file to the address you get back, then call finalize_upload, which reads the file itself and checks the size, the format and the account's storage against it.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| bytes | number | Optional. The size in bytes, IF you already know it: it saves a doomed upload. Never ask anyone for it. The server measures the file when it arrives. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| album_id | string | |
| filename* | string | The file's own name, with its extension. Audio is .wav, .flac or .m4a (Apple Lossless); images are .png, .jpg or .webp. A release going out through Audora needs a stereo master and a .jpg cover (square, 3000–6000 px, RGB). Other images upload but cannot be a release cover. |
| track_id | string | Required for audio; for cover art, give this or album_id. |
| mime_type | string |
Save the artist's own show, release party or listening party, or change one (pass event_id). It is saved as a DRAFT that only the artist sees, with whatever is known (only kind is needed), unless you pass post: true. Posting puts it on Scene for artists on Audora (and on the public page when is_public) and needs a title, starts_at and a place: a city and a country, and/or an online link. Post only when the artist asked for it to go out. An event already posted stays posted, so its changes need the same. Inviting artists or Audora stays the artist's to do in Audora; an edit keeps what they chose. Artist connections only.
| Argument | Type | Description |
|---|---|---|
| post | boolean | true puts it on Scene now (needs title, starts_at and a place). Leave out to save a draft. |
| event* | object | |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| event_id | string | To change one; leave out to save a new one. |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"event"
],
"properties": {
"post": {
"type": "boolean",
"description": "true puts it on Scene now (needs title, starts_at and a place). Leave out to save a draft."
},
"event": {
"type": "object",
"required": [
"kind"
],
"properties": {
"city": {
"type": [
"string",
"null"
]
},
"kind": {
"enum": [
"show",
"release_party",
"listening_party"
],
"type": "string"
},
"line": {
"type": [
"string",
"null"
],
"description": "One line about it, in the artist's words."
},
"title": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
],
"description": "The country's name as Audora's country list writes it (get_requirements has the list), e.g. Sweden."
},
"ends_at": {
"type": [
"string",
"null"
],
"description": "ISO date and time, or null."
},
"is_public": {
"type": "boolean",
"description": "Show it on the artist's public page once posted. Defaults: on for a show, off for a party."
},
"starts_at": {
"type": "string",
"description": "ISO date and time."
},
"time_zone": {
"type": "string",
"description": "IANA zone where it happens, e.g. Europe/Stockholm. Needed with starts_at."
},
"online_url": {
"type": [
"string",
"null"
],
"description": "https link, for one online."
},
"release_id": {
"type": [
"string",
"null"
],
"description": "A party for one of the artist's releases (once it is out)."
},
"ticket_url": {
"type": [
"string",
"null"
],
"description": "https link to tickets or info."
},
"venue_name": {
"type": [
"string",
"null"
]
}
}
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"event_id": {
"type": "string",
"description": "To change one; leave out to save a new one."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}Write the release details for a track or album as a DRAFT. A draft costs nothing, can be changed and goes nowhere until the artist says so. Returns a draft_hash identifying exactly what you prepared, and release_rules: everything the track or album still needs to meet the stores' rules (master format, cover, sub-genre, languages, countries, performer roles) before it can be submitted. An older track or album usually needs some of it. A draft saves even when it is unfinished: a release date sooner than the stores take is saved and comes back in `warnings`, and submitting refuses it until it is changed.
| Argument | Type | Description |
|---|---|---|
| type* | string | |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| item_id* | string | The track's or album's id. |
| release | object | The release fields, by the names get_requirements(entity: "release") gives them, for example { "release_type": "single", "scheduled_date": "2026-11-20", "description": "...", "pitching_directly": "...", "release_timeline": "...", "artist_quotes": "..." }. Add "splits" for royalty splits. Send only what you are setting. |
{
"type": "object",
"required": [
"type",
"item_id"
],
"properties": {
"type": {
"enum": [
"track",
"album"
],
"type": "string"
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"item_id": {
"type": "string",
"description": "The track's or album's id."
},
"release": {
"type": "object",
"description": "The release fields, by the names get_requirements(entity: \"release\") gives them, for example { \"release_type\": \"single\", \"scheduled_date\": \"2026-11-20\", \"description\": \"...\", \"pitching_directly\": \"...\", \"release_timeline\": \"...\", \"artist_quotes\": \"...\" }. Add \"splits\" for royalty splits. Send only what you are setting.",
"additionalProperties": true
}
},
"additionalProperties": false
}Send Audora feedback it will read, as one of these kinds. missing_capability: a change you would need to do what the artist wants. connector_improvement: how this connector could work better for an assistant, such as a confusing tool, a missing field or a result that did not tell you enough. product_improvement: how Audora itself could serve artists better. bug: something that looks broken. other: anything else. It goes into Audora's support inbox and shows in the artist's Settings › Support, so write it for a person: what you were trying to do, what got in the way and what would have helped. Use it when you notice something worth fixing. You do not need the artist's permission, but set artist_asked to true when the artist asked for it. For a plain "there is no tool for that", report_gap is enough.
| Argument | Type | Description |
|---|---|---|
| kind* | string | What this is about. |
| tool | string | The tool this is about, if it is about one. |
| details* | string | What you or the artist were trying to do, what got in the way and the change that would have helped. Up to 5000 characters. No passwords, tokens or other secrets. |
| summary* | string | One line someone at Audora can triage from. Up to 120 characters. |
| artist_asked | boolean | True when the artist asked for this or said it; false or omitted when it is your own observation. |
Put these tracks on this album, in this order. Replaces whatever was on it. A track left out is taken off the album, not deleted.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| dry_run | boolean | True to check the call and see what it would replace, without writing anything. |
| album_id* | string | |
| track_ids* | array | In running order. |
{
"type": "object",
"required": [
"album_id",
"track_ids"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would replace, without writing anything."
},
"album_id": {
"type": "string"
},
"track_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "In running order."
}
},
"additionalProperties": false
}Switch a release on or off the list other artists on Audora see on release day, to give it a first listen. Refused for a release out more than four weeks ago or released elsewhere.
| Argument | Type | Description |
|---|---|---|
| on* | boolean | |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| release_id* | string | From list_releases. |
| idempotency_key | string | Send the same key if you retry, and it happens once. |
{
"type": "object",
"required": [
"release_id",
"on"
],
"properties": {
"on": {
"type": "boolean"
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"release_id": {
"type": "string",
"description": "From list_releases."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and it happens once."
}
},
"additionalProperties": false
}Mark one checklist item done, or not done again: the tick in Audora.
| Argument | Type | Description |
|---|---|---|
| done* | boolean | |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| todo_id* | string | From list_release_todos. |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"todo_id",
"done"
],
"properties": {
"done": {
"type": "boolean"
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"todo_id": {
"type": "string",
"description": "From list_release_todos."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}Replace the OTHER artists a track is billed to: the "Artist & Guest feat. Guest" line on every store. The account's own artist is always billed first and cannot be removed. Do not send it (a name equal to it is dropped, never printed twice). Send the others in billing order. `primary` and `with` join the main credit after the account's artist; `featured` and `remixer` become the "feat." part. Another `primary` artist is a collaboration: ask the artist whether they have all the rights needed for it, and send rights_confirmed: true only when they say yes. Without it the call is refused and nothing is written. `featured`, `with` and `remixer` need no confirmation. Optional: a track with none is billed to the artist profile's own name. The songwriter, performer and producer credits are a different list, set with set_track_credits.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| artists* | array | The artists besides the account's own, in billing order. An empty list clears the billing back to the artist's own name. |
| dry_run | boolean | True to check the call and see what it would replace, without writing anything. |
| track_id* | string | |
| rights_confirmed | boolean | Required as true when the list has a `primary` artist besides the account's own. Ask the artist first, in these words: "I have all the rights needed for this collaboration". Send true only when they confirm it. Never assume it: it is recorded as their legal confirmation. |
Replace a track's song credits with this list. Every track needs at least one songwriter, one performer and one producer before its release can be submitted. These are real people: ask the artist, and never invent a name to satisfy the requirement.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| credits* | array | Each entry: name, role (songwriter | performer | producer). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. "Vocals - Lead Vocals"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument. |
| dry_run | boolean | True to check the call and see what it would replace, without writing anything. |
| track_id* | string |
{
"type": "object",
"required": [
"track_id",
"credits"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"credits": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Each entry: name, role (songwriter | performer | producer). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument."
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would replace, without writing anything."
},
"track_id": {
"type": "string"
}
},
"additionalProperties": false
}Skip a post so it does not go out. It stays on the campaign and keep_post brings it back. Skipping a post that is already scheduled takes it out of the queue and returns its posting credit, and needs the schedule permission.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| post_id* | string | The post's id (post_id from get_campaign or promo_this_week). |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"post_id"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"post_id": {
"type": "string",
"description": "The post's id (post_id from get_campaign or promo_this_week)."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}Start a campaign for an upcoming release, or a month between releases (between_releases: true, from tomorrow; none starts by itself, so start the next month the same way when one ends). A release already out gets no campaign of its own: its start is made between releases with its song first (the answer says between_releases: true). Audora writes the campaign (every post's day, time, words and what picture or video it needs) at a price that grows with its size (2 a week is the least, Every day the most; the dry run's quote.plan says it), charged when it starts and returned if the plan fails; starting it needs the artist's spend permission. Nothing is made: fill each post from the artist's Library with update_post, or have Audora make one with make_posts (priced then). A campaign is planned in moments: one video or picture posted the same day on every connected account it fits, with words for each account. Each moment costs 1 credit to go out, all its accounts included, only when it is scheduled. The answers about the song (the_story, key_lyrics, key_moments, what_works, sonic_references, note) are the Start panel's: optional, filled from what Audora knows when left out, and they turn on posts that use them. A release (or the time between releases) can run several campaigns at once, each with its own language, lead market and accounts; one that would copy a live campaign in all three is refused (a dry run's quote.duplicate_of names it, quote.live_campaigns lists them). Planned posts fit around the posts other campaigns already have on the same accounts: one video and one picture a day per account. Use dry_run first to see the posts, the price and those answers (quote.answers), tell the artist, then start with confirm_cost_credits.
| Argument | Type | Description |
|---|---|---|
| note | string | Optional, ≤ 200 characters: "Anything we should know?", anything else the planner should know, in the artist's words. Left out: the last campaign's for this release, if any. |
| size* | string | How often: light is 2 moments a week, steady 4 a week, loud every day (a video moment and a picture moment each day, so every account posts every day). A release campaign runs 5 weeks before release day and 2 after (49 days: light 14 moments, steady 28, loud 98), its moments climbing toward release day; between releases a month (30 days: light 9, steady 17, loud 60). A release closer than 5 weeks has fewer days and so fewer moments. The dry run quotes the exact moments and posts. |
Amend an album's details. Refused once its release has been submitted.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| fields* | object | The fields to set, by the `name` get_requirements gives each one. |
| dry_run | boolean | True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote. |
| album_id* | string |
{
"type": "object",
"required": [
"album_id",
"fields"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"fields": {
"type": "object",
"description": "The fields to set, by the `name` get_requirements gives each one.",
"additionalProperties": true
},
"dry_run": {
"type": "boolean",
"description": "True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote."
},
"album_id": {
"type": "string"
}
},
"additionalProperties": false
}Change a post's words, hashtags, link, day, time, its picture or video (from the Library), or the angle its words take. Send only what changes. Returns the post with schedule_check: what Schedule would decide now. A post already scheduled can be changed only with the schedule permission; one already handed to its platform's own schedule (Facebook, YouTube) or one that went out cannot be changed here.
| Argument | Type | Description |
|---|---|---|
| date | string | The day it goes out, YYYY-MM-DD, inside the campaign's window. A draft may be saved with a day gone by; Schedule asks for one still ahead (schedule_check says so). |
| time | string | The time it goes out, HH:MM 24-hour, in the artist's own time zone. |
| angle | string | Which of Audora's post angles the words take (the key names it: listener_pov is the listener's side of the song, tail_section a part of the track no other post used, hook_object an object the song names, and so on). Audora counts how each angle does for the artist, and promo_results' what_works shows the result. get_campaign shows each post's angle. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| caption | string | The words of the post, as they will be published. The lane's limit and Audora's text rules apply (no placeholders, nothing that points back at another post). |
| dry_run |
Set artist details: name, country, genre, tone, description, main markets, Promo's post language, the three bios and links. Send only the fields you are changing. Call get_requirements first for the exact limits. An over-long value is refused with the number it got.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| fields* | object | The fields to set, by the `name` get_requirements gives each one. |
| dry_run | boolean | True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote. |
{
"type": "object",
"required": [
"fields"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"fields": {
"type": "object",
"description": "The fields to set, by the `name` get_requirements gives each one.",
"additionalProperties": true
},
"dry_run": {
"type": "boolean",
"description": "True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote."
}
},
"additionalProperties": false
}Amend a track's metadata. Refused once its release has been submitted: a submitted release carries a frozen copy, and changing the catalog underneath it is the artist's own decision, because it costs credits.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| fields* | object | The fields to set, by the `name` get_requirements gives each one. |
| dry_run | boolean | True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote. |
| track_id* | string |
{
"type": "object",
"required": [
"track_id",
"fields"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"fields": {
"type": "object",
"description": "The fields to set, by the `name` get_requirements gives each one.",
"additionalProperties": true
},
"dry_run": {
"type": "boolean",
"description": "True to see what would change, and what it would replace, without writing anything. Use it before overwriting words the artist wrote."
},
"track_id": {
"type": "string"
}
},
"additionalProperties": false
}Returns the account this connection acts in (an artist's, or a label's with its roster), what this connection is allowed to do, where the result is reviewed, and next_steps: what to offer the artist next, worked out from the account. Call this first, and again whenever you are unsure whose catalog you are working in. On a label connection, pass `artist` to see one roster artist's account.
| Argument | Type | Description |
|---|---|---|
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
{
"type": "object",
"required": [],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
}
},
"additionalProperties": false
}| string |
| For status: a particular lookup. Default: the newest. |
| dry_run | boolean | For start: true to read what the lookup costs without starting it. |
| confirm_cost_credits | number | For start: the price a dry run quoted and you told the artist. Needed for a lookup that is not free. |
{
"type": "object",
"required": [],
"properties": {
"link": {
"type": "string",
"description": "For start: one page the artist is on (Apple Music, Deezer, SoundCloud, YouTube, Bandcamp, their site, Instagram), as a full https:// address. It is the best starting point. A Spotify link is kept as theirs but never opened, so another page starts the lookup better."
},
"action": {
"enum": [
"start",
"status"
],
"type": "string",
"description": "\"start\" a new lookup, or read its \"status\". Default: status."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"not_me": {
"type": "array",
"items": {
"type": "string"
},
"description": "For start: names of earlier matches the artist said are not them."
},
"run_id": {
"type": "string",
"description": "For status: a particular lookup. Default: the newest."
},
"dry_run": {
"type": "boolean",
"description": "For start: true to read what the lookup costs without starting it."
},
"confirm_cost_credits": {
"type": "number",
"description": "For start: the price a dry run quoted and you told the artist. Needed for a lookup that is not free."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"kind",
"filename"
],
"properties": {
"kind": {
"enum": [
"audio",
"cover_art",
"logo",
"artist_image"
],
"type": "string"
},
"bytes": {
"type": "number",
"description": "Optional. The size in bytes, IF you already know it: it saves a doomed upload. Never ask anyone for it. The server measures the file when it arrives."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"album_id": {
"type": "string"
},
"filename": {
"type": "string",
"description": "The file's own name, with its extension. Audio is .wav, .flac or .m4a (Apple Lossless); images are .png, .jpg or .webp. A release going out through Audora needs a stereo master and a .jpg cover (square, 3000–6000 px, RGB). Other images upload but cannot be a release cover."
},
"track_id": {
"type": "string",
"description": "Required for audio; for cover art, give this or album_id."
},
"mime_type": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"kind",
"summary",
"details"
],
"properties": {
"kind": {
"enum": [
"missing_capability",
"connector_improvement",
"product_improvement",
"bug",
"other"
],
"type": "string",
"description": "What this is about."
},
"tool": {
"type": "string",
"description": "The tool this is about, if it is about one."
},
"details": {
"type": "string",
"description": "What you or the artist were trying to do, what got in the way and the change that would have helped. Up to 5000 characters. No passwords, tokens or other secrets."
},
"summary": {
"type": "string",
"description": "One line someone at Audora can triage from. Up to 120 characters."
},
"artist_asked": {
"type": "boolean",
"description": "True when the artist asked for this or said it; false or omitted when it is your own observation."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"track_id",
"artists"
],
"properties": {
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"artists": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"role"
],
"properties": {
"name": {
"type": "string",
"description": "Exactly as it should read on the store."
},
"role": {
"enum": [
"primary",
"featured",
"with",
"remixer"
],
"type": "string"
}
}
},
"description": "The artists besides the account's own, in billing order. An empty list clears the billing back to the artist's own name."
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would replace, without writing anything."
},
"track_id": {
"type": "string"
},
"rights_confirmed": {
"type": "boolean",
"description": "Required as true when the list has a `primary` artist besides the account's own. Ask the artist first, in these words: \"I have all the rights needed for this collaboration\". Send true only when they confirm it. Never assume it: it is recorded as their legal confirmation."
}
},
"additionalProperties": false
}| about | string | Between releases only: what the campaign is about. "song" (with about_track_id, one of the artist's songs) or "artist" (posts about who they are, their sound and their artist page; no line is kept). Left out: planned as before. |
| lanes* | array | Where the posts go. Only lanes with a connected account are planned. |
| artist | string | Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection. |
| dry_run | boolean | True to check the call and see what it would do, without writing anything. |
| accounts | object | Optional, for an artist with more than one account on a platform: which account each platform posts through, as the account's id, @handle or name (a dry run's quote.accounts lists them). Every post of the campaign is tied to its account and never goes out on another. Left out for a platform: the account the newest campaign in this language used there, else the artist's main account. |
| the_story | string | Optional, ≤ 5000 characters: "The story behind it", in the artist's own words. Where it was written, what happened, who it is for. Posts tell it in your words. Never write it for them. |
| key_lyrics | array | Optional, up to 2: "A line that matters", word for word from the song's lyrics (get_track has them). A line not in the lyrics is refused; a song with no lyrics takes a line the artist types; an instrumental takes none. |
| release_id | string | The release (from list_releases or list_campaigns' can_start). Or use between_releases. |
| what_works | string | Optional, ≤ 2000 characters: "What worked before", in the artist's words. A post, a format or a time that did well for you. Posts can take the same shape again. |
| key_moments | array | Optional, up to 6: "Something coming up". A show, a video, a date that matters. Posts lead up to it. Left out: Scene's public shows and parties inside the campaign's days. |
| lead_market | string | null | Optional: where most of the listeners for this campaign are. Every post is timed for that market's clock. null: timed where the artist is. Left out: the last campaign's market, else the first market on the artist's page (a dry run's quote.markets says which). |
| lyric_video | boolean | Optional: the campaign's first made video shows the song's words in time with the song. Audora times the lyrics when the campaign starts (free), so that video comes about 10 minutes later. false: no video shows lyrics. Left out: on when the song's lyrics can be timed. A dry run's quote.lyric_video says the song and where its lyrics stand (to_time, timing, timed, or why not: no_lyrics, instrumental, language, no_master). |
| post_language | string | Optional: the language every post in this campaign is written in, with the text on its pictures and videos. Left out: the artist's Post language, else the language the release's songs are sung in, else en-US. A dry run's quote.post_language says which and why. It is the campaign's, never written back to the artist. |
| about_track_id | string | With about: "song", the song the campaign is about (list_tracks). |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
| replace_plan_id | string | Optional: start that campaign over (an id from list_campaigns, for the same release or between releases). Its posts not yet scheduled are removed once the new campaign is written; scheduled ones stay and go out. |
| between_releases | boolean | True for a month between releases instead of a release's campaign. |
| picture_fallback | string | Optional: what fills a post the artist's own photos and cover do not cover, when Audora is asked to make it (make_posts, or in the app). stock: free Pixabay stock photos, always made into the artist's cards (people and brands left out; not offered for a song about drugs, sex or politics). new: Audora draws a new picture. ask: those posts wait for the artist to pick a photo in the app. Stock and new cost the same (the artist's own photos and cover are free). Left out: the artist's last answer, else stock. A dry run's quote.picture_fallback says the starting choice and whether stock may be used. |
| sonic_references | array | Optional, up to 5 names: "Artists you sound like". Left out: the Artist page's reference artists. |
| key_lyrics_track_id | string | The song the lines are from: one of the release's songs, or between releases any of the artist's. Left out: the release's songs are tried; between releases, the artist's newest songs with lyrics. |
| confirm_cost_credits | number | The price a dry run quoted (charged_at_start: the plan at its size) and you told the artist. Required to start. |
{
"type": "object",
"required": [
"lanes",
"size"
],
"properties": {
"note": {
"type": "string",
"description": "Optional, ≤ 200 characters: \"Anything we should know?\", anything else the planner should know, in the artist's words. Left out: the last campaign's for this release, if any."
},
"size": {
"enum": [
"light",
"steady",
"loud"
],
"type": "string",
"description": "How often: light is 2 moments a week, steady 4 a week, loud every day (a video moment and a picture moment each day, so every account posts every day). A release campaign runs 5 weeks before release day and 2 after (49 days: light 14 moments, steady 28, loud 98), its moments climbing toward release day; between releases a month (30 days: light 9, steady 17, loud 60). A release closer than 5 weeks has fewer days and so fewer moments. The dry run quotes the exact moments and posts."
},
"about": {
"enum": [
"song",
"artist"
],
"type": "string",
"description": "Between releases only: what the campaign is about. \"song\" (with about_track_id, one of the artist's songs) or \"artist\" (posts about who they are, their sound and their artist page; no line is kept). Left out: planned as before."
},
"lanes": {
"type": "array",
"items": {
"enum": [
"instagram",
"story",
"facebook",
"tiktok",
"youtube"
],
"type": "string"
},
"description": "Where the posts go. Only lanes with a connected account are planned."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would do, without writing anything."
},
"accounts": {
"type": "object",
"properties": {
"tiktok": {
"type": "string"
},
"youtube": {
"type": "string"
},
"facebook": {
"type": "string"
},
"instagram": {
"type": "string"
}
},
"description": "Optional, for an artist with more than one account on a platform: which account each platform posts through, as the account's id, @handle or name (a dry run's quote.accounts lists them). Every post of the campaign is tied to its account and never goes out on another. Left out for a platform: the account the newest campaign in this language used there, else the artist's main account."
},
"the_story": {
"type": "string",
"description": "Optional, ≤ 5000 characters: \"The story behind it\", in the artist's own words. Where it was written, what happened, who it is for. Posts tell it in your words. Never write it for them."
},
"key_lyrics": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional, up to 2: \"A line that matters\", word for word from the song's lyrics (get_track has them). A line not in the lyrics is refused; a song with no lyrics takes a line the artist types; an instrumental takes none."
},
"release_id": {
"type": "string",
"description": "The release (from list_releases or list_campaigns' can_start). Or use between_releases."
},
"what_works": {
"type": "string",
"description": "Optional, ≤ 2000 characters: \"What worked before\", in the artist's words. A post, a format or a time that did well for you. Posts can take the same shape again."
},
"key_moments": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"label"
],
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD, still ahead."
},
"kind": {
"enum": [
"show",
"release_party",
"listening_party",
"other"
],
"type": "string",
"description": "show, a party, or other."
},
"label": {
"type": "string",
"description": "What happens, in the artist's words."
},
"event_id": {
"type": "string",
"description": "A Scene event's id (list_events): its own date, place and link are used."
},
"link_url": {
"type": "string",
"description": "Optional https link for tickets or info."
}
}
},
"description": "Optional, up to 6: \"Something coming up\". A show, a video, a date that matters. Posts lead up to it. Left out: Scene's public shows and parties inside the campaign's days."
},
"lead_market": {
"enum": [
"us",
"uk",
"eu",
"nordics",
"dach",
"france",
"latam",
"japan",
"kpop",
"china",
"india",
"mena",
"africa",
"anz",
null
],
"type": [
"string",
"null"
],
"description": "Optional: where most of the listeners for this campaign are. Every post is timed for that market's clock. null: timed where the artist is. Left out: the last campaign's market, else the first market on the artist's page (a dry run's quote.markets says which)."
},
"lyric_video": {
"type": "boolean",
"description": "Optional: the campaign's first made video shows the song's words in time with the song. Audora times the lyrics when the campaign starts (free), so that video comes about 10 minutes later. false: no video shows lyrics. Left out: on when the song's lyrics can be timed. A dry run's quote.lyric_video says the song and where its lyrics stand (to_time, timing, timed, or why not: no_lyrics, instrumental, language, no_master)."
},
"post_language": {
"enum": [
"en-US",
"en-GB",
"sv",
"nb",
"da",
"fi",
"is",
"de",
"nl",
"fr",
"es-ES",
"es-419",
"pt-BR",
"pt-PT",
"it",
"zh-CN",
"zh-TW",
"ja",
"ko"
],
"type": "string",
"description": "Optional: the language every post in this campaign is written in, with the text on its pictures and videos. Left out: the artist's Post language, else the language the release's songs are sung in, else en-US. A dry run's quote.post_language says which and why. It is the campaign's, never written back to the artist."
},
"about_track_id": {
"type": "string",
"description": "With about: \"song\", the song the campaign is about (list_tracks)."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
},
"replace_plan_id": {
"type": "string",
"description": "Optional: start that campaign over (an id from list_campaigns, for the same release or between releases). Its posts not yet scheduled are removed once the new campaign is written; scheduled ones stay and go out."
},
"between_releases": {
"type": "boolean",
"description": "True for a month between releases instead of a release's campaign."
},
"picture_fallback": {
"enum": [
"stock",
"new",
"ask"
],
"type": "string",
"description": "Optional: what fills a post the artist's own photos and cover do not cover, when Audora is asked to make it (make_posts, or in the app). stock: free Pixabay stock photos, always made into the artist's cards (people and brands left out; not offered for a song about drugs, sex or politics). new: Audora draws a new picture. ask: those posts wait for the artist to pick a photo in the app. Stock and new cost the same (the artist's own photos and cover are free). Left out: the artist's last answer, else stock. A dry run's quote.picture_fallback says the starting choice and whether stock may be used."
},
"sonic_references": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional, up to 5 names: \"Artists you sound like\". Left out: the Artist page's reference artists."
},
"key_lyrics_track_id": {
"type": "string",
"description": "The song the lines are from: one of the release's songs, or between releases any of the artist's. Left out: the release's songs are tried; between releases, the artist's newest songs with lyrics."
},
"confirm_cost_credits": {
"type": "number",
"description": "The price a dry run quoted (charged_at_start: the plan at its size) and you told the artist. Required to start."
}
},
"additionalProperties": false
}| boolean |
| True to check the call and see what it would do, without writing anything. |
| post_id* | string | The post's id (post_id from get_campaign or promo_this_week). |
| hashtags | array | Up to 12 hashtags, with or without #. Replaces the list. |
| link_url | string | null | A web address the post links to, or null to remove it. |
| media_asset_id | string | A picture (for a picture post) or a video (for a video post) already in the artist's Library, by its media asset id. Audora does not make pictures or videos through this connection. |
| idempotency_key | string | Send the same key if you retry, and the change happens once. |
{
"type": "object",
"required": [
"post_id"
],
"properties": {
"date": {
"type": "string",
"description": "The day it goes out, YYYY-MM-DD, inside the campaign's window. A draft may be saved with a day gone by; Schedule asks for one still ahead (schedule_check says so)."
},
"time": {
"type": "string",
"description": "The time it goes out, HH:MM 24-hour, in the artist's own time zone."
},
"angle": {
"enum": [
"pin_angle.hook_object",
"pin_angle.listener_pov",
"pin_angle.lyric_line_on_beat",
"pin_angle.occasion_day",
"pin_angle.one_answerable_question",
"pin_angle.ordinary_scene_contrast",
"pin_angle.place_light_and_weather",
"pin_angle.place_named_in_words",
"pin_angle.release_fact_card",
"pin_angle.repeat_what_worked",
"pin_angle.scene_vocabulary",
"pin_angle.show_coming_up",
"pin_angle.story_line_that_nearly_went",
"pin_angle.story_place",
"pin_angle.tail_section",
"pin_angle.uploaded_asset_hero"
],
"type": "string",
"description": "Which of Audora's post angles the words take (the key names it: listener_pov is the listener's side of the song, tail_section a part of the track no other post used, hook_object an object the song names, and so on). Audora counts how each angle does for the artist, and promo_results' what_works shows the result. get_campaign shows each post's angle."
},
"artist": {
"type": "string",
"description": "Only when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection."
},
"caption": {
"type": "string",
"description": "The words of the post, as they will be published. The lane's limit and Audora's text rules apply (no placeholders, nothing that points back at another post)."
},
"dry_run": {
"type": "boolean",
"description": "True to check the call and see what it would do, without writing anything."
},
"post_id": {
"type": "string",
"description": "The post's id (post_id from get_campaign or promo_this_week)."
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 12 hashtags, with or without #. Replaces the list."
},
"link_url": {
"type": [
"string",
"null"
],
"description": "A web address the post links to, or null to remove it."
},
"media_asset_id": {
"type": "string",
"description": "A picture (for a picture post) or a video (for a video post) already in the artist's Library, by its media asset id. Audora does not make pictures or videos through this connection."
},
"idempotency_key": {
"type": "string",
"description": "Send the same key if you retry, and the change happens once."
}
},
"additionalProperties": false
}