Appearance
Claude
Hand Claude a request — a curl command, a line from your logs, a proxy capture, or a request together with its response — and get it into Sendwire as a ready-to-send call, its response already beside it.
It works through a small file, <name>.sendwire, that describes one exchange. Any tool can write that file; the Skill teaches Claude to.
The Skill
add-to-sendwire is a Claude Skill. Once it is installed, ask Claude things like "add this curl to Sendwire" or "open this API call in Sendwire" and it writes the file for you.
In Sendwire, File → Add Claude Skill installs it for Claude Code in one click. Or do it yourself:
sh
mkdir -p ~/.claude/skills/add-to-sendwire &&
curl -fsSL https://sendwire.dev/add-to-sendwire/SKILL.md \
-o ~/.claude/skills/add-to-sendwire/SKILL.mdBy hand, or for the Claude apps rather than Claude Code:
- Download SKILL.md.
- Put it in a folder named
add-to-sendwire/, then add that folder as a skill:- Claude Code — drop it at
~/.claude/skills/add-to-sendwire/SKILL.md. - Claude apps — add it as a custom skill in Settings.
- Claude Code — drop it at
- Ask Claude to add a request to Sendwire.
The Skill needs nothing from Sendwire and sends nothing anywhere — it only writes a file to your disk.
The format
A .sendwire file is JSON: one object, one request, and optionally the response that came back.
json
{
"format": "sendwire-exchange/v1",
"name": "Get user",
"collection": "Billing API",
"method": "GET",
"url": "https://api.example.com/v1/users/42",
"headers": [{ "key": "Authorization", "value": "Bearer {{token}}" }],
"response": {
"status": 200,
"statusText": "OK",
"headers": [{ "key": "Content-Type", "value": "application/json" }],
"body": "{ \"id\": 42, \"name\": \"Ada\" }"
}
}| Field | |
|---|---|
format | Always sendwire-exchange/v1. |
method, url | Required. The query string may live in url or split into params. |
name | A label. Defaults to the URL's last path segment. |
collection | Where to file it — created if new, "Imported" by default. |
headers, params | Arrays of { key, value }. Leave out Host and Content-Length; Sendwire sets those. |
body | { type, content }, where type is one of none, json, text, xml, form, graphql, soap, binary. The payload is a string in content, even for JSON. |
response | Include only if you actually have it — { status, statusText, headers, body }. Sendwire shows it beside the request without re-sending. A good agent never invents one. |
For SOAP, use "type": "soap", put the full envelope in content, and add soapVersion ("1.1" or "1.2") and, when the service needs it, soapAction — Sendwire turns those into the right Content-Type and SOAPAction header, so you don't set those yourself.
Secrets are best left as {{placeholders}} and set under Environments, not baked into the file.
It opens itself
Because .sendwire is registered to the app, the Skill just opens the file after writing it — Sendwire comes to the front with the request loaded, its response beside it, filed into the collection it named. You don't have to find or double-click anything.
If it doesn't open on its own (Sendwire isn't installed, or the file association isn't set), double-click the file, drag it onto the window, or Import it from the sidebar. Sendwire also imports curl directly, so "paste the curl" is always a fallback.
Whole collections, and export
A .sendwire file is one request. For anything bigger — an OpenAPI spec, a Postman collection, a WSDL — or to get what's in Sendwire back out, the Skill reaches for the sendwire CLI (on your PATH after the one-line install):
sh
sendwire add-openapi ./openapi.yaml --open # OpenAPI 3, opens live
sendwire import ./postman_export.json --open # a Postman collection, env, or export
sendwire add-soap https://example.com/?wsdl --open
sendwire export --out backup.json # export everything (or --format postman)So "import this OpenAPI into Sendwire" or "export my collections" work by asking Claude too. With --open, the imported collections open in Sendwire right away, just like a single request; without it they're written to the workspace and land the next time you open the app.
