Skip to content

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.md

By hand, or for the Claude apps rather than Claude Code:

  1. Download SKILL.md.
  2. 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.
  3. 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
formatAlways sendwire-exchange/v1.
method, urlRequired. The query string may live in url or split into params.
nameA label. Defaults to the URL's last path segment.
collectionWhere to file it — created if new, "Imported" by default.
headers, paramsArrays 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.
responseInclude 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.

Local-first. No account. No cloud. Telemetry off by default.