Technical writing examples: 10 annotated samples by document type

Ten annotated technical writing examples, one per document type: a how-to, a concept page, API reference, a quick start, troubleshooting, release notes and more.

By Strokes Team · · 17 min read

Key takeaways

  • Each example does one job: it tells the reader how to do a task, explains how something works, gives facts to look up or reports what was found.
  • Good instructions say what the reader should see after the steps that can go wrong, so a mistake shows up at the step that caused it.
  • Troubleshooting articles put the error code or symptom in the title, word for word, because that is what readers type into a search box.
  • A report summary opens with the finding and the recommendation, in numbers; the method and the limits come after.
A thick blue manual with colored tabs and a ribbon marker on a sunlit desk, its cover showing app windows and a gear above a grid of ten icons, among them a book, a numbered list, code brackets, a warning sign, a rocket, a flowchart, tools and a box, beside a steaming mug, a spiral notepad with a pen, a pencil cup and sticky notes.
Ten documents, ten jobs. Each one takes its shape from what its reader came to do.
Table of contents
  1. How-to guide: rotating an API key
  2. Concept page: how rate limits work
  3. API reference: creating an invoice
  4. Quick start: a home weather station
  5. Troubleshooting article: a paper jam
  6. Error message: before and after
  7. Release notes: version 3.4
  8. Lab protocol: preparing a salt solution
  9. Specification sheet: a data logger
  10. Report summary: a field test
  11. What the ten examples share
  12. Mistakes that weaken technical documents
  13. Turn an example into your own
  14. Frequently asked questions

Technical writing examples teach most when they are complete and come with notes. The ten below are original, one for each common type of technical document: a how-to guide, a concept page, an API reference entry, a quick start guide, a troubleshooting article, an error message, release notes, a lab protocol, a specification sheet and a technical report summary. Each is followed by a short note on why it works.

The products and companies are invented, so borrow the structures freely. For the principles behind them, see what technical writing is. Standard operating procedures have their own page of SOP examples, so they don't appear here.

ExampleDocument typeUse it as a model for
ExampleRotate an API keyDocument typeHow-to guideUse it as a model forAny task done in a known order
ExampleHow rate limits workDocument typeConcept pageUse it as a model forBackground a reader needs before the tasks make sense
ExampleCreate an invoiceDocument typeAPI referenceUse it as a model forEndpoints, commands, functions and settings
ExampleSet up a weather stationDocument typeQuick start guideUse it as a model forFirst-run setup for a device or an app
ExampleError E04Document typeTroubleshooting articleUse it as a model forHelp-center articles and fix-it tables
ExamplePayment declinedDocument typeError messageUse it as a model forAny message shown in an interface
ExampleVersion 3.4Document typeRelease notesUse it as a model forWhat changed, and what users must do
ExampleA salt solutionDocument typeLab protocolUse it as a model forScientific and laboratory procedures
ExampleA data loggerDocument typeSpecification sheetUse it as a model forData sheets and product specs
ExampleTablets in the coldDocument typeReport summaryUse it as a model forTest reports, evaluations and studies
Find the reader most like yours, then borrow that example's structure.

How-to guide: rotating an API key

A how-to guide takes a reader who already knows what they want through one task. This one is for developers using Brightledger, an invented invoicing platform.

How-to guide: Rotate an API key

Rotate an API key

Rotate a key when someone with access to it leaves your team, when it may have been exposed, or on your regular schedule. Rotating creates a new key and lets the old one keep working for up to 24 hours while you switch your systems over.

Before you start: you need the Admin role, and access to wherever your integration stores its key, such as your server's environment variables.

  1. In the dashboard, go to Settings > API keys.
  2. Next to the key you want to replace, click Rotate.
  3. Choose when the old key stops working. If a live system uses the key, choose In 24 hours; otherwise choose Now.
  4. Click Create key. The new key appears only once, so copy it before you close the dialog.
  5. Replace the old key in your integration's configuration and redeploy.
  6. Send a test request with the new key to GET /v1/ping. You should get 200 OK.
  7. In API keys, check that the old key's status shows Expiring, with the time it stops working.

If requests fail after rotating: the old key expired before every system had switched. Create another key and update the systems still using the old one. Expired keys can't be restored.

Original example, written for this guide.

Why it works. The first paragraph says when to do the task, so readers know at once whether they are on the right page, and the prerequisites come before step 1. Each step is one action, with interface names in bold exactly as on screen, and the one irreversible moment, a key shown only once, is flagged inside its step. Step 6 says what success looks like, and the last paragraph covers the most likely failure: an old key that expired before every system had switched.

Concept page: how rate limits work

A concept page explains something the reader has to understand before the tasks make sense. It has no numbered steps.

Concept page: How rate limits work

How rate limits work

The Brightledger API limits how many requests each account can make, so one busy integration can't slow the service down for everyone else. Think of the limit as a bucket of tokens. Each account's bucket holds 100 tokens and refills at 10 tokens per second. Every request uses one token. When the bucket is empty, the API rejects requests with 429 Too Many Requests until tokens refill.

So you can send a burst of up to 100 requests at once, but over time you can't average more than 10 requests per second. A nightly job that fires 5,000 requests as fast as it can will start getting rejections after the first hundred or so. The same job paced at 10 requests per second finishes in a little over eight minutes without a single one.

Every response includes a RateLimit-Remaining header with the number of tokens left, so your code can slow down before it reaches zero. Rate limits are separate from your plan's monthly request quota, which counts every request and resets on the first day of each month.

To retry rejected requests safely, see Handle 429 responses.

Original example, written for this guide.

Why it works. The page gives the reader a picture to think with, the bucket, then turns it into numbers they can plan around, with a worked case that shows why a burst and an average behave differently. It separates rate limits from the monthly quota, an easy confusion, and stops where the task begins: retrying is a how-to, so it gets its own page and a link.

API reference: creating an invoice

Reference is for looking things up, so every entry has the same shape and leaves nothing out.

API reference: Create an invoice

POST /v1/invoices

Creates a draft invoice for a customer. It doesn't send the invoice: to email it to the customer, call POST /v1/invoices/{id}/send.

Body parameters

  • customer_id (string, required): the customer to bill, such as cus_4kT9.
  • currency (string, required): a three-letter ISO 4217 code in lowercase, such as usd or eur.
  • lines (array, required): 1 to 250 line items. Each has a description, a quantity and a unit_amount in the currency's smallest unit, which is cents for usd.
  • due_date (string, optional): when payment is due, as YYYY-MM-DD. Must be today or later. Default: 30 days after the invoice is created.

Returns 201 Created and the invoice, with status set to draft.

Original example, written for this guide.

Example request

curl https://api.brightledger.example/v1/invoices \
  -H "Authorization: Bearer $BRIGHTLEDGER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "cus_4kT9",
    "currency": "usd",
    "due_date": "2026-12-15",
    "lines": [
      { "description": "Copyediting, chapters 1-6", "quantity": 1, "unit_amount": 180000 }
    ]
  }'

Example response

HTTP/1.1 201 Created

{
  "id": "inv_8Qm2",
  "status": "draft",
  "customer_id": "cus_4kT9",
  "currency": "usd",
  "total": 180000,
  "due_date": "2026-12-15"
}
StatusError codeWhen it happens
Status400Error codeinvalid_due_dateWhen it happensdue_date is before today
Status400Error codetoo_many_linesWhen it happenslines has more than 250 items
Status401Error codeunauthorizedWhen it happensThe API key is missing, wrong or expired
Status404Error codecustomer_not_foundWhen it happensNo customer has that customer_id
Status429Error coderate_limitedWhen it happensThe account has run out of request tokens (see the concept page above)
Errors for POST /v1/invoices, part of the same reference entry.

Why it works. Every parameter gives the same facts in the same order: name, type, whether it is required, what it means, and its limits or default. The description says what the call doesn't do, because sending is the step a reader is most likely to assume. Amounts come with their unit, so nobody reads 180000 as $180,000 instead of $1,800. The request is complete, headers and all, and each error row starts from the code the reader will actually see.

Quick start: a home weather station

A quick start gets a new owner from the box to one working result, fast, and leaves everything else to the manual.

Quick start: Larkspur WS-2 weather station

Set up your Larkspur WS-2

Time: about 15 minutes. You need: the outdoor sensor, the display, 4 AA batteries, a phone with the Larkspur app, and a 2.4 GHz Wi-Fi network.

  1. Put 2 AA batteries in the sensor and 2 in the display. The display beeps and shows dashes.
  2. Keep the sensor within 1 m of the display for 3 minutes, until an outdoor temperature appears on the display.
  3. In the app, tap Add device and follow the prompts to join your Wi-Fi network. The Wi-Fi icon on the display stops blinking when it is connected.
  4. Mount the sensor outdoors in the shade, 1.5 to 2 m above the ground and at least 3 m from walls, vents and paving.
  5. After an hour, compare the reading with the temperature on the app's Nearby tab. If they differ by more than 2°C, the sensor is probably in direct sun; move it.

Next: set frost and wind alerts under Settings > Alerts, or see the manual for mounting the sensor on a pole.

Original example, written for this guide.

Why it works. It makes one promise, a working station in about 15 minutes, and lists the time and everything needed before step 1. It covers only the path most owners take; pole mounts and alerts get a pointer, not a section. Most steps end with something the reader can see or hear, and the mounting step gives distances instead of “a suitable location”. The quick start guide template has the same parts ready to fill in.

Troubleshooting article: a paper jam

A troubleshooting article starts from a symptom. Readers arrive from a search box with an error code in hand, so the code goes in the title.

Troubleshooting article: Error E04

Error E04: paper jam in the rear tray

What you see: the display shows E04, the orange light blinks, and printing stops. Applies to: Halden P300 and P310 printers.

Why it happens: a sheet is stuck between the rear tray and the rollers, usually because the tray was filled above the line or loaded with curled paper.

  1. Turn the printer off and unplug it.
  2. Press the two tabs on the rear cover together and lift the cover off.
  3. Pull the sheet out slowly with both hands, in the direction the paper normally travels. Pulling it backward can tear it and leave scraps on the rollers.
  4. Shine a flashlight on the rollers and remove any torn scraps.
  5. Replace the cover, plug the printer in and turn it on. The orange light should go out within 30 seconds.
  6. Reload the tray with no more than 100 sheets of flat paper, below the fill line.

If E04 comes back: the paper sensor may be dirty; see Clean the paper sensor. If that doesn't fix it, contact support with the serial number from the label inside the rear cover.

Original example, written for this guide.

Why it works. The title is the code and what it means, which is what people type into a search box. “What you see” lets readers confirm they are on the right page, and “Applies to” stops owners of other models from following the wrong steps. The risky step carries its reason inside it, and the article ends with what to do when the fix fails. In a printed manual the same content becomes one row of a troubleshooting table, as in the user manual template.

Error message: before and after

An error message is the shortest technical document there is, and the one people read in the worst mood.

Error message: a declined card at checkout

Before

ERR_TXN_402: Transaction failed.

After

Payment declined

Your bank declined the card because the billing ZIP code doesn't match the one on its records. Enter the ZIP code from your card statement and try again, or pay with a different card.

Buttons: Edit ZIP code · Use another card

Original example, written for this guide.

Why it works. Google's course on writing helpful error messages asks for two things: identify the cause of the error, and explain how to fix it. The rewrite does both in the user's words. The cause is the ZIP code, not a code number. The recovery is spelled out as the next action, with the place to find the right value (the card statement) and a second way out if that fails. Each action is also a button, so nobody hunts for it. The code isn't lost: it goes to the log, where support can find it.

Release notes: version 3.4

Release notes tell existing users what changed and whether they have to do anything about it.

Release notes: Brightledger 3.4

Brightledger 3.4, October 28, 2026

Upgrade notes

  • API version 2023-01 stops working on March 1, 2027. After that date, requests that use it return 410 Gone. Move to version 2026-06 before then; the migration guide lists the three fields that changed.

New

  • Installments. Customers can pay an invoice in up to four installments. Turn it on for an invoice under Payment options.
  • Credit note export. Download credit notes as a CSV file from Reports > Credit notes.

Improved

  • Invoice numbers can now restart every calendar year, as INV-2027-0001. Choose Yearly under Settings > Numbering. Existing invoices keep their numbers.

Fixed

  • Invoices in Japanese yen no longer show two decimal places.
Original example, written for this guide.

Why it works. The one change that will break something comes first, with a date and the exact symptom. The rest is grouped by what happened, so each reader can skip to what affects them, and every entry describes the change from the user's side: what they can now do and where to find it, not a ticket title. The release notes template has the same sections, plus highlights and known issues.

Lab protocol: preparing a salt solution

Scientific protocols are technical writing for people in lab coats. The details a general reader would skip are the ones that decide whether the result is accurate.

Lab protocol: Prepare 1 L of 0.1 M sodium chloride solution

You need: sodium chloride (NaCl), analytical grade, molar mass 58.44 g/mol; deionized water; a balance that reads to 0.01 g; a weighing boat; a 1 L beaker and a stirring rod; a funnel; a 1 L volumetric flask with stopper; a wash bottle; a storage bottle.

Calculation: 0.1 mol/L × 1 L × 58.44 g/mol = 5.844 g. Weigh 5.84 g.

  1. Put on safety glasses and a lab coat.
  2. Place the weighing boat on the balance, tare it, and weigh 5.84 g of NaCl. Write down the mass the balance shows.
  3. Pour about 700 mL of deionized water into the beaker. Add the NaCl, rinse the weighing boat into the beaker with the wash bottle, and stir until no crystals remain.
  4. Pour the solution into the volumetric flask through the funnel. Rinse the beaker and the funnel twice with a little deionized water and add the rinses to the flask.
  5. Add deionized water until the bottom of the meniscus sits on the calibration mark, adding the last few milliliters drop by drop.
  6. Stopper the flask and invert it 10 times to mix.
  7. Pour the solution into the storage bottle and label it with the contents, the concentration, the date and your initials.

Record in your notebook: the mass you weighed and the concentration it gives. For 5.84 g, that is 0.0999 M.

Original example, written for this guide.

Why it works. The calculation is on the page, so a reader can check it and scale it to another volume, and the materials list gives the balance's precision, which decides how many decimal places the mass can have. The steps that decide accuracy, the rinses and the last few drops, say how as well as what. In a paper, the same work shrinks to a sentence or two in the methods section; the methodology examples show how much detail that section keeps.

Specification sheet: a data logger

A specification sheet is reference in its purest form: no sentences, just properties and values that a buyer or an engineer compares.

Specifications: Fernhill TL-4 temperature data logger
  • Measurement range: −40 to 85°C
  • Accuracy: ±0.3°C from 0 to 50°C; ±0.5°C over the rest of the range
  • Resolution: 0.01°C
  • Logging interval: 1 second to 24 hours, set by the user
  • Memory: 64,000 readings, about 444 days at a 10-minute interval
  • Battery: one CR2032 coin cell, replaceable; about 12 months at a 10-minute interval
  • Connection: USB-C; exports CSV files
  • Enclosure: polycarbonate, rated IP67
  • Size and weight: 52 × 30 × 14 mm; 22 g

Accuracy measured against a calibrated reference thermometer at 0, 25 and 50°C.

Original example, written for this guide.

Why it works. Each line holds one property, and every value has a unit. Figures that depend on conditions carry them: accuracy changes across the range, and battery life depends on the logging interval. The memory figure is also given in the unit a buyer plans in, days of logging, the enclosure has a standard rating instead of the word “waterproof”, and the note says how accuracy was measured, which is what an engineer comparing two loggers needs to know.

Report summary: a field test

The summary of a technical report is written for the reader who will read nothing else, who is usually the person making the decision.

Report summary: TX-9 tablet battery life in cold storage

Finding. At −20°C (−4°F), TX-9 tablets ran for 3 hours 40 minutes of scanning on average, against an 8-hour shift. At room temperature the same units ran for 9 hours 15 minutes.

Recommendation. Fit the extended battery (part EB-2), which has twice the capacity, to the 60 tablets used in cold storage, and install a charging dock at each freezer exit so workers can swap batteries at breaks. Estimated cost: $14,200. We don't recommend replacing the tablets: none of the three alternative models we tested lasted longer than 5 hours at −20°C.

What we did. From October 6 to 17, 2026, we ran 12 TX-9 units and the 3 alternatives in Freezer B at the Reno distribution center, using the standard scanning script (one scan every 20 seconds, screen at 60% brightness) until each unit shut down. Section 3 describes the method; sections 4 and 5 give the data for every unit.

Limits. All the batteries tested were less than a year old, and older batteries will do worse. We did not test how the heavier extended battery affects comfort over a full shift.

Original example, written for this guide.

Why it works. It opens with the finding in numbers, set against what the job needs, so the gap is visible in one sentence. The recommendation follows with a cost and the alternative it rules out, which is the next question a manager asks. The method gets one paragraph, enough to trust the result, and the limits keep the conclusion honest. The executive summary template uses the same order for business reports.

What the ten examples share

Each example does one job, and the reason shows when you put three of them side by side and ask what their readers arrive with.

ExampleThe question its reader bringsWhat the page does with it
ExampleConcept page: how rate limits workThe question its reader bringsHow many requests can I send, and what happens if I send more?What the page does with itGives a picture to think with, then numbers to plan by; no steps
ExampleAPI reference: create an invoiceThe question its reader bringsWhat exactly does this call accept and return?What the page does with itLists every parameter in the same order, with type, limit and default
ExampleQuick start: Larkspur WS-2The question its reader bringsHow do I get one working reading today?What the page does with itTakes one path in five steps and points elsewhere for the rest

Swap the shapes and each reader loses. A developer checking the maximum number of line items doesn't want the bucket picture, and a new owner unpacking the weather station doesn't want every sensor setting in a table. The pages link to each other instead, so each one stays short. The other habits they share:

  • A reader with a goal. Each opens by telling readers whether they are in the right place: when to rotate a key, which printers a fix applies to.
  • Exact values. Times, distances, limits, codes and units, never “a while” or “a suitable place”.
  • Visible success. The steps say what the reader should see when they worked: a beep, a 200 OK, a light going out.
  • A plan for failure. Most of them say what to do when something goes wrong, the moment a reader needs the page most.
  • Consistent words. Each document uses one term for each thing. A team that writes many of them keeps those terms in a style guide.

Mistakes that weaken technical documents

In the examples

  • Titles name the task or the symptom
  • Prerequisites come before step 1
  • A warning sits inside the step it applies to
  • Every value has a unit
  • One term for each thing, every time
  • Failure gets its own paragraph

In weak documents

  • Titles name a feature: “Keys”, “Paper”
  • A missing permission surfaces at step 6
  • The warning arrives after the action
  • “Wait a few minutes”, “large files”
  • Key, token and credential for the same thing
  • Everything is assumed to work

Turn an example into your own

  1. Pick the example closest to your reader

    Match on what the reader is trying to do, not on the product. An internal admin page may need the API reference pattern, and a hardware returns process may need the troubleshooting one.

  2. Copy the structure, not the content

    Keep the order of the parts and their labels (Before you start, What you see, Applies to), then write your own content into them.

    If you draft in Strokes, attach the example you are following and ask the Strokes Assistant which of its parts your draft leaves out, such as an Applies to line or the paragraph on what to do when the fix fails.

  3. Replace every invented value with a tested one

    Run each step yourself on a clean account or device, and measure the numbers: how long it took, the real limits, the exact wording of every message.

  4. Watch one real reader use it

    Give the page to someone who has never done the task and say nothing while they follow it. Every pause or question marks a gap.

Frequently asked questions

What is a technical writing sample?

A technical writing sample is a document you show to demonstrate your skills, usually when applying for a job. It can be published work or a piece written for the purpose, such as a how-to guide for a tool you know well. Label samples you wrote on your own initiative, and remove anything confidential from work done for an employer.

What should a technical writing portfolio include?

Aim for range rather than volume: a procedure or tutorial, a reference page and an explanation or report show a reviewer three different skills. For each sample, say who the reader was, what problem the document solved and what you did to get it right, such as interviewing engineers or testing every step yourself.

How long should a technical writing sample be?

Long enough to be a complete document. A whole quick start or troubleshooting article shows more than an excerpt from a long manual, because the reviewer can see how it opens, how it is structured and how it ends. If your best work is long, send one representative section and say briefly what the rest covered.

Read next