Docs · DialCatz

Requests and responses

Build a request in DialCatz — method, params, headers, body and auth — paste cURL, read the response in every view, talk WebSocket and GraphQL, generate code and reopen your history.

Everything you send in DialCatz starts in a request tab in the Requests section. This page goes through the tab from the address bar down to the response, then WebSocket, GraphQL, code generation and history. Where requests are kept is covered in Collections and workspaces; where {{variables}} get their values is in Environments and variables.

The address bar

Methods

The method select offers the seven standard HTTP methods: GET, POST, PUT, PATCH, DELETE, HEAD and OPTIONS. Custom methods are not supported.

The URL field

Type the address, with or without variables: https://api.example.com/users or {{baseUrl}}/users. An address without a scheme gets http:// in front when it is sent.

The URL and the Params table are linked both ways: type ?page=2&limit=20 in the URL and the rows appear in Params; edit a row and the URL follows.

Paste a cURL command

Paste a whole curl … command into the URL field and the tab turns into that request — method, URL, headers, body and basic auth. Handy for a command copied from a browser’s developer tools or an API’s docs. On Windows the cmd form works too — Chrome’s Copy as cURL (cmd) and curl.exe commands — and so does a PowerShell command.

The options DialCatz understands:

Option Becomes
-X, --request The method
--url The URL
-H, --header A header row
-d, --data, --data-raw, --data-binary, --data-ascii, --data-urlencode The body
--json A JSON body
-F, --form A multipart body
-u, --user Basic auth
-I, --head A HEAD request
-A, --user-agent The User-Agent header
-b, --cookie The Cookie header
-e, --referer The Referer header

These options are read and quietly ignored, because they are about how curl itself runs: -o, -m, --connect-timeout, -w, --retry, -x / --proxy, --cacert, --cert and --key.

Send, Cancel and Save

  • Send (mod+enter) sends the request. While it is on its way the button becomes Cancel.
  • Save (mod+S) saves the request. A request that is not in a collection yet (a scratch tab) opens Save request with a Name and In — the collection or folder it goes into.
  • For a ws:// or wss:// address the buttons are Connect, Cancel and Disconnect instead — see WebSocket.

mod+L puts the cursor in the address field from anywhere.

The request panes

Under the address bar sit the panes: Params, Headers, Body (called Message for WebSocket), Auth, Scripts (not for WebSocket) and Code. A badge on each shows how many rows it has, or a dot when it is set. In a read-only team workspace the tab says View only and nothing can be changed.

Key/value tables: params, headers and form fields

Params, Headers and the form bodies all use the same table. Each row has:

  • an on/off switch (Send this row) — switch a row off to keep it without sending it,
  • the key,
  • the value, where {{variables}} work,
  • a Description — a note for people, never sent,
  • a remove button.

Header names autocomplete from the common ones: Accept, Accept-Language, Authorization, Cache-Control, Content-Type, Cookie, If-None-Match, Origin, Referer, User-Agent, X-Requested-With and X-API-Key.

Auto headers

The Auto headers fold at the bottom of the Headers pane shows the headers DialCatz adds on its own. These are added when the request is sent, and each has its own switch:

Header Value
User-Agent DialCatz/<version>
Accept */*
Accept-Encoding gzip, deflate, br
Connection keep-alive
Cache-Control no-cache

Three more are calculated from the request and are read-only: Host, Content-Length and Content-Type.

To change one, switch it off, or add the same header yourself in the table above: the auto row then says overridden above. Which auto headers new requests start with is set in Settings → General → Requests → Auto headers.

Request bodies

The Body pane has eight modes:

Mode What is sent
None No body.
JSON The text you type, as JSON. Beautify tidies it, and a Not valid JSON warning shows while it does not parse.
Text Plain text.
XML XML text.
Form URL-encoded Key/value rows, encoded as application/x-www-form-urlencoded.
Multipart Key/value rows as multipart/form-data; any row can be switched to File.
GraphQL A query and its variables, sent as JSON — see GraphQL.
Binary One file, sent as it is.

Arrays and objects in form bodies

In Form URL-encoded and Multipart, repeat a key to send an array, and use brackets for objects:

Key Value
tags[] a
tags[] b
user[name] Mochi

Files: Multipart and Binary

  • In Multipart, switch a row to File and pick the file.
  • In Binary, press Choose a file… (later Change file…). The file goes as it is, with Content-Type: application/octet-stream unless you set your own Content-Type header. The limit is 200 MB.

Picked file paths stay on this computer. They are never exported, synced to a team or written to a folder workspace, so a teammate opening the same request picks their own file.

GET and HEAD have no body

GET and HEAD requests are sent without a body, even when one is filled in. A note in the Body pane says so.

Generate a body with AI

With AI turned on, the ✦ button in the Body bar writes a body from a sentence such as “a new user with name, email and two addresses”; press Write it. It works for JSON, Text, XML, Form and Multipart. See AI in DialCatz.

Auth

The Auth pane has five types:

Type What it does
Inherit Uses the auth of the nearest folder or collection above the request. A request that is not saved has nothing to inherit.
No auth Sends nothing, even if a folder above has auth.
Bearer token Sends Authorization: Bearer <token>.
Basic A username and password, sent as Authorization: Basic ….
API key A Name and a Value, added to the Header or the Query params.

Secret fields have an eye button to show or hide what is in them. The Bearer pane reminds you: put real tokens in an environment variable marked secret — type {{token}} here and keep the value in an environment. That matters most for workspaces shared through Git, where a literal token would be written into the files.

OAuth 2, Digest and AWS signature auth are not supported. For a token you fetch first, a pre-request script or a login request with a test that saves the token works well.

Variables in requests

{{name}} works in the URL, params, headers, bodies and auth fields. Type {{ and the names you have autocomplete.

Click a variable in a field for its popover. It says where the value comes from — From environment “Staging” or From Globals — or, when nothing defines it, Not set — saving adds it to …. Change the value right there and press Save, or Open environment to go to it.

A name nothing defines is sent as written, braces and all, so a typo is easy to spot in Sent request.

Dynamic variables

These are filled in fresh on every send:

Variable Value
{{$timestamp}} The current Unix time in seconds
{{$isoTimestamp}} The current time as an ISO 8601 string
{{$randomUUID}} or {{$guid}} A new random UUID
{{$randomInt}} A random whole number from 0 to 999

Which value wins when two places define the same name is explained in Where a variable gets its value.

How a request is sent

Default
Timeout 30 seconds (Settings: 1 to 600)
Redirects Followed, up to 10 (Settings: Follow redirects)
Response body Cut at 25 MB
Upload file Up to 200 MB
Certificate checks On

Certificate checks

Certificate checks are on. For a local server with its own self-signed certificate you can skip them in two places:

  • Settings → General → Requests → Skip certificate checks — the app-wide default, for every send.
  • A collection’s Settings… → Skip certificate checks — for that collection’s requests only, even when the app-wide switch is off. It is part of the collection, so a team shares it.

Sites from DevCatz need neither: DevCatz’s local certificate authority is trusted automatically for DevCatz hosts and every *.localhost address.

Request tabs

  • The tab strip scrolls when it gets full. The chevron at its end lists every open tab.
  • + opens a scratch tab — a new request that is not saved anywhere yet.
  • A middle-click closes a tab; mod+W closes the current one.
  • Right-click a tab for New request tab, Duplicate tab, Close tab, Close without saving, Close other tabs, Close all tabs and Close all without saving.
  • Closing a tab with unsaved changes asks Save the changes to “…”? with Save & close (or Save all & close for several) and Close without saving.
  • Open tabs come back after a restart, together with their unsaved edits.
  • In a team workspace, the initials of teammates who have the same request open show on its tab.

The response

The status line

At the top of the response:

  • the status code and text, and the cat’s verdict — Purr. for 2xx, Over there… for 3xx, Hiss! for 4xx and HISS! for 5xx or a failed call,
  • the total time · TTFB (time to the first byte),
  • the size,
  • redirected when a redirect was followed, and cut at 25 MB when the body was too big to keep whole,
  • a small timing sparkline with the last sends of a saved request, so a slowdown stands out.

Two buttons sit on the right: Check in DBCatz (with a chevron for options — see With DevCatz and DBCatz) and ✦ Explain, which asks the AI what the response means (Explain a response).

When the call never got an answer, the response says The call did not go through with the reason, or Request cancelled if you pressed Cancel.

Response tabs

Tab Shows
Body The body, in the views below
Headers Every response header, with a count
Cookies The cookies set, with a count: Name, Value, Domain, Path, Expires and Flags (HttpOnly / Secure / SameSite)
Tests Passed / total — shown when scripts ran
Sent request Exactly what went out, after variables were filled in. The Authorization value is masked.

Body views

DialCatz picks the views that fit the content:

View For
Tree JSON, as a tree you can fold
Pretty JSON, XML or HTML, indented and coloured
Preview HTML (in a sandboxed frame), images (PNG, JPEG, GIF, SVG, WebP) and PDF
Raw The body exactly as it came
Table CSV / TSV, NDJSON, or a JSON array of objects — up to 2000 rows
Base64 Shown when the body is base64
Hex The bytes, for anything binary

When a server sends the wrong Content-Type, the As: select reads the body differently: As: <type> (the automatic choice), As JSON, As XML, As HTML or As text.

The tree view

Expand all and Collapse all open or fold every node. Each node has copy, which copies its value, and path, which copies its path (handy for a test such as toHaveProperty('data.items.0.id')).

The table view

CSV, NDJSON and arrays of objects become a table. A cell that holds JSON gets a { } button: it opens the value pretty-printed and coloured, with Copy and a search box (Search the JSON: Enter for the next match, Shift+Enter for the previous one, Esc clears the search and then closes).

Search the response

Press mod+F, or the search button, and type in Search the response. A counter shows the matches. Enter goes to the next one, shift+enter to the previous one, and Esc closes the search.

More tools

  • Wrap lines on or off.
  • Decode selection — select a base64 string in the body and decode it. The result shows as text, JSON or an image, whichever it turns out to be.
  • Copy the body.
  • Save the body to a file (the save dialog starts in Downloads).

The Tests pane

When scripts ran, the Tests tab shows two sections, Pre-request script and Tests, with PASS or FAIL for each test, any script error, the variables a script set (Variables set: …) and the log lines. A failing test or a broken script opens this pane on its own. Writing tests is covered in Scripts, tests and the runner.

WebSocket

Any request whose address resolves to ws:// or wss:// becomes a WebSocket tab. Variables count: {{wsUrl}} that holds a wss:// address does it too.

  • Connect opens the connection; Cancel stops a connection that is still being made; Disconnect closes it.
  • The request’s headers and auth go with the handshake. For a subprotocol, add a Sec-WebSocket-Protocol header.
  • The Message pane (where Body usually is) is an editor for the message to send; {{variables}} work in it. Send message sends it — or mod+enter while connected.
  • There is no Scripts pane for WebSocket tabs.

The message log

  • The state: Not connected, Connecting…, Connected or Closed, with ↓ received and ↑ sent counts.
  • Filters All, Received and Sent, and a Filter messages box.
  • Follow keeps the newest message in view; Clear empties the log.
  • Each message can be copied; click one to open it in full.
  • Binary messages show as base64 (the first 4 KB).
  • The log keeps up to 2000 entries per tab.

GraphQL

GraphQL is a body mode. Set the Body to GraphQL and you get two editors:

  • Query — the query or mutation.
  • Variables (JSON) — its variables, checked as you type.

DialCatz sends them as a JSON body { "query": …, "variables": … }, usually with POST. There is no schema introspection or autocomplete for GraphQL; the response comes back as ordinary JSON in the views above.

Code generation

The Code pane turns the request into code you can paste elsewhere, with the active environment’s values filled in. Press Copy.

Two languages are offered: cURL (for your shell) and JavaScript fetch.

On Windows there are four: cURL (cmd) — curl.exe, built into Windows 10 and 11, quoted for the Command Prompt, the default — PowerShell (Invoke-WebRequest, with a UTF-8 body), cURL (bash) for Git Bash or WSL, and JavaScript fetch.

No other languages are generated.

History

The History section in the rail keeps every request you send — saved or not — up to 300 entries. When it is full, the oldest are dropped.

  • Entries are grouped by day and show the time, method, URL, status (failed when the call did not go through) and the time it took in ms.
  • Filter by URL, method or status narrows the list. It shows 50 per page, with paging.
  • Click an entry to reopen it in a tab, ready to send again.
  • Clear asks Clear the history?; confirm with Clear history. Saved requests are not touched.

History lives in DialCatz’s settings on this computer only. It is not synced to a team and never written to a folder workspace.

Last updated 2026-11-03