This is the complete set of shortcuts Tetiva handles. Use Cmd on macOS and Ctrl on Windows — the app accepts either, so one table covers both. Tab switching and settings belong to the main window; a detached request window has no tabs, but sending, saving and every editor shortcut work there as usual.
Window and tabs#
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + , | Open settings — works with no tabs open |
| Cmd/Ctrl + W | Close the active tab; in a detached window, close the window |
| Cmd/Ctrl + 1…9 | Jump to the tab with that number |
| Cmd/Ctrl + [ and Cmd/Ctrl + ] | Previous and next tab, wrapping around |
| Cmd/Ctrl + F | Focus the collection search in the sidebar; after a click into a response body, a request body, or a GraphQL response or schema, focus that panel's search instead |
Cmd/Ctrl + [ and Cmd/Ctrl + ] are ignored while the cursor is in a code editor, where they change indentation. In other editors, such as a script, Cmd/Ctrl + F does not reach the sidebar either.
Sending and saving#
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + Enter | Send the request (HTTP, gRPC, GraphQL); in a WebSocket tab, send the composed message |
| Enter in the URL field | HTTP sends, GraphQL executes the operation, gRPC connects and loads the schema, WebSocket connects or disconnects |
| Cmd/Ctrl + S | Save the request; in the collection editor, save the collection |
These do not fire from inside a modal, so a rename or save dialog never sends the request behind it.
Editors#
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + Z, Shift + Cmd/Ctrl + Z | Undo and redo |
| Cmd/Ctrl + / | Comment or uncomment lines in a JSON body |
| Cmd/Ctrl + A | Select the whole document — request body, response body, schema viewer |
Cmd/Ctrl + click on {{var}} | Open the Environments window at that variable: focused when it is defined, prefilled with the name when it is not |
| Cmd/Ctrl + click on a field in a GraphQL query | Jump to that field's type in Schema |
| Enter in the key field of the new row | Add a row to the headers, params, form or variables table |
| Tab in the value field of the new row | Same thing without leaving the keyboard |
The description editor#
The description editor — the Docs tab of a request, and Overview on a collection — has a set of its own:
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + B, I, K | Bold, italic, link |
| Tab and Shift + Tab | Indent and outdent a list item without moving focus out of the field |
| Enter | Continue the list; inside a table, move to the next row |
| Escape | Leave the editor |
| / at the start of a line | Command menu |
| Tab and Shift + Tab in a table | Next and previous cell, wrapping onto a new row |
| Enter on an empty last table row | Delete that row and put the cursor after the table |
Cmd/Ctrl + Enter still sends the request from inside this editor — the only thing taken away from it here is inserting a blank line. In a WebSocket request it sends the composed message instead, and in a collection description nothing is sent at all. What the editor itself can do is on Collections.
Response#
| Shortcut | Action |
|---|---|
| Enter in the Search field | Next match in the response body |
| Shift + Enter in the Search field | Previous match |
| Escape in the Search field | Clear the query and return to the body |
| Alt + ↑ and Alt + ↓ (⌥ on macOS) | Previous and next change while comparing responses |
| Cmd/Ctrl + click in History | Select records to compare |
The Search field belongs to the Body tab; it and Compare are covered on Response viewer.
Collection tree#
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + click a request or collection | Add it to the selection, or remove it |
| Shift + click | Select a range |
| Delete or Backspace | Delete the selection, with a confirmation |
| Escape | Clear the selection; in the search field, clear the query |
There is no shortcut for creating a request: use New Request in a collection's context menu — the + button in the sidebar header creates a collection, not a request. How the tree is organised is covered in Collections.