Credits and rate limits

How IGramAPI credits work, what each endpoint costs, when credits renew, the per-minute rate limit for each plan, and the headers that report both.

Two things limit your usage: credits (how much you can use per month) and the rate limit (how fast you can call per minute).

Credits

Each successful request costs credits, depending on the endpoint.

Endpoint Credits Plans
Profile, profile picture, posts, reels 1 All
Post and reel data (/v1/media) 1 All
Search, audio 1 All
Comments 2 All
Stories, highlights, hashtag feed 3 Paid
Downloader: image or MP3 1 All
Downloader: video 2 All
Downloader: merged HD video 5 All

Failed requests are free. Any response with a status of 400 or above (a missing profile, an invalid parameter, a temporary failure) is refunded automatically.

When credits renew

  • On the Free plan, credits renew at the start of every calendar month (UTC).
  • On paid plans, credits renew with your billing period.

Unused credits do not roll over.

Running out

When credits are used up, requests return HTTP 402 with the code quota_exceeded. The details object says how many credits you have and when they reset:

{
  "error": {
    "code": "quota_exceeded",
    "message": "Your credits for this billing period are used up. Upgrade your plan to continue.",
    "request_id": "req_8c2f9d4e1a7b3c50",
    "details": { "credits_limit": 100, "credits_used": 100, "resets_at": "2026-12-01T00:00:00+00:00" }
  }
}

Rate limits

The rate limit is the number of requests per minute your account can make, across all of its keys.

Plan Requests per minute
Free 30
Starter 120
Pro 200
Ultra 350
Mega 500

Go over it and you receive HTTP 429 with the code rate_limit_exceeded and a Retry-After header with the number of seconds to wait.

Response headers

Every successful response includes:

Header Meaning
X-Credits-Limit Credits in your plan for this period.
X-Credits-Remaining Credits left.
X-Credits-Charged Credits this request used.
X-RateLimit-Limit Requests allowed per minute.
X-RateLimit-Remaining Requests left in the current window.
X-RateLimit-Reset Seconds until you can send more.

Backing off correctly

import time
import requests

def get(url, key, retries=3):
    for attempt in range(retries):
        r = requests.get(url, headers={"Authorization": f"Bearer {key}"}, timeout=30)
        if r.status_code == 429:
            time.sleep(int(r.headers.get("Retry-After", "5")))
            continue
        return r
    return r

Do not retry a 402 (credits are gone) or a 4xx caused by your input. Retry 429, 502 and 503 with a pause.


Something unclear or missing? Tell us and we will fix the page.

Get your free API key

100 credits every month, no credit card. Make your first request in about two minutes.