Skip to main content
POST
Open a photo, album or video: its frames arrive as pictures after a text index. Album overview serves its images and every slide's media type; slides [..] selects positions. Use media_index for a video slide. Send one of these fields per call, never a field named ask: overview, slides, windows, window N, dense N (four seconds at five frames a second on one sheet), seconds [..], or 5-fps moments [..]; a url alone means overview. A public Instagram url admits the post, asks for everything Dally reads out of a reel, and waits for it: until the reel is complete the answer is the working answer, whose kind is working and which carries no pictures, and while its call_again is true you call open again with the same url at once and answer the person only from a complete result. An open by content_id never waits; it serves whatever is ready. A complete answer carries the reel's standing in words, its pictures, and the rows the catalogue's views hold on it: its card, the words spoken with the voice on every row, its voices, and what was seen and heard, under one text cap with the query that reads the rest. A voice is a sound the separator told apart, never a person, and no row says the account said anything. The frames are cut once at processing time into dense sheets, and a single frame is cut out of its sheet at the ask; the spoken rows say where to look.

Authorizations

Authorization
string
header
required

A WorkOS-dashboard-issued internal API key on Authorization: Bearer.

Body

application/json
content_id
string<uuid>

The Content to open: the content_id a query or search row carries.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
url
string<uri>

A public Instagram post URL. Choose url or content_id. A url admits the post, asks for everything Dally reads out of a reel, and waits for it to be complete: while it is not, the answer is the working answer, whose kind is working and which carries no pictures and no rows. While its call_again is true, call open again with the same url straight away and keep doing so — answer the person only from a complete result, never from a working one. When call_again is false the wait is over: tell the person the reel is saved and still processing, and to ask again in a few minutes.

Maximum string length: 2048
media_index
integer

Select one album slide to open, including a video slide. Omit it for the whole album.

Required range: x >= 0
slides
integer[]

Open selected album slide positions, in the order given. Image slides arrive as pictures; a video slide is listed with its media_index, to open on its own.

Required array length: 1 - 100 elements
Required range: x >= 1
overview
boolean

Ask for the photo, all image slides of an album, or one video overview sheet. Album video slides are listed with their media_index so they can be opened separately.

windows
boolean

Ask for every window sheet: one 20-tile sheet per 20-second window, one tile a second, 5 across. The whole reel readable beat by beat; one picture per window.

window
integer

Ask for one window's sheet by number, from 1. The result names next, the window after it, until the reel ends.

Required range: x >= 1
dense
integer

Ask for one dense sheet by number, from 1: four seconds of the reel as 20 tiles, every stored frame at five a second, 512 px each. The cheapest way to read what happens across a stretch; the result names next, the sheet after it.

Required range: x >= 1
moments
number[]

Exact stored 5-fps moments in seconds, such as [0, 0.2, 0.4]. One picture per moment; choose only what the question needs.

Required array length: 1 - 1000 elements
Required range: x >= 0Must be a multiple of 0.2
seconds
integer[]

Ask for exact frames at these seconds, 512 px wide, one picture each, in the order given (each second once). To look closely at a moment a sheet showed.

Minimum array length: 1

A whole second into the reel, counted from 0.

Required range: x >= 0

Response

Success. request_id is present on every response.

content_id
string<uuid>
required

The Content opened, echoed.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
duration_seconds
number
required

The reel's duration in seconds, as the frames were cut.

Required range: x >= 0
frame_count
integer
required

How many per-second frames are stored: seconds 0 to frame_count - 1.

Required range: x >= 0
frame_width_px
integer | null
required

The stored video frames' width in pixels; null for original image media, whose native dimensions vary.

Required range: x >= 1
window_seconds
integer
required

How many seconds one window spans.

Required range: x >= 1
dense_sheet_seconds
integer
required

How many seconds one dense sheet spans; 0 when this reel's frames predate dense sheets.

Required range: x >= 0
dense_sheet_count
integer
required

How many dense sheets the reel holds, so one can be asked for by number.

Required range: x >= 0
windows
object[]
required

Every window of the reel, so a window can be asked for by number.

images
object[]
required

The pictures this call serves, in the order their image blocks follow this text. Each carries the seconds it shows.

One picture the result carries: what it shows and where it lives. The image blocks after this text follow this list in order.

next
object
required

After a window or dense ask, the next one to ask for; null when the served sheet was the last, or when the ask was not one sheet.

request_id
string
required

Server-minted id for this request. Present on every response, success and error — quote it when reporting a problem.

Minimum string length: 1
standing
object

Where this media's reading stands. Present for a video; an album overview carries none. Whatever the views already hold is served beside it, so a reel still being read answers with the rows that are in.

rows
object

What the catalogue's views hold on this Content, read through the same views the query operation serves and fenced the same way. A voice is a sound the separator told apart, never a person; a row with two letters is two voices at once, a row with none is words no voice claimed, and no row says the account said anything.

media_index
integer

0 for standalone media; an album slide position counted from 1.

Required range: x >= 0
content_type
enum<string>

What the Content is: one image, an album of slides, or a video.

Available options:
image,
album,
video
media
object[]

Every media item at its original album position. Withheld media is unavailable from the provider; the rows carry each slide's media_index.

sampling_fps
number

Stored frames per second; older Contents can have lower coverage.

stored_frame_count
integer

Number of stored frames across the whole video.

show
object

Present when a video was opened by url and its wait is over: the answer about it ends as a canvas rendered through dally_show, with this reel as its Spotlight and your explanation beside it, then a brief takeaway in chat.