Skip to content

A post's journey

This page follows one single post from the moment it exists on Instagram until it goes out on Mastodon. If you are going to read only one page of this documentation, make it this one: the rest explains the pieces that appear named here.

The whole trip

Mastodonemissionpersonarchive (items)pollerInstagramMastodonemissionpersonarchive (items)pollerInstagramevery N hours, per accountthis is where the destination is decidedborn as DRAFTalt[the flow hasauto_publica][the normal case]what is there since the last cursor?1list of posts + media URLs2stores metadata (state: pending)3downloads the bytes4images / video5stores file (state: ready)6creates one emission per flow that accepts it7moves to approved on its own8looks and approves9waits its turn at the tap10publishes11remote post id12records what went out and when13

The bytes are downloaded at step 4, not when publishing. If they were downloaded at publish time, a post approved today and emitted tomorrow could meet an expired URL — and it would fail at the worst moment, already approved by a person who believed it was settled.

Where a person decides

The system has exactly three points where a human decision is mandatory, and none of them can be skipped from the interface.

no

yes

no

approves

discards

yes

enables

enables

new material arrives

is there a valid consent

towards that destination?

nothing is emitted

the edge is drawn BROKEN

does the flow have

auto_publica?

sits in «To approve»

a person looks

to the queue

does not go out

it is published

a person granted the permission, by name

a person switched auto_publica on, confirming

All three are personal, dated assertions: who granted the permission, who approved the emission, who decided a route may go out by itself. None of them can be granted in bulk from an import — see Cauce.

The states of an emission

An emission is “this item, towards this account”. Its state is what the “To approve” screen and the history read.

created when the item arrives

a person approves

a person discards

the worker claims it

upload begins

it went out

some parts went out

recoverable error

the video could not be split

retry

no valid permission

general brake or tap

draft

approved

discarded

queued

publishing

published

partial

failed

not_segmentable

rights_blocked

blocked

Not an error: it is the guard

working. It is kept apart from

«failed» so that it is not

retried automatically.

A long video goes out in parts.

Three published and two not is

NOT «published».

bloqueada_derechos is a state of its own and not an error. If it shared a state with fallida, the automatic retry would pick it up over and over — and an error counter that climbs because a guard is working teaches people to ignore errors.

What happens when something breaks

the token expired

health: error_auth

+ alert

the network does not answer

retry with growing

backoff

rate limit

pause, drawn as a

NORMAL state

the file was not downloaded

stays pending

the downloader retries

the file failed

or was purged

does not heal itself:

it must be fetched again

A rate-limit pause is painted as a normal state, not as a failure. It is what the network answers when you ask too often, and it happens every day. With a red ✗, the panel would be red almost all the time and red would stop meaning anything.