GetInSaver Developers
API reference · v1

From public URL to usable media.

Base URL https://developers.getinsaver.com/v1. JSON in, JSON out. One endpoint for every service.

At a glance

Endpoint
POST /v1/resolve (one endpoint for every service)
Services
7: Instagram, Stories, Highlights, TikTok, X, Pinterest, Telegram
Free trial
20 result credits after email verification, no card
Price
from $19 for 7,500 results ($1.33–$2.53 per 1,000)
Billing
prepaid credits, no subscription, no expiry; failed or empty requests cost 0
Credits per result
1 (Instagram, TikTok, X, Pinterest) or 2 (Stories, Highlights, Telegram)
Limits
up to 20 items per request; 120 requests per minute per account; 2 in progress at once on the trial, 8 on paid accounts
Payment
card (Stripe) or USDT TRC20 (OxaPay)

Quickstart

  1. Create an account and verify your email (20 free credits).
  2. Create an API key in Dashboard → API keys. It is shown once; store it as GIS_KEY.
  3. Send your first request:
curl -X POST https://developers.getinsaver.com/v1/resolve \
  -H "Authorization: Bearer $GIS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"service":"instagram","url":"https://www.instagram.com/reel/SHORTCODE/","max_results":10}'

Authentication

Send your key as a Bearer token on every request. Keys start with gis_live_. Revoke a leaked key in the dashboard; the others keep working.

Authorization: Bearer gis_live_••••••••••••••••

POST /v1/resolve

FieldTypeRequiredDescription
servicestringyesA service ID from the table below.
urlstringyesThe public link, up to 2,048 characters.
max_resultsintegernoMost items to return, 1–20. Default 10. Credits are reserved for this many and the unused part is refunded at once.

Response

{
  "ok": true,
  "service": "instagram",
  "source_url": "https://www.instagram.com/reel/SHORTCODE/",
  "item_count": 1,
  "items": [
    {
      "type": "video",
      "url": "https://cdn.example/media.mp4"
    }
  ],
  "metadata": {
    "title": null,
    "author": "creator",
    "caption": null
  },
  "request_id": "39a3bff5-0000-4000-8000-000000000000",
  "credits_used": 1
}

items[].type is video, image or audio. request_id matches the row in your usage log. credits_used is what this call cost.

Services

IDCoversCredits / resultLink format
instagramInstagram Posts & Reels1instagram.com/p/...
instagram.com/reel/...
instagram-storyInstagram Stories2instagram.com/stories/username/...
instagram-highlightInstagram Highlights2instagram.com/stories/highlights/...
tiktokTikTok1tiktok.com/@user/video/...
xX / Twitter1x.com/user/status/...
pinterestPinterest1pinterest.com/pin/...
pin.it/...
telegramTelegram Public Media2t.me/channel/123

Credits

A request reserves max_results × credits per result, then settles to items returned × credits per result. If the request fails or returns nothing, the whole reservation is refunded. Your balance and every movement are visible in the dashboard.

Errors

Errors return JSON with error: true, a stable code and a readable message.

{
  "error": true,
  "code": "URL_INVALID",
  "message": "Enter a valid Instagram Posts & Reels URL."
}
HTTPCodeMeaning
400SERVICE_UNSUPPORTEDThe service ID is not one of the IDs listed below.
400URL_INVALIDThe URL is not a valid link for the chosen service (for example a Story link sent as service instagram).
401API_KEY_INVALIDMissing, revoked or unknown key, or the account's email is not verified.
402INSUFFICIENT_CREDITSThe balance cannot cover max_results × the service's credits. Buy credits or lower max_results.
422MEDIA_NOT_FOUNDThe link resolved but contained no downloadable media.
422UPSTREAM_REJECTEDThe platform refused the link: private, deleted, expired or login-only content. Some failures carry a more specific code.
429RATE_LIMITEDMore than 120 requests in a minute on one account (all its keys together). Retry after the RateLimit-Reset header.
429CONCURRENCY_LIMITThe account already has its maximum number of requests in progress. Retry after the Retry-After header; nothing was charged.
502UPSTREAM_INVALID_RESPONSETemporary provider failure. Safe to retry; nothing was charged.
504UPSTREAM_TIMEOUTThe platform did not answer in time. Safe to retry; nothing was charged.

Rate limits

120 requests per minute per account, shared by all of its API keys, with standard RateLimit headers. At most 2 requests can be in progress at once on the free trial and 8 once the account has bought credits; a request over that answers 429 CONCURRENCY_LIMIT with a Retry-After header and costs nothing. Requests can take up to two minutes for slow platforms, so set your client timeout to at least 130 seconds.

Media URLs

Returned URLs point at the platform's CDN or at a GetInSaver relay and are short-lived (minutes to a few hours). Download or proxy the file right after the call; do not store the URL for later.

Integration guides

Stuck? Contact support or open a ticket from your dashboard. Include the request_id.