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.
| Example | Document type | Use it as a model for |
|---|---|---|
| ExampleRotate an API key | Document typeHow-to guide | Use it as a model forAny task done in a known order |
| ExampleHow rate limits work | Document typeConcept page | Use it as a model forBackground a reader needs before the tasks make sense |
| ExampleCreate an invoice | Document typeAPI reference | Use it as a model forEndpoints, commands, functions and settings |
| ExampleSet up a weather station | Document typeQuick start guide | Use it as a model forFirst-run setup for a device or an app |
| ExampleError E04 | Document typeTroubleshooting article | Use it as a model forHelp-center articles and fix-it tables |
| ExamplePayment declined | Document typeError message | Use it as a model forAny message shown in an interface |
| ExampleVersion 3.4 | Document typeRelease notes | Use it as a model forWhat changed, and what users must do |
| ExampleA salt solution | Document typeLab protocol | Use it as a model forScientific and laboratory procedures |
| ExampleA data logger | Document typeSpecification sheet | Use it as a model forData sheets and product specs |
| ExampleTablets in the cold | Document typeReport summary | Use it as a model forTest reports, evaluations and studies |
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.
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.
- In the dashboard, go to Settings > API keys.
- Next to the key you want to replace, click Rotate.
- Choose when the old key stops working. If a live system uses the key, choose In 24 hours; otherwise choose Now.
- Click Create key. The new key appears only once, so copy it before you close the dialog.
- Replace the old key in your integration's configuration and redeploy.
- Send a test request with the new key to
GET /v1/ping. You should get200 OK. - 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.
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.
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.
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.
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 ascus_4kT9.currency(string, required): a three-letter ISO 4217 code in lowercase, such asusdoreur.lines(array, required): 1 to 250 line items. Each has adescription, aquantityand aunit_amountin the currency's smallest unit, which is cents forusd.due_date(string, optional): when payment is due, asYYYY-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.
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"
}| Status | Error code | When it happens |
|---|---|---|
| Status400 | Error codeinvalid_due_date | When it happensdue_date is before today |
| Status400 | Error codetoo_many_lines | When it happenslines has more than 250 items |
| Status401 | Error codeunauthorized | When it happensThe API key is missing, wrong or expired |
| Status404 | Error codecustomer_not_found | When it happensNo customer has that customer_id |
| Status429 | Error coderate_limited | When it happensThe account has run out of request tokens (see the concept page above) |
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.
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.
- Put 2 AA batteries in the sensor and 2 in the display. The display beeps and shows dashes.
- Keep the sensor within 1 m of the display for 3 minutes, until an outdoor temperature appears on the display.
- 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.
- 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.
- 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.
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.
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.
- Turn the printer off and unplug it.
- Press the two tabs on the rear cover together and lift the cover off.
- 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.
- Shine a flashlight on the rollers and remove any torn scraps.
- Replace the cover, plug the printer in and turn it on. The orange light should go out within 30 seconds.
- 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.
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.
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
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.
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.
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.
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.
- Put on safety glasses and a lab coat.
- Place the weighing boat on the balance, tare it, and weigh 5.84 g of NaCl. Write down the mass the balance shows.
- 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.
- 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.
- Add deionized water until the bottom of the meniscus sits on the calibration mark, adding the last few milliliters drop by drop.
- Stopper the flask and invert it 10 times to mix.
- 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.
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.
- 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.
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.
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.
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.
| Example | The question its reader brings | What the page does with it |
|---|---|---|
| ExampleConcept page: how rate limits work | The 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 invoice | The 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-2 | The 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
- 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.
- 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.
- 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.
- 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.



