Reference

Account API

Read your Iminify plan, its limits and how much of the day's images and page scans are used, from the account endpoint.

The account endpoint tells a script what it's working with: the plan behind the key, what that plan allows, and how much of today's allowance is gone. It's cheap to call and a good first request for any integration, because it proves the key works without compressing anything.

The limits and the usage are the same numbers the website shows on its plan page, and for site crawls under the scan page's address bar, because the website and the API share them. On max, which is unlimited, images_per_day, scans_per_day and files_per_day are null, and so is the remaining of each; its AI alt texts have a number, as on every plan. files_per_day and usage.files are your upload groups' files, every output in every format, which only the API makes.

The plan is free, pro or max, the two paid plans, or trial for the days of Pro an account gets once, as its email is verified or with the trial button on the website: Pro's features, with the daily counts limits shows. plan_ends_at says when the trial ends. After that the same key answers free, and nothing in your integration has to change.

The Account object

name string
The account's name.
email string
Its email address.
plan string
The plan the account is on: pro and max are the paid plans, and trial is the days of Pro an account gets once, as its email is verified or with the trial button on the website, after which it answers free.
plan_ends_at timestamp or null
When a paid plan or a trial ends, or null while a paid plan renews or on the free plan.
limits object
What the plan allows.
limits.images_per_day integer or null
Images a rolling 24 hours, or null on max, which is unlimited.
limits.scans_per_day integer or null
Page scans a rolling 24 hours, or null on max, which is unlimited.
limits.alt_texts_per_day integer
AI alt texts a rolling 24 hours. Every plan has a number here, max included.
limits.files_per_day integer or null
Files a rolling 24 hours that your upload groups make: every output in every format is one. null on max, which is unlimited.
limits.images_per_scan integer
The most images one page scan compresses.
limits.crawls_per_day integer or null
Site crawls a rolling 24 hours: 0 on a plan without site crawls.
limits.pages_per_crawl integer
The most pages one site crawl scans, from a sitemap or a list: 0 on a plan without site crawls.
limits.monitors integer
How many sites can have a weekly site check at once: 0 on a plan without weekly checks.
limits.max_file_size integer
The largest file you can upload or have fetched, in bytes.
limits.max_megapixels integer
The most pixels an image, or the image a resize would produce, may have, in millions.
limits.compressions_per_minute integer
Compressions you can queue in a minute: uploads, recompresses and retries together, from the API and the website combined.
limits.scans_per_minute integer
Page scans you can start in a minute, new and retried together, from the API and the website combined.
limits.requests_per_minute integer
Calls to the API in a minute, of every kind.
limits.max_batch integer
The most ids one batch call takes.
usage object
How much of the day's allowance is used. The website and the API spend the same counts.
usage.images object
Images compressed.
usage.images.used integer
How many the current window has used.
usage.images.remaining integer or null
How many are left, or null where the plan's daily limit is null.
usage.images.resets_at timestamp or null
When the window opens again, or null while nothing has been used. The window is a rolling 24 hours from the first use, not midnight.
usage.scans object
Page scans run.
usage.scans.used integer
How many the current window has used.
usage.scans.remaining integer or null
How many are left, or null where the plan's daily limit is null.
usage.scans.resets_at timestamp or null
When the window opens again, or null while nothing has been used. The window is a rolling 24 hours from the first use, not midnight.
usage.crawls object
Site crawls started.
usage.crawls.used integer
How many the current window has used.
usage.crawls.remaining integer or null
How many are left, or null where the plan's daily limit is null.
usage.crawls.resets_at timestamp or null
When the window opens again, or null while nothing has been used. The window is a rolling 24 hours from the first use, not midnight.
usage.alt_texts object
AI alt texts written.
usage.alt_texts.used integer
How many the current window has used.
usage.alt_texts.remaining integer
How many are left, or null where the plan's daily limit is null.
usage.alt_texts.resets_at timestamp or null
When the window opens again, or null while nothing has been used. The window is a rolling 24 hours from the first use, not midnight.
usage.files object
Files your upload groups made, counted when each group opened.
usage.files.used integer
How many the current window has used.
usage.files.remaining integer or null
How many are left, or null where the plan's daily limit is null.
usage.files.resets_at timestamp or null
When the window opens again, or null while nothing has been used. The window is a rolling 24 hours from the first use, not midnight.

Get your account

GET /api/v1/account

Your plan, what it allows and how much of today's allowance is gone. The website and the API spend the same daily counts, so an image compressed on the site shows up in usage here too. On max, which is unlimited, the images and page scans a day and what is left of them are null. The window is a rolling 24 hours that starts with your first image or scan, not midnight, so resets_at is null until something has been used. This is also the cheapest way to check that a key works.

Request

curl "https://www.iminify.com/api/v1/account" \
  --connect-timeout 10 --max-time 30 \
  -H "Authorization: Bearer $IMINIFY_API_KEY" \
  -H "Accept: application/json"

Response 200

JSON
{
    "data": {
        "name": "Ada Lovelace",
        "email": "[email protected]",
        "plan": "free",
        "plan_ends_at": null,
        "limits": {
            "images_per_day": 40,
            "scans_per_day": 3,
            "alt_texts_per_day": 40,
            "files_per_day": 1500,
            "images_per_scan": 20,
            "crawls_per_day": 0,
            "pages_per_crawl": 0,
            "monitors": 0,
            "max_file_size": 33554432,
            "max_megapixels": 64,
            "compressions_per_minute": 20,
            "scans_per_minute": 1,
            "requests_per_minute": 60,
            "max_batch": 150
        },
        "usage": {
            "images": {
                "used": 12,
                "remaining": 28,
                "resets_at": "2026-10-02T09:30:00+00:00"
            },
            "scans": {
                "used": 1,
                "remaining": 2,
                "resets_at": "2026-10-02T11:05:00+00:00"
            },
            "crawls": {
                "used": 0,
                "remaining": 0,
                "resets_at": null
            },
            "alt_texts": {
                "used": 12,
                "remaining": 28,
                "resets_at": "2026-10-02T09:30:00+00:00"
            },
            "files": {
                "used": 6,
                "remaining": 1494,
                "resets_at": "2026-10-02T09:40:00+00:00"
            }
        }
    }
}