Skip to content
Docs menu

Copy the text

Your browser did not allow copying. The text below is selected: press Ctrl+C, or ⌘C on a Mac.

Show credits by kind

The balance split by kind with the expiry of each, in the order the credits are used. Free files of the day come first.

GEThttps://api.switchfile.io/v1/account/credits

Needs an API key: Authorization: Bearer YOUR_API_KEY. See Authentication.

Example

curl "https://api.switchfile.io/v1/account/credits" \
  -H "Authorization: Bearer $SWITCHFILE_API_KEY"

Responses

  • 200OK
    • balancestring (integer) | integerrequired

      All credits left, not counting the free files of the day

    • freeobjectrequired

      Free files of the day; they are used before any credits

    • free.conversions_per_daystring (integer) | integerrequired
    • free.conversions_usedstring (integer) | integerrequired
    • free.reset_atstringrequired

      ISO 8601 timestamp

    • packsstring (integer) | integerrequired

      Credits from packs (web or App Store); they never expire and are used last

    • planobject[]required

      Credits from plan payments that are left, earliest expiry first; used after welcome credits

    • plan[].creditsstring (integer) | integerrequired
    • plan[].expires_atstringrequired

      ISO 8601 timestamp

    • welcomeobject | nullrequired

      Welcome credits, used first

    • welcome.creditsstring (integer) | integerrequired
    • welcome.expires_atstringrequired

      ISO 8601 timestamp

    • welcome.leftstring (integer) | integerrequired
    200 application/json
    {
      "balance": 1240,
      "free": {
        "conversions_per_day": 20,
        "conversions_used": 3,
        "reset_at": "2026-11-07T00:00:00+00:00"
      },
      "welcome": {
        "credits": 100,
        "left": 100,
        "expires_at": "2026-12-06T18:00:00+00:00"
      },
      "plan": [],
      "packs": 1140
    }
  • 401The API key is missing or not valid
    401 application/problem+json
    {
      "type": "https://switchfile.io/docs/api/v1#errors-unauthenticated",
      "title": "Unauthenticated",
      "status": 401,
      "code": "UNAUTHENTICATED",
      "detail": "Missing or invalid API key."
    }
  • 403Not available with a service key or a connected app
    403 application/problem+json
    {
      "type": "https://switchfile.io/docs/api/v1#errors-not-available",
      "title": "Not available",
      "status": 403,
      "code": "NOT_AVAILABLE",
      "detail": "This endpoint is only available with your own API key or the switchfile app."
    }
  • 404Does not exist for this account
    404 application/problem+json
    {
      "type": "https://switchfile.io/docs/api/v1#errors-not-found",
      "title": "Not found",
      "status": 404,
      "code": "NOT_FOUND",
      "detail": "Not found."
    }
  • 422Invalid data. errors names the fields
    422 application/problem+json
    {
      "type": "https://switchfile.io/docs/api/v1#errors-invalid-data",
      "title": "Invalid data",
      "status": 422,
      "code": "INVALID_DATA",
      "detail": "The request contains invalid data.",
      "errors": {
        "to": [
          "Expected string"
        ]
      }
    }
  • 429Too many requests or a daily quota is used up. See Retry-After
    429 application/problem+json
    {
      "type": "https://switchfile.io/docs/api/v1#errors-rate-limit-exceeded",
      "title": "Rate limit exceeded",
      "status": 429,
      "code": "RATE_LIMIT_EXCEEDED",
      "detail": "Too many requests. Try again in 12 seconds."
    }

Error bodies and codes are explained in Errors.