--- name: api-documentation-writer description: Generate comprehensive API documentation including endpoint descriptions, request/response examples, authentication guides, error codes, and SDKs. Creates OpenAPI/Swagger specs, REST API docs, and developer-friendly reference materials. Use when users need to document APIs, create technical references, or write developer documentation. --- # API Documentation Writer Create comprehensive, developer-friendly API documentation. ## Instructions When a user needs API documentation: 1. **Gather API Information**: - API type (REST, GraphQL, WebSocket, gRPC)? - Authentication method (API key, OAuth, JWT)? - Base URL and versioning strategy? - Available endpoints and their purposes? - Request/response formats? - Rate limiting or usage restrictions? 2. **Generate Complete Documentation Structure**: **Overview Section**: - What the API does (1-2 sentences) - Key capabilities - Getting started checklist - Support and resources **Authentication**: - How to obtain credentials - Where to include auth tokens - Example authenticated request - Token refresh process (if applicable) **Base URL & Versioning**: - Production and sandbox URLs - Version format (path, header, query param) - Current version and changelog link **Endpoints** (for each endpoint): - HTTP method and path - Description of what it does - Path parameters - Query parameters - Request headers - Request body schema - Response codes and meanings - Response body schema - Example request (curl, JavaScript, Python) - Example response (formatted JSON) **Error Handling**: - Standard error response format - Common error codes and meanings - Troubleshooting guide **Rate Limiting**: - Limits and windows - Headers to check - How to handle rate limit errors **SDKs & Libraries**: - Official client libraries - Community libraries - Installation instructions **Webhooks** (if applicable): - Available webhook events - Setup process - Payload examples - Security verification 3. **Format Output** (REST API example): ```markdown # [API Name] Documentation ## Overview [Brief description of what the API does] **Base URL**: `https://api.example.com/v1` **Authentication**: API Key via `Authorization` header ## Quick Start 1. [Step 1] 2. [Step 2] 3. [Step 3] ## Authentication All requests require an API key in the `Authorization` header: ``` Authorization: Bearer YOUR_API_KEY ``` Get your API key from [dashboard link]. ## Endpoints ### GET /resource Retrieve a list of resources. **Parameters**: - `limit` (optional, integer): Number of results (max 100, default 10) - `offset` (optional, integer): Pagination offset (default 0) - `filter` (optional, string): Filter by field **Request Example**: ```bash curl -X GET "https://api.example.com/v1/resource?limit=10" \ -H "Authorization: Bearer YOUR_API_KEY" ``` **Response** (200 OK): ```json { "data": [ { "id": "123", "name": "Example", "created_at": "2024-01-15T10:00:00Z" } ], "total": 100, "limit": 10, "offset": 0 } ``` **Response Codes**: - `200` - Success - `400` - Bad request (invalid parameters) - `401` - Unauthorized (invalid API key) - `429` - Rate limit exceeded - `500` - Server error ### POST /resource Create a new resource. **Request Body**: ```json { "name": "string (required)", "description": "string (optional)", "metadata": "object (optional)" } ``` **Request Example**: ```bash curl -X POST "https://api.example.com/v1/resource" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "My Resource", "description": "A test resource" }' ``` **Response** (201 Created): ```json { "id": "124", "name": "My Resource", "description": "A test resource", "created_at": "2024-01-15T10:30:00Z" } ``` ## Error Handling All errors follow this format: ```json { "error": { "code": "invalid_request", "message": "The 'name' field is required", "details": { "field": "name" } } } ``` **Common Error Codes**: - `invalid_request` - Malformed request - `authentication_failed` - Invalid API key - `not_found` - Resource doesn't exist - `rate_limit_exceeded` - Too many requests - `internal_error` - Server error ## Rate Limiting **Limits**: 1000 requests per hour **Headers**: - `X-RateLimit-Limit`: Total requests allowed - `X-RateLimit-Remaining`: Requests remaining - `X-RateLimit-Reset`: Timestamp when limit resets When rate limited, you'll receive a `429` status code. ## Code Examples ### JavaScript (Node.js) ```javascript const response = await fetch('https://api.example.com/v1/resource', { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }); const data = await response.json(); ``` ### Python ```python import requests response = requests.get( 'https://api.example.com/v1/resource', headers={'Authorization': 'Bearer YOUR_API_KEY'} ) data = response.json() ``` ## Support - Documentation: https://docs.example.com - Support: support@example.com - Status: https://status.example.com ``` 4. **For GraphQL APIs**, adapt to show: - Schema definitions - Query examples - Mutation examples - Subscription examples - Variables and directives 5. **Documentation Best Practices**: - Start with working example (copy-paste ready) - Show both request and response - Use realistic example data - Include error cases - Explain every parameter - Provide code examples in multiple languages - Use consistent formatting - Add "Try it" interactive examples when possible - Link related endpoints - Include changelog and versioning 6. **Developer Experience Tips**: - Include a "Quick Start" with working example in 60 seconds - Provide Postman collection or OpenAPI spec - Show common use cases and workflows - Include troubleshooting section - Add testing/sandbox environment - Provide SDKs with installation instructions - Include rate limiting details upfront - Show pagination patterns - Explain filtering and sorting options ## Example Triggers - "Write API documentation for my REST endpoints" - "Create OpenAPI spec for my API" - "Document this GraphQL schema" - "Generate developer docs for my webhook API" - "Write authentication guide for API" ## Output Quality Ensure documentation: - Starts with working example - Explains every parameter and field - Shows realistic request/response examples - Includes error handling - Provides code samples in multiple languages - Uses consistent formatting - Is organized logically (most common operations first) - Includes authentication clearly - Covers edge cases and limitations - Follows REST/GraphQL best practices - Is scannable with good use of headers - Includes interactive examples when possible Generate comprehensive, developer-friendly API documentation that makes integration effortless.