API Token Generator

The API Token Generator is the fastest way to get working credentials for the ezeep API without implementing any OAuth flow yourself. It is a small web app that signs you in with your ezeep account and hands you a non-rotating refresh token bound to that account and to the sandbox client used throughout this documentation.

Scope: this flow is intended for demo and ad hoc scripting only — quick experiments, personal scripts, learning the API, and throwaway tests. For a real integration, use end-user OAuth with a dedicated OAuth client instead; see Obtaining a ClientID for your Application.

Your application keeps the refresh token as a secret credential — treat it like a password — and exchanges it for a short-lived access token (a JWT, valid for about one hour) whenever it needs to call the API. Everything your application does with the API happens on behalf of the ezeep account you signed in with.

The sandbox client yjavNwKpd4HgbQes0ekYHBGjxIoszJgayIc0JkdB is a system-defined, long-lived public OAuth client. Refresh-token rotation is disabled on this client by design, which is why the token this generator issues stays valid until it is revoked.

Generate a Refresh Token

  1. Open https://app.ezeep.com/api-token-generator/.
  2. Click Sign in & authorize and complete the ezeep login in the new tab. (Under the hood the generator uses the Pairing Code Grant.)
  3. Return to the generator tab. It detects the completed authorization automatically and displays the Client ID and your refresh token, together with a ready-to-use curl command for the next step.

The refresh token is issued for the sandbox client yjavNwKpd4HgbQes0ekYHBGjxIoszJgayIc0JkdB with scope printing and is tied to the ezeep account you signed in with: everything your application does with it happens on behalf of that account.

Refresh token rotation is switched off for the sandbox client. The refresh token stays valid until it is revoked, and the same token can be exchanged for new access tokens any number of times. Your application can ignore the refresh_token field returned by the exchange — the stored token keeps working. (See Refresh Token Rotation Explained for how this differs from clients with rotation enabled.)

Use the Refresh Token to Get an Access Token

Whenever your application needs to call the API, it exchanges the stored refresh token for an access token using grant_type=refresh_token (the Basic authorization header value is the base64-encoded sandbox client ID — see ClientID/Secret Encoding):

curl -X POST "https://account.ezeep.com/oauth/access_token/" \
     --header "Authorization: Basic eWphdk53S3BkNEhnYlFlczBla1lIQkdqeElvc3pKZ2F5SWMwSmtkQjo=" \
     --header "Content-Type: application/x-www-form-urlencoded" \
     --data "grant_type=refresh_token" \
     --data "scope=printing" \
     --data-urlencode "refresh_token=<your refresh token>"

Example Response

{
  "access_token": "eyJ0eXAiOiJ...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "printing",
  "refresh_token": "qX5HTLt4..."
}

The access_token is a JWT valid for expires_in seconds (one hour). Send it with every API request in the Authorization header:

curl --header "Authorization: Bearer <access_token>" "https://api.ezeep.com/..."

It is bad practice to request a new access token for every API call — reuse the access token until it expires. See the Printing Quick Guide for a complete first API workflow.

Keep the Refresh Token Secret

  • Anyone who has the refresh token can use the API on behalf of your ezeep account — treat it like a password.
  • Store it in an environment variable or secret store; never embed it in client-side code or commit it to a repository.
  • If the token is exposed or no longer needed, invalidate it via Token Revocation.