saveapi.org

Instagram story API without login: one story or every active story

Stories are the part of Instagram that scraping stacks break on first: they live 24 hours, they are served only to signed-in sessions, and the URL a user pastes rarely contains the story id. The endpoint takes both link shapes and returns the same medias[] you get for a reel. This guide is the two calls, the pricing, and the one rule about expiry.

Updated

A single story

The link the share sheet produces — instagram.com/stories/<username>/<id>/ — resolves to that one story. No login, no session: the request is the link and your key, and the answer is a direct URL to the video or image.

Terminal
curl -s "https://api.saveapi.org/v1/instagram" \
  -H "Authorization: Bearer sk_live_xxxx" \
  -G --data-urlencode "url=https://www.instagram.com/stories/nasa/3981078788746068381/"

Every active story of an account

Drop the id and pass instagram.com/stories/<username>/ — the response holds every story the account has live at that moment, in the order they were posted. This is the call to use when a user pastes a profile rather than a story.

Terminal
curl -s "https://api.saveapi.org/v1/instagram" \
  -H "Authorization: Bearer sk_live_xxxx" \
  -G --data-urlencode "url=https://www.instagram.com/stories/nasa/"

Read the response

Each element of medias[] is one story: a video or an image with a direct URL. Ten active stories give ten entries. An account with nothing live comes back as MEDIA_NOT_FOUND — that is the correct answer, not a failure on our side, and it is why the code is final.

Python
data = resolve("https://www.instagram.com/stories/nasa/")

# Har element bitta story: video yoki rasm, e'lon qilingan tartibda
for media in data["medias"]:
    print(media["type"], media["url"])

Pricing and what it does not include

A story call costs 5 credits whether it returns one story or twelve — the price is per resolved link, and it is the most expensive call in the API because the sources that can read stories are the most expensive to run. Private accounts are not readable at any price: you get PRIVATE_CONTENT and 0.1 credits are charged.

Fetch the file before the story does what stories do

The media URL is a signed CDN address and the story itself expires 24 hours after posting. If you need the file, download it when you resolve it; resolving again tomorrow returns nothing, because there is nothing left to resolve.

Terminal
curl -sL -o video.mp4 "<medias[0].url>"

Questions before you build

Do I need the account's cookies or a logged-in session?
No. The request is the link and your API key; nothing on your side talks to Instagram.
Why is a story 5 credits when a reel is 1.5?
Because the sources that can read stories without a session are the scarce and expensive part of the chain. The price is per resolved link, so a call that returns eight stories still costs 5.
Can I get archived stories?
No. Archived stories are not public, and the endpoint resolves only what an account has live now, or a single story by its share link.

Platform references used here

Other guides

Run this guide with your own key

Key in under a minute. 1,000 free credits, no card, no expiry.

Get a key and try itFull API reference