curl --request POST \
--url https://dally.ai/v1/bed.read \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"bed": "isrc:QM24S2401697"
}
'import requests
url = "https://dally.ai/v1/bed.read"
payload = { "bed": "isrc:QM24S2401697" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({bed: 'isrc:QM24S2401697'})
};
fetch('https://dally.ai/v1/bed.read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dally.ai/v1/bed.read",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'bed' => 'isrc:QM24S2401697'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dally.ai/v1/bed.read"
payload := strings.NewReader("{\n \"bed\": \"isrc:QM24S2401697\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dally.ai/v1/bed.read")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"bed\": \"isrc:QM24S2401697\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dally.ai/v1/bed.read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"bed\": \"isrc:QM24S2401697\"\n}"
response = http.request(request)
puts response.read_body{
"bed": "isrc:QM24S2401697",
"title": "Dramamine",
"artist": "Flawed Mangoes",
"isrc": "QM24S2401697",
"apple_music_url": "https://music.apple.com/album/dramamine/1715911324?i=1715911902",
"shazam_url": "https://www.shazam.com/track/706252169/dramamine",
"cover_art_url": "https://is1-ssl.mzstatic.com/image/thumb/Music126/v4/3c/16/98/3c16983a-69c6-fd9c-b573-ebf1d0897ec0/5056495122067_Cover.jpg/400x400bb.jpg",
"reels": 2,
"median_views": 325000,
"members": [
{
"content_id": "cbd78841-6529-4757-9469-dc61c9035517",
"platform": "instagram",
"duration_seconds": 43.093,
"frames_sheet": null,
"cut_seconds": [
5.667,
10.9
],
"usual": null
}
],
"request_id": "req_01j8zkq"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}bed.read
Access: public. Send a JSON body; unknown keys are rejected with 400 invalid_request (inputs are strict). Responses may gain fields additively — never remove or repurpose; ignore unknown response fields.
curl --request POST \
--url https://dally.ai/v1/bed.read \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"bed": "isrc:QM24S2401697"
}
'import requests
url = "https://dally.ai/v1/bed.read"
payload = { "bed": "isrc:QM24S2401697" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({bed: 'isrc:QM24S2401697'})
};
fetch('https://dally.ai/v1/bed.read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dally.ai/v1/bed.read",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'bed' => 'isrc:QM24S2401697'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dally.ai/v1/bed.read"
payload := strings.NewReader("{\n \"bed\": \"isrc:QM24S2401697\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dally.ai/v1/bed.read")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"bed\": \"isrc:QM24S2401697\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dally.ai/v1/bed.read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"bed\": \"isrc:QM24S2401697\"\n}"
response = http.request(request)
puts response.read_body{
"bed": "isrc:QM24S2401697",
"title": "Dramamine",
"artist": "Flawed Mangoes",
"isrc": "QM24S2401697",
"apple_music_url": "https://music.apple.com/album/dramamine/1715911324?i=1715911902",
"shazam_url": "https://www.shazam.com/track/706252169/dramamine",
"cover_art_url": "https://is1-ssl.mzstatic.com/image/thumb/Music126/v4/3c/16/98/3c16983a-69c6-fd9c-b573-ebf1d0897ec0/5056495122067_Cover.jpg/400x400bb.jpg",
"reels": 2,
"median_views": 325000,
"members": [
{
"content_id": "cbd78841-6529-4757-9469-dc61c9035517",
"platform": "instagram",
"duration_seconds": 43.093,
"frames_sheet": null,
"cut_seconds": [
5.667,
10.9
],
"usual": null
}
],
"request_id": "req_01j8zkq"
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}Authorizations
A WorkOS-dashboard-issued internal API key on Authorization: Bearer.
Body
The recording's key, the one id a bed is served under: isrc: when the recognizer returned an ISRC, else shazam: when it returned its own key for the track, else window: for a bed no recognizer has identified beyond this fold. Every reel carrying the same recording carries the same key, so opening it from any card reaches the same bed.
1Response
Success. request_id is present on every response.
The recording's key, the one id a bed is served under: isrc: when the recognizer returned an ISRC, else shazam: when it returned its own key for the track, else window: for a bed no recognizer has identified beyond this fold. Every reel carrying the same recording carries the same key, so opening it from any card reaches the same bed.
1The recording's title, as the recognizer returned it.
1The recording's artist, as the recognizer returned it; null when the answer carried none.
The recording's ISRC, as the recognizer returned it; null when the answer carried none.
Apple Music's own page for this recording, taken verbatim from the recognizer's answer; null unless that answer carried a real https://music.apple.com link, which about two thirds of them do.
The recognizer's own page for this recording, taken verbatim from its answer; null when the answer carried none.
Apple's own URL for this recording's album art, looked up from Apple while this answer was being written and never held by Dally, so the picture is loaded from Apple's servers by whoever is looking at it. Null unless this bed carries an apple_music_url the art can sit beside, and null whenever the lookup missed, timed out or answered anything but a picture; the bed reads the same either way.
How many reels the caller can read carry this recording, counting every one of them, not only the ones whose cards ride in members.
x >= 0The middle view count of those reels; null when none of them carries a view count.
x >= 0Those reels' cards, most-viewed first, in the same shape a card read hands back, capped at one page. A reel the caller cannot read is absent here and absent from reels.
Show child attributes
Show child attributes
Server-minted id for this request. Present on every response, success and error — quote it when reporting a problem.
1