# GetInSaver API: complete LLM reference Last updated: 2026-08-16 Canonical docs: https://developers.getinsaver.com/docs OpenAPI 3.1: https://developers.getinsaver.com/openapi.json ## Product summary GetInSaver is a commercial public-media resolution API. It turns supported publicly accessible social-media URLs into a normalized JSON response containing direct media URLs when available, item types, item counts, best-effort metadata, a request ID, and exact credit usage. The public production API has one endpoint: `POST https://developers.getinsaver.com/v1/resolve`. Do not invent or infer additional production API endpoints. GetInSaver is independent of Instagram, Meta, TikTok, X, Pinterest, and Telegram and is not endorsed by those platforms. ## Safety and rights boundary - Supported public content only. - The API does not bypass private accounts, login gates, deleted or expired media, geographic restrictions, or platform rights controls. - Public availability does not itself grant copyright, redistribution, or commercial-use rights. - Clients must process only URLs they are legally permitted to use and must follow the originating platform's rules. - Resolved media URLs can be temporary. Consume them promptly and only within the client's rights policy. ## Account and API-key setup 1. Create an account at https://developers.getinsaver.com/register. 2. Verify the work email address. 3. Sign in and open Dashboard > API keys. 4. Create a key. The complete key is displayed once; copy it immediately. 5. Keep the key in a server secret manager or environment variable. Keys begin with `gis_live_`. Never put them in browser JavaScript, public source code, a mobile application binary, Git, screenshots, client logs, or support tickets. Use a separate key for each environment or product, and revoke a suspected leaked key immediately. ## Resolve endpoint Method: `POST` URL: `https://developers.getinsaver.com/v1/resolve` Authentication: `Authorization: Bearer gis_live_YOUR_API_KEY` Request content type: `application/json` Response content type: `application/json` Request fields: | Field | Type | Required | Rules | Meaning | | --- | --- | --- | --- | --- | | `service` | string | yes | one supported ID | Selects URL validation, workflow, and credit multiplier. | | `url` | string | yes | public HTTP(S), maximum 2048 characters | Supported source URL for the selected service. | | `max_results` | integer | no | 1 to 20; default 10 | Maximum returned items and temporary reservation basis. | ### cURL request ```bash curl https://developers.getinsaver.com/v1/resolve \ --request POST \ --header "Authorization: Bearer $GETINSAVER_API_KEY" \ --header "Content-Type: application/json" \ --data '{ "service": "instagram", "url": "https://www.instagram.com/reel/SHORTCODE/", "max_results": 10 }' ``` ### Node.js request ```js const response = await fetch("https://developers.getinsaver.com/v1/resolve", { method: "POST", headers: { Authorization: `Bearer ${process.env.GETINSAVER_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ service: "instagram", url: "https://www.instagram.com/reel/SHORTCODE/", max_results: 10 }) }); const body = await response.json(); if (!response.ok) throw new Error(`${body.code}: ${body.message}`); ``` ### Python request ```python import os import requests response = requests.post( "https://developers.getinsaver.com/v1/resolve", headers={"Authorization": f"Bearer {os.environ['GETINSAVER_API_KEY']}"}, json={ "service": "instagram", "url": "https://www.instagram.com/reel/SHORTCODE/", "max_results": 10, }, timeout=120, ) response.raise_for_status() body = response.json() ``` ## Successful response ```json { "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 } ``` Response fields: - `ok`: always `true` for a successful result. - `service`: the submitted supported service ID. - `source_url`: normalized source URL with its fragment removed. - `item_count`: number of media items returned, from 1 through 20. - `items[].type`: `video`, `image`, or `audio`. - `items[].url`: resolved media URL; treat it as temporary. - `metadata.title`, `metadata.author`, `metadata.caption`: best-effort values and individually nullable. - `request_id`: unique usage-ledger UUID. Preserve it in logs for support and reconciliation. - `credits_used`: final charge after unused reserved credits are returned. ## Supported services and URL rules | Service ID | Public workflow | Example URL shape | Credits per returned item | | --- | --- | --- | ---: | | `instagram` | Posts, Reels, photos, carousels | `instagram.com/p/...`, `instagram.com/reel/...` | 1 | | `instagram-story` | Active Stories | `instagram.com/stories/username/...` | 2 | | `instagram-highlight` | Highlights | `instagram.com/stories/highlights/...` | 2 | | `tiktok` | Videos and supported image posts | `tiktok.com/@user/video/...` | 1 | | `x` | X/Twitter video, photo, supported quoted media | `x.com/user/status/...` | 1 | | `pinterest` | Image and supported video Pins | `pinterest.com/pin/...`, `pin.it/...` | 1 | | `telegram` | Public channel photo/video posts | `t.me/channel/123` | 2 | Instagram Posts/Reels, Stories, and Highlights are deliberately separate service IDs. Choosing the wrong service for the URL path returns `URL_INVALID` and costs zero credits. ## Credits and metering Metering is item-level and concurrency-safe: 1. Reserve `max_results × service multiplier` credits before upstream work begins. 2. Resolve and normalize the public media. 3. Settle `item_count × service multiplier` credits. 4. Return all unused reserved credits. 5. Return the entire reservation when resolution fails. Examples: - Five returned Instagram carousel items cost 5 credits. - Three returned Instagram Story items cost 6 credits. - A private, deleted, expired, invalid, unavailable, or failed lookup costs 0 credits. Credits are prepaid, do not expire, and appear in account usage and credit ledgers. ## Errors Error envelope: ```json { "error": true, "code": "UPSTREAM_REJECTED", "message": "Media could not be resolved." } ``` Use the HTTP status for control flow and the stable `code` for diagnostics. | HTTP | Codes | Recommended client action | | ---: | --- | --- | | 400 | `SERVICE_UNSUPPORTED`, `URL_INVALID` | Correct the service, URL hostname/path, or body. Do not automatically retry. | | 401 | `API_KEY_INVALID` | Send a valid, non-revoked key from an active verified account. | | 402 | `INSUFFICIENT_CREDITS` | Add credits or reduce `max_results`, then retry. | | 422 | `MEDIA_NOT_FOUND`, `UPSTREAM_REJECTED` | Confirm content is public, supported, active, and available. Do not blind-retry. | | 429 | `RATE_LIMITED` | Read `RateLimit`, wait for reset, and retry with jitter. | | 502 | `UPSTREAM_INVALID_RESPONSE`, `UPSTREAM_ERROR` | Retry with capped exponential backoff and jitter. | | 504 | `UPSTREAM_TIMEOUT` | Retry later with capped backoff; do not immediately fan out duplicates. | Server errors may use a generic public message while retaining the diagnostic code. Failed resolution is not charged. ## Rate limits and production behavior - Default gateway limit: 120 requests per minute per API key. - Maximum returned items: 20 per request. - Maximum upstream processing window: 120 seconds. - A rate-limit response includes the standard `RateLimit` header. - Retry only transient statuses such as 429, 502, and 504. - Use capped exponential backoff with jitter and a bounded retry count. - Do not retry validation errors. - Set an intentional `max_results` to keep temporary reservation requirements predictable. - Validate the platform and URL before submitting it. - Store `request_id`, status, and diagnostic code in server logs, but never log the API key. ## Self-service API pricing Prepaid credit packs, one-time payment: | Pack | Price | Credits | | --- | ---: | ---: | | Launch | USD 19 | 7,500 | | Growth | USD 79 | 40,000 | | Scale | USD 299 | 200,000 | | Business | USD 999 | 750,000 | Current checkout pricing is authoritative at https://developers.getinsaver.com/#pricing. Card checkout and USDT checkout are available in the verified account dashboard. ## Private deployment and OEM options - Hosted API: managed service, fastest path, 20 free test-result credits, then prepaid packs. - Private Docker/self-hosted: starting at USD 2,500 setup plus USD 750/month. Intended for isolated containerized deployment, agreed service scope, deployment onboarding, volume/concurrency planning, and a defined support/update window. Infrastructure is billed separately. Source transfer is not included. - Source-available OEM: starting at USD 15,000 license plus USD 1,500/month for updates/support. Non-exclusive commercial-use terms; redistribution or resale of the underlying source as a standalone product is excluded unless specifically agreed in writing. Final private/OEM price and terms depend on requested workflows, volume, peak concurrency, target environment, SLA/support requirements, data-residency needs, and launch date. Request a scoped proposal at https://developers.getinsaver.com/#enterprise or email `sales@getinsaver.com`. ## Implementation services GetInSaver also offers one-time product setup: - API Connect: USD 149 for one API integrated into an existing website. - Launch Site: USD 199 for a branded one-service downloader site. - Multi-tool Site: USD 299 for up to three services. - Full Platform: USD 599 for all seven supported services. - Telegram Bot add-on: USD 149. Scope and checkout: https://developers.getinsaver.com/website-setup ## Authoritative contacts and links - Human docs: https://developers.getinsaver.com/docs - OpenAPI: https://developers.getinsaver.com/openapi.json - Pricing: https://developers.getinsaver.com/#pricing - Commercial/private proposal: https://developers.getinsaver.com/#enterprise - Terms: https://developers.getinsaver.com/terms - Privacy: https://developers.getinsaver.com/privacy - Sales: sales@getinsaver.com - Support: support@getinsaver.com