Call any REST API dynamically. Make GET, POST, PUT, DELETE requests to any endpoint with custom headers and JSON body.
npx skills add https://github.com/NVIDIA/SkillEvaluator --skill api-caller
Generic skill to call any REST API dynamically. Can work with OpenAPI specs or direct endpoint calls.
scripts/parse_openapi.py first when the user gives an OpenAPI or Swagger spec.scripts/call_api.py for the actual HTTP request.Use this first when given an API spec URL. Parses an OpenAPI/Swagger spec and returns available operations with parameters. Run commands from the skill base directory; script paths are relative to this SKILL.md file.
Usage:
python scripts/parse_openapi.py <spec_url> [filter_path]
Arguments:
<spec_url> - URL to the OpenAPI spec (required)[filter_path] - Optional: filter operations by path substringExample:
python scripts/parse_openapi.py "https://api.example.com/openapi.json"
Returns: API name, base URL, and list of operations with their parameters, request body schema, etc.
Call a REST API endpoint directly or using an OpenAPI spec. Run commands from the skill base directory; script paths are relative to this SKILL.md file.
Usage:
python scripts/call_api.py --url <endpoint_url> [options]
Arguments:
--url <endpoint_url> - Direct API endpoint URL (required if no --spec)--method <GET|POST|PUT|DELETE> - HTTP method (default: GET)--data <json_string> - Request body as JSON string--headers <json_string> - Custom headers as JSON string--spec <openapi_url> - OpenAPI spec URL (optional, for discovery)--operation <operation_id> - Operation ID from OpenAPI spec--params <json_string> - Path/query parameters as JSONpython scripts/call_api.py --url "https://api.example.com/data" --method GET
# Call API with query parameters appended to URL
python scripts/call_api.py --url "https://en.wikipedia.org/w/api.php" --params '{"action": "query", "titles": "NVIDIA", "format": "json"}'
# Call API with authentication
python scripts/call_api.py --url "https://api.example.com/data" --headers '{"Authorization": "Bearer TOKEN"}'
# Create a resource
python scripts/call_api.py --url "https://api.example.com/items" --method POST --data '{"name": "test", "value": 123}'
# Discover and call an endpoint from OpenAPI spec
python scripts/call_api.py --spec "https://api.example.com/openapi.json" --operation "getItems" --params '{"param": "value"}'
--headerscode-generator skill instead?_limit=N, ?limit=N, ?per_page=N. If unsupported, fetch all and filter with code-generatorWhen given an OpenAPI spec URL, follow this workflow:
python scripts/parse_openapi.py: python scripts/parse_openapi.py "<spec_url>"
python scripts/call_api.py using the discovered endpoint and parameterscode-generator)Take nvidia/api-caller from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.