api-integration-example

An example guide for connecting software to external APIs, which are services accessed by sending requests over a network. It describes client structure, validation, timeouts, retries, caching, error handling, and response conversion.

In plain words
What is it for?
Use it when designing API clients, preparing requests, handling network and service errors, retrying temporary failures, caching responses, and transforming returned data.
Why use it?
It reduces inconsistency and failure-handling gaps when outside services are slow, unavailable, or return unexpected data. It is explicitly an example template.

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/hansonli05/cursor-rules-system/api-integration-example
Clone the repo
git clone --depth 1 https://github.com/Hansonli05/Cursor-rules-system

Made for: Cursor.

Per session 7 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,275 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
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 $0.00007 $0.02275
Opus 5 $0.00003 $0.01137
Sonnet 5 $0.00001 $0.00455
Haiku 4.5 $0.00001 $0.00228

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

Security

Grade A, and why

api-integration-example 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 yesterday.

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 fetch(url, config);
.cursor/rules/feature-rules/api-integration-example.mdc · 372 lines

How it starts

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

API Integration (Example)

Summary

Defines consistent patterns for integrating with external APIs including error handling, retry logic, caching, and data transformation. This is an example template.

Context

API integrations are critical points of failure and complexity. Consistent patterns ensure reliability, maintainability, and good user experience even when external services have issues.

Instructions

API Client Structure

  • Base Client: Common configuration, headers, interceptors
  • Service Clients: Specific API endpoints and methods
  • Error Handling: Consistent error types and recovery
  • Retry Logic: Exponential backoff for transient failures
  • Caching: Appropriate caching strategies per endpoint

Request/Response Flow

  1. Request Preparation

    • Validate input parameters
    • Add authentication headers
    • Apply request transformations
    • Log request details (non-sensitive)
  2. Request Execution

    • Execute with timeout
    • Handle network errors
    • Implement retry logic
    • Monitor request performance
  3. Response Processing

    • Validate response structure
    • Transform data format
    • Cache when appropriate
    • Log response details

Examples

Base API Client

class BaseApiClient {
  private baseURL: string;
  private defaultTimeout: number = 10000;
  
  constructor(baseURL: string) {
    this.baseURL = baseURL;
  }
  
  async request<T>(
    endpoint: string, 
    options: RequestOptions = {}
  ): Promise<ApiResponse<T>> {
    const config = {
      method: options.method || 'GET',
      headers: {
        'Content-Type': 'application/json',
        ...this.getAuthHeaders(),
        ...options.headers
      },
      timeout: options.timeout || this.defaultTimeout,
      body: options.body ? JSON.stringify(options.body) : undefined
    };
    
    try {
      const response = await this.executeWithRetry(
        `${this.baseURL}${endpoint}`, 
        config,
        options.retryOptions
      );
      
      return this.processResponse<T>(response);
    } catch (error) {
      throw this.handleError(error, endpoint);
    }
  }
  
  private async executeWithRetry(
    url: string, 
    config: RequestConfig,
    retryOptions?: RetryOptions
  ): Promise<Response> {
    const maxRetries = retryOptions?.maxRetries || 3;
    const backoffMs = retryOptions?.backoffMs || 1000;
    
    for (let attempt = 0; attempt <= maxRetries; attempt++) {
      try {
        const response = await fetch(url, config);
        
        if (response.ok || !this.isRetryableError(response.status)) {
          return response;
        }
        
        if (attempt === maxRetries) {
          throw new ApiError('Max retries exceeded', response.status);
        }
        
        await this.delay(backoffMs * Math.pow(2, attempt));
      } catch (error) {
        if (attempt === maxRetries || !this.isRetryableError(error)) {
          throw error;
        }
        
        await this.delay(backoffMs * Math.pow(2, attempt));
      }
    }
  }
}

Read the full file on GitHub · 372 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. yesterday First seen · 372 lines · 7 tokens per session scan A cca9225887df

Subscribe to this mod's changes

api-integration-example is a cursor rule published in the GitHub repository Hansonli05/Cursor-rules-system (2 stars, last pushed 1y ago), licensed MIT. It adds 7 tokens to every session and 2,275 once invoked, about $0.0000 per session on Opus 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-31.