api-testing-rest

api-testing-rest is a skill for Claude Code from PramodDutta/qaskills. It costs 32 tokens per session (4,538 once invoked), scanned A, original, MIT.

A guide to testing REST APIs, which are web services that communicate through standard HTTP requests and responses. It covers request methods, response codes, data formats, authentication, errors, and contract checks.

In plain words
What is it for?
It helps write or review tests for creating, reading, updating, and deleting data; checking status codes and JSON responses; testing authentication and errors; and verifying API contracts.
Why use it?
It provides a consistent way to check both successful requests and invalid or unusual ones, including whether responses follow the agreed API format.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the qa-essentials plugin — 10 skills shipped together

Good fit It helps write or review tests for creating, reading, updating, and deleting data; checking status codes and JSON responses; testing authentication and errors; and verifying API contracts.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/pramoddutta/qaskills/api-testing-rest
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add PramodDutta/qaskills --skill api-testing-rest
Clone the repo
git clone --depth 1 https://github.com/PramodDutta/qaskills

Made for: Claude Code.

Or install qa-essentials, the plugin that ships this one along with the rest of its 10 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for api-testing-rest

README.md
[![agentmods](https://agentmods.dev/badge/skills/pramoddutta/qaskills/api-testing-rest/github.svg)](https://agentmods.dev/skills/pramoddutta/qaskills/api-testing-rest)
Your own site
<a href="https://agentmods.dev/skills/pramoddutta/qaskills/api-testing-rest"><img src="https://agentmods.dev/badge/skills/pramoddutta/qaskills/api-testing-rest/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for api-testing-rest

Your own site · 80×15
<a href="https://agentmods.dev/skills/pramoddutta/qaskills/api-testing-rest"><img src="https://agentmods.dev/badge/skills/pramoddutta/qaskills/api-testing-rest.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 32 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,538 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high Tool Misuse · line 281
    Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
    Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00032 $0.04538
Opus 5.5 $0.00013 $0.01815
Sonnet 5.5 $0.00006 $0.00908
Haiku 4.5 $0.00003 $0.00454

Measured 1mo ago against content hash 302a291d8302, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

api-testing-rest scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

const response = await axios.get(`${this.baseURL}${endpoint}`, {
packs/qa-essentials/skills/api-testing-rest/SKILL.md · 645 lines

How it starts

The opening of the file, as written. The whole thing — 645 lines — stays where its author put it; the contents beside it link to each section on GitHub.

API Testing REST Skill

You are an expert QA engineer specializing in REST API testing. When the user asks you to write, review, or design API tests, follow these detailed instructions.

Core Principles

  1. Test the contract, not the implementation -- Focus on request/response format, not server internals.
  2. Cover all HTTP methods -- GET, POST, PUT, PATCH, DELETE each have different semantics.
  3. Validate status codes -- Correct status codes are part of the API contract.
  4. Test error paths -- Bad requests and edge cases are as important as happy paths.
  5. Assert on response structure -- JSON schema validation ensures consistency.

REST API Fundamentals

HTTP Methods and Their Semantics

GET     - Retrieve resource(s), safe and idempotent
POST    - Create new resource, not idempotent
PUT     - Replace entire resource, idempotent
PATCH   - Partial update, idempotent
DELETE  - Remove resource, idempotent
HEAD    - Same as GET but no response body
OPTIONS - Get supported methods for resource

HTTP Status Codes

Success (2xx):
  200 OK              - Successful GET, PUT, PATCH, DELETE
  201 Created         - Successful POST, resource created
  204 No Content      - Successful DELETE (no body returned)

Client Error (4xx):
  400 Bad Request     - Invalid request body or parameters
  401 Unauthorized    - Missing or invalid authentication
  403 Forbidden       - Authenticated but not authorized
  404 Not Found       - Resource doesn't exist
  409 Conflict        - Resource conflict (duplicate email)
  422 Unprocessable   - Validation error

Server Error (5xx):
  500 Internal Error  - Server error
  503 Service Unavailable - Service down or overloaded

Testing Patterns with Different Tools

1. JavaScript/TypeScript with Axios/Fetch

// api-client.ts
import axios from 'axios';

export class ApiClient {
  private baseURL = 'https://api.example.com';
  private authToken: string | null = null;

  setAuthToken(token: string) {
    this.authToken = token;
  }

  private getHeaders() {
    return {
      'Content-Type': 'application/json',
      ...(this.authToken && { Authorization: `Bearer ${this.authToken}` }),
    };
  }

  async get(endpoint: string, params = {}) {
    const response = await axios.get(`${this.baseURL}${endpoint}`, {
      headers: this.getHeaders(),
      params,
    });
    return response;
  }

  async post(endpoint: string, data: any) {
    const response = await axios.post(`${this.baseURL}${endpoint}`, data, {
      headers: this.getHeaders(),
    });
    return response;
  }

  async put(endpoint: string, data: any) {
    const response = await axios.put(`${this.baseURL}${endpoint}`, data, {
      headers: this.getHeaders(),
    });
    return response;
  }

  async delete(endpoint: string) {
    const response = await axios.delete(`${this.baseURL}${endpoint}`, {
      headers: this.getHeaders(),
    });
    return response;
  }
}

Read the full file on GitHub · 645 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 645 lines · 32 tokens per session scan A 302a291d8302

Subscribe to this mod's changes

api-testing-rest is a skill published in the GitHub repository PramodDutta/qaskills (237 stars, last pushed 8d ago), licensed MIT. It adds 32 tokens to every session and 4,538 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

api-tester

Test and document API endpoints - validate responses, check status, generate examples.

gooseworks-ai/goose-skills · 18 tokens

backend/testing-guide

A guide for writing backend tests: small unit tests, tests that check connected parts such as an API and database, and end-to-end tests that follow a complete user flow.

echoVic/boss-skill · 30 tokens

lov-atom-core-sdk

A shared software core and typed SDK that contain the feature's main rules, validation, defaults, state changes, and side effects. Command-line tools, APIs, pages, and agent tools can call this core instead of implementing those rules again.

lovstudio/skills · 55 tokens

api-testing

Use when writing API endpoint tests — integration tests, contract validation, response assertions, mocked external services — even when the user says 'test this route' without naming API testing.

event4u-app/agent-config · 38 tokens

api-verification

An API verification workflow that creates both an .http request file and a .cjs JavaScript file, then runs an automation script to test them. An API is an interface through which software exchanges requests and responses.

devcodex-labs/devcodex · 26 tokens

test-case-to-katalon-studio

Convert Katalon True Platform/TestOps manual test cases into Katalon Studio automation inside a local Studio Test Project checkout. Use when you need to author or extend a .tc test case file and its paired Groovy script under Scripts/, keep test case variable GUIDs consistent with the .ts test suite bindings that read…

katalon-labs/true-skills · 204 tokens