Skip to content

POSTING 3 ~/guide/

Getting Started

Posting is an HTTP client that lives in your terminal. Posting 3 is a single, self-contained binary: there's no Python or other runtime to install.

Installation

Posting 3 is in beta. Install it with Homebrew, download a release, or build it with Go.

Homebrew

On macOS and Linux, install the beta from Posting's Homebrew tap:

brew install darrenburns/homebrew/posting@beta

Posting 2's Homebrew formula also installs a command called posting, so run brew uninstall posting first if you have it.

Downloading a release

Each GitHub release has archives for macOS, Linux and Windows. Extract the posting binary and put it in a directory on your PATH.

Go

If you have Go 1.25.5 or newer installed, run:

go install github.com/darrenburns/posting/v3/cmd/posting@latest

This builds Posting and puts the posting binary in $(go env GOPATH)/bin (usually ~/go/bin). Make sure that directory is on your PATH, then run:

posting

Building from source

To build from a clone of the repository instead:

git clone https://github.com/darrenburns/posting.git
cd posting
go build -o posting ./cmd/posting
./posting

Checking your installation

$ posting version
Posting 3.0.0-beta.1

posting --help lists the options you can start Posting with.

Coming from Posting 2?

Posting 3 reads the same configuration file, collections and .env files as Posting 2, so you can point it at your existing work straight away. See Coming from Posting 2 for what's new and what's changed.

A quick introduction

This introduction walks through creating a POST request to the JSONPlaceholder mock API, sending it, and saving it. It focuses on the keyboard, but you can click on anything in Posting too.

Posting 3 with a collection in the sidebar and a JSON response on screen.

Collections

A collection is a directory of requests. Each request is stored in its own YAML file, so a collection is easy to read, share and keep in version control.

If you start Posting without choosing a collection, your requests are saved to the default collection, a directory Posting keeps for you. That's handy for quick, throwaway requests, but for a project you'll probably want a collection of its own:

mkdir my-collection
posting --collection my-collection

The name of the collection is shown at the top of the sidebar on the left. Learn more in Collections.

Choosing the method

When Posting opens, the cursor is in the URL bar of a new, empty request.

Press Ctrl+T to open the method menu. Each method has a letter you can press to choose it: press P for POST.

Entering the URL

Posting moves you back to the method selector. Press Tab to move to the URL bar (or press Ctrl+L from anywhere) and type:

https://jsonplaceholder.typicode.com/users

The URL is highlighted as you type, so typos are easy to spot.

Paste a curl command

You can also paste a whole curl command into the URL bar. Posting turns it into a request, filling in the method, headers and body for you. See Importing curl commands.

Adding a JSON body

Press Ctrl+O to enter jump mode. Labels appear over every part of the screen: type the label of the place you want to go. Press W to jump to the request's Body tab.

Press Down to move into the tab, which puts you on the body type selector, then press Right to change the body type from None to Raw. JSON is already selected as the content type, which is what we want, so press Tab twice to move past it and into the text area. Type or paste:

{
  "name": "John Doe",
  "username": "johndoe",
  "email": "john.doe@example.com"
}

The body is syntax highlighted, and Posting sends Content-Type: application/json for you when the request goes out.

Sending the request

Press Ctrl+J to send the request. This works wherever you are in Posting. You can also press Alt+Enter, or press Enter while the URL bar is focused.

The response appears in the Response panel, with its status, size and how long it took. The JSON is formatted and highlighted for you.

Working with the response

Press Ctrl+O then A to jump to the response Body tab, and Down to move into the body. From here you can:

  • scroll with the arrow keys, Page Up and Page Down
  • press Y to copy the whole body to your clipboard
  • press W to turn line wrapping on or off
  • press F3 to open the body in your pager, or F4 to open it in your editor

The Headers, Cookies and Trace tabs show the rest of the response. In the headers or cookies, press Y to copy the value of the row under the cursor, N to copy its name, or B to copy both. See Responses for more.

Saving the request

Press Ctrl+S to save the request. The first time you save, Posting asks for a name, and where in the collection to put it:

  • Name: Create user
  • File name: leave it empty to use one made from the name (create-user)
  • Folder: leave empty to save at the top of the collection, or type a path such as users to save into a folder, which is created if it doesn't exist

Press Enter to save. The request now appears in the sidebar, and it's written to my-collection/users/create-user.posting.yaml. From now on, Ctrl+S saves your changes in place.

Finding your way around

A few keys will get you a long way:

Key What it does
Ctrl+P Open the command palette, which lists everything Posting can do
Ctrl+O Enter jump mode
F1 Show the keyboard shortcuts
Ctrl+N Open a new request tab
Ctrl+G Search the requests in the collection
Ctrl+C Quit

The footer at the bottom of the screen always shows the most useful keys for whatever is focused.

Making it yours

  • Try a different look: press Ctrl+P, choose Theme…, and move through the list to preview each theme. See Themes.
  • Put the request and response side by side with Layout: side by side in the command palette.
  • Make these choices permanent in your configuration file:
theme: aurora
layout: horizontal