Postguy
Guide

Authorization

Set auth on a request, folder or collection. Auth kinds, inheritance and OAuth 2.0 flows.

You can set authorization on a request, a folder or a collection. Postguy applies it when you send the request.

The generated header or query parameter shows in the request's header table. It is never saved into the collection file.

To edit auth, open the Authorization tab of a request or of a collection or folder. Every text field accepts {{variables}} (see Variables), except the OAuth 2.0 block (see OAuth 2.0).

Inheritance

WhereDefaultInherit available
CollectionNo Authno
FolderInherityes
RequestInherityes

Postguy picks the auth in this order:

  1. The request's own auth.
  2. Each folder, from the innermost to the outermost.
  3. The collection.

The first level that is not Inherit wins. No Auth counts as a result: it stops the search and sends nothing. The Inherit view shows the kind it inherits.

Auth kinds

The kind is the tag stored in the collection file.

Kind (kind)UI labelFields (file keys)Applied on send
inheritInheritnoneresolved to a parent, see above
noauthNo Authnonenothing is added
apikeyAPI Keykey, value, location (header or query)yes. The key name must not be empty. A header of the same name is replaced. A query pair of the same name is replaced, otherwise appended.
basicBasic Authusername, passwordyes, Authorization: Basic <base64 of user:password>
bearerBearer Tokentoken, prefixyes, Authorization: <prefix> <token>. The prefix defaults to Bearer. A blank prefix sends the bare token. An empty token is an error.
digestDigest Authusername, password, realm, nonce, nonceCount, algorithm, qop, opaque, clientNonce, disableRetryRequestyes, see Digest
jwtJWT Bearerlocation, algorithm, secret, secretIsBase64, privateKey, payload, prefix, headersyes. The token is signed at send. iat is added unless the payload has it. In a header it is Authorization: <prefix> <token> (Bearer by default). In the query it is the parameter token.
oauth1OAuth 1.0consumerKey, consumerSecret, token, tokenSecret, signatureMethod, callbackUrl, verifier, timestamp, nonce, version, realm, addParamsToHeader, includeBodyHash, addEmptyParamsToSign, encodeParamsInHeaderyes. The signature goes to the Authorization header, or into the query when addParamsToHeader is off. A random nonce is generated when nonce is empty.
oauth2OAuth 2.0see OAuth 2.0yes, with a stored access token
awsv4AWS Signature v4accessKey, secretKey, region, service, sessionToken, addAuthDataToQueryyes. Signed headers are added. With addAuthDataToQuery, the signature goes into the query instead of the Authorization header.
hawkHawkauthId, authKey, algorithm, user, nonce, ext, appId, dlg, timestamp, includePayloadHashyes, Authorization header
ntlmnoneusername, password, domain, workstation, disableRetryno, stored only
edgegridnoneaccessToken, clientToken, clientSecret, nonce, timestamp, baseUri, headersToSign, maxBodyno, stored only
asapnonealgorithm, issuer, audience, keyId, privateKey, subject, additionalClaims, expiryno, stored only
any other tagnoneeverything is kept verbatimno

Algorithm and method values:

FieldValues
Digest algorithmmd5, md5Sess, sha256, sha256Sess, sha512256
Hawk algorithmsha256, sha1
JWT algorithmhs256, hs384, hs512, rs256, rs384, rs512, es256, es384, es512, ps256, ps384, ps512
OAuth 1.0 signatureMethodhmacSha1, hmacSha256, hmacSha512, rsaSha1, rsaSha256, rsaSha512, plaintext

{{variable}} expansion on send covers Basic, Bearer, API Key, Digest, JWT, OAuth 1.0, AWS v4 and Hawk.

NTLM, Akamai EdgeGrid and ASAP are stored so that collections and imports round-trip without losing them. They are not applied.The UI has no editor for them. It only shows that the kind is kept from the file.Sending a request that resolves to one of them fails with this auth type is not supported yet (v1 sends Basic, Bearer, API key, Digest, JWT, OAuth 1.0, AWS v4 and Hawk). The request is not sent unauthenticated.

If the file names an auth kind this build does not know, Postguy keeps it as is. Resolving to it adds nothing to the request.

The selected kind is also exported and imported with Postman and OpenAPI documents. OpenAPI security schemes map to Basic, Bearer, API Key and OAuth 2.0.

Digest

  • With a nonce filled in: Postguy answers directly from the stored challenge values.
  • With an empty nonce: Postguy first sends the request without credentials. If the server replies 401 with a WWW-Authenticate header, Postguy computes the answer from that challenge and retries once. The console shows the warning Digest challenge accepted; request retried once.

Turn on disableRetryRequest to send only the first request and see the 401 yourself. An empty clientNonce generates a random one.

OAuth 2.0

Grants

Grant (UI)File valueToken flow
Authorization CodeauthorizationCode (default)system browser plus a loopback listener
Authorization Code (PKCE)authorizationCodeWithPkcethe same, with a PKCE challenge
Implicitimplicitnot wired: the button is disabled
Password CredentialspasswordCredentialsdirect request to the token URL
Client CredentialsclientCredentialsdirect request to the token URL

Get a token

Fill in the fields, then press Get New Access Token.

FieldPurpose
Authorization URLBrowser step of the code grants.
Token URLToken endpoint for every grant.
Refresh URLOptional override for refreshing. The token URL is used when empty.
Client ID, Client secretSent as a Basic header or in the body, see below.
Scope, StateState is generated if empty.
Callback URLFilled in for you during a browser flow.
Username, PasswordPassword grant only.
Header prefix, Token name (URL)How the token is added to a request, see below.
Extra paramsKey and value rows, each delivered in the body, the url or the headers. On the token request, only body rows are sent. On the authorization URL, every row is appended to the query.
Access token, Refresh tokenFilled by the flow. You can also type them.

Client credentials and password grants send one request to the token URL.

The two code grants work like this:

  1. Postguy starts a listener on 127.0.0.1 with an ephemeral port and builds the redirect URI http://127.0.0.1:<port>/callback.
  2. It opens the authorization URL in your system browser with response_type=code and the state. For PKCE it also sends code_challenge and code_challenge_method (S256, or Plain).
  3. The listener waits up to five minutes for the redirect, checks state and takes the code. It reads at most an 8 KiB request line, then closes.
  4. Postguy exchanges the code at the token URL (with the PKCE verifier for the PKCE grant).

The app shows progress and errors in its status text.

Authorize using browser is stored in the file as useBrowser. The app does not read it, so the code grants always use the browser.

Client authentication is Client secret in Basic header (default) or Client secret in body. The token request is a form POST with a 30 second timeout, a 4 MiB response cap and the global proxy and TLS settings.

Use the token

SettingEffect
Header (default)Authorization: <Header prefix> <token>. The prefix defaults to Bearer.
URLThe token is appended to the query under Token name (URL), default access_token.

A send fails in two cases:

  • No token: no access token; run the authorization flow first.
  • The stored expiry has passed and no refresh was possible: the access token has expired; refresh it first.

Refresh and storage

  • The Refresh button is enabled when a refresh token exists. expires in <n>s shows next to it when the server reported an expiry.
  • Before a send, Postguy refreshes a token that is past its expiry, if there is a refresh token. The console warns OAuth 2.0 access token refreshed. The new refresh token and scope replace the old ones when the server returns them.
  • Access and refresh tokens live in the workspace secrets file, not in the collection file, like secret variables. The UI masks them. Exports that strip secrets blank them. See Workspace and Import and export.
  • The OAuth 2.0 block is not variable-expanded on send. Type literal values for URLs, client ID and secret.
OAuth 2.0 is partial. The implicit grant and a screen for managing several stored tokens are missing. Each request holds one token pair.

Headless

oauth2_token runs a token flow for a request whose auth is OAuth 2.0 and stores the result. mode is one of:
  • grant: client credentials or password.
  • refresh.
  • code: exchange an authorization code you got elsewhere, with verifier for PKCE.
The tool does not start browser flows. Set the auth itself with request_update (the definition is the serialized request). Send with request_send, which applies inherited auth, Digest retry and automatic refresh. Tools take ids, not names. See Automation tools.
Copyright © 2026