hermes

Integrate a third-party API

Implements a typed client for a third-party HTTP API from its docs, with auth, pagination, retries, rate limits and a test fake. Use when wiring an external service into your code.

context

Integrations break in production, not in the demo. The token expires mid-batch, page 2 never loads because the cursor was ignored, a 429 storm turns into a retry storm, a non-idempotent POST is retried and charges twice, a new field in the response crashes a strict parser, and the tests hit the real API. The client you write must hold up against all of that, and must not invent endpoints or fields the docs do not describe.

task

Build a client for the operations below in (if empty, use the repo's main language and its existing HTTP library).

Documentation: Operations needed:

  1. Read the docs (fetch them if given a URL). Extract, with section references: base URL and versioning, auth scheme, each needed operation's method, path, parameters and response fields, the pagination style, rate limits and their headers, error format, and idempotency support. List anything the docs leave unclear under Doc gaps; do not fill gaps with guesses.
  2. Look for an existing HTTP wrapper, config loader, logger and error types in the repo and reuse them.
  3. Design a small interface: one method per operation, typed inputs, typed results, and a typed error hierarchy (auth, not found, validation, rate limited, server, transport) that keeps the status code and the provider's request id.
  4. Implement:
  • Auth: credentials from configuration, never hard-coded or logged. For OAuth, refresh before expiry and let only one refresh run at a time.
  • Timeouts on every request, for both connect and read.
  • Retries only for transport errors, 429, 502, 503 and 504, and only for idempotent methods or requests carrying an idempotency key. Use exponential backoff with full jitter, honour Retry-After, and cap both the attempts and the total time.
  • Rate limits: a client-side limiter sized to the documented limit, plus backing off when the rate-limit headers say so.
  • Pagination: a lazy iterator that follows the documented cursor, link header or offset, with a stop condition and a guard against a cursor that repeats.
  • Parsing: model only the fields you use, ignore unknown fields, and parse dates and money explicitly (money as decimal or minor units, never float).
  1. Write a test fake implementing the same interface for callers' tests, and transport-level tests with canned responses for: success, multi-page listing, 429 with Retry-After then success, a 5xx retried then succeeding, a non-retryable 4xx, 401, and a malformed body.
  2. Run the tests. Unit tests must make no real network calls.
constraints
  • Every endpoint, field and header you use must appear in the docs. If one you need does not, stop and report it.
  • Redact authorization headers, tokens and personal data from logs and error messages.
  • Do not add an SDK or HTTP dependency the repo does not already use unless the docs require it. If the provider publishes an official SDK, mention it in one line under Operational notes.
  • Read the relevant code before making a claim about it. Do not guess what a file, function or config contains.
  • If the information you need is not available, say what is missing and how to get it instead of inventing it.
  • Before saying the work is done, run the check that proves it (tests, build, type check or the command the user gave) and report the real result.
  • If you could not run a check, say so plainly and say which one.
output format

Doc gaps

What the docs leave unclear and the assumption you made for each, or "None".

Interface

The public methods with signatures, one line of purpose each.

Changes

One line per file.

Tests

One line per test: the scenario it covers.

Configuration

| Setting | Env var | Default | Required |

Operational notes

Rate limits, retry budget and worst-case latency per call, and what to monitor.

2 required values still a placeholder; the assistant will ask for them.

details

kind
Prompt: a task you run by name to get one finished thing back
domain
Software engineering
category
Implementation
level
Intermediate
made for
Backend engineer, Software engineer, Full-stack engineer
needs
repo-read, file-write, shell, web
risk
network
version
v1.0.0 · incubating
reviewed
2026-10-02
works in
Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Antigravity, OpenCode, Windsurf, Zed, Continue, AGENTS.md

Edit on GitHubReport a problem

use in

Hodios CLI
npx @hermes-hq/hodios install integrate-third-party-api --target claude-code
Agent Skills
npx skills add hermes-hq/hodios-dist --skill integrate-third-party-api -a claude-code
Add the Hodios marketplace (once)
claude plugin marketplace add hermes-hq/hodios-dist
Install the software-engineering plugin
claude plugin install hodios-software-engineering@hodios

The plugin brings every entry in this domain at once.

more in implementation

All of Implementation
PersonaImplementation

Backend engineer

Acts as a backend engineer focused on correct data handling, clear API contracts, explicit failure modes and services that are easy to operate. Use as a builder or reviewer persona for server code.

backend-engineer
PersonaImplementation

Frontend engineer

Acts as a frontend engineer who balances UX, accessibility, performance and maintainable components, and checks work in a real browser. Use to build or review web UI.

frontend-engineer
PersonaImplementation

Mobile engineer

Acts as a mobile engineer who designs for flaky networks, battery and memory limits, platform conventions and app-store releases. Use for iOS, Android or cross-platform work.

mobile-engineer
PromptImplementation

Build a webhook handler

Implements a webhook receiver with signature checks, replay protection, idempotent processing, fast acknowledgement, async work, retries and tests. Use when integrating Stripe, GitHub or similar.

build-webhook-handler
PromptImplementation

Implement a background job

Implements a background or scheduled job with idempotency, retries with backoff, dead-letter handling, timeouts, concurrency limits and observability. Use to move slow work off the request path.

implement-background-job
PromptImplementation

Implement secure file uploads

Implements secure file uploads with direct-to-storage signed URLs, type and size validation, a malware-scan hook, safe naming and orphan cleanup. Use for backends accepting user files.

implement-file-upload