external-apis

Coding rules for clients that call external APIs, which are services reached over the internet. They cover return values, error handling, types, documentation, logging, and response checks.

In plain words
What is it for?
Use them when adding or reviewing API client methods, especially methods that fetch data, validate responses, log requests, or handle network errors.
Why use it?
They give API code a consistent way to handle missing data and failures, reducing unclear behavior and unsafe access to incomplete responses.

Cursor rule for Cursor

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.

agentmods
npx agentmods add rules/technickai/ai-coding-config/external-apis
Clone the repo
git clone --depth 1 https://github.com/TechNickAI/ai-coding-config

Made for: Cursor.

Per session 4 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 352 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin 94% copy Near-identical to another mod 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 $0.00004 $0.00352
Opus 5 $0.00002 $0.00176
Sonnet 5 $0.00001 $0.00070
Haiku 4.5 $0.00000 $0.00035

Measured 2d ago against content hash d89ee09de6e4, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

external-apis scanned grade A with 0 findings 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 2d 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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

This is a copy

94% identical to external-apis — 1 line differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

.cursor/rules/external-apis.mdc · 60 lines

What it actually says

External API Client Guidelines

These guidelines ensure consistent, reliable, and maintainable API clients.

Core Principles

  • We return None on API errors (don't raise exceptions)
  • We use type hints consistently
  • We document methods with helpful docstrings (skip redundant Args/Returns)
  • We use appropriate logging levels
  • We let exceptions bubble up unless we're truly handling them

Method Pattern

def get_something(self, param: str) -> dict | None:
    """Fetch something from the API.

    Returns None if the API returns no data or encounters an error.
    """
    logger.info(f"Fetching something for {param}")

    response = self.request("/endpoint", params={"key": param})
    if not response:
        logger.warning(f"No data returned for {param}")
        return None

    return response["data"]

Error Handling

We let the base HTTP client handle HTTP/network errors. We only use try/except for specific scenarios with actual handling. We validate response structure before access.

Validation Pattern

response = self.request("/endpoint", params={"key": value})
if not response or "data" not in response:
    logger.warning(f"No data returned for {value}")
    return None

Response Processing

We validate response structure before access, convert to standard types (Decimal for financial data), clean and normalize data, and return None for errors (not empty dicts).

Testing

We mock all external calls in unit tests, use @pytest.mark.flaky for live API tests, and test both success and error cases.

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. 2d ago First seen · 60 lines · 4 tokens per session scan A d89ee09de6e4

Subscribe to this mod's changes

external-apis is a cursor rule published in the GitHub repository TechNickAI/ai-coding-config (24 stars, last pushed 2mo ago), licensed MIT. It adds 4 tokens to every session and 352 once invoked, about $0.0000 per session on Opus 5. A static security scan graded it A with 0 findings. It is 94% identical to external-apis, differing in 1 line, and is treated as a copy.