API Documentation Generator · git:20260213.c690ecf · 2026-02-13 · sha256 52b1dfaf3566036a
API Documentation Generator git:20260213.c690ecfA
Immutable. This exact content never changes and is served at /api/v1/blob/52b1dfaf3566036a.
---
name: API Documentation Generator
description: Generate comprehensive, professional API documentation following industry best practices
---
# API Documentation Guidelines
When generating API documentation, create clear, comprehensive, and developer-friendly documentation.
## Documentation Structure
Every API documentation should include:
1. **Overview** - What the API does, who it's for
2. **Authentication** - How to authenticate (API keys, OAuth, JWT)
3. **Base URL** - The root endpoint URL
4. **Endpoints** - Detailed endpoint documentation
5. **Request/Response Examples** - Real, working examples
6. **Error Codes** - Complete error reference
7. **Rate Limiting** - Usage limits and quotas
8. **Versioning** - API version strategy
9. **Changelog** - Version history
## Endpoint Documentation Format
For each endpoint, document:
```markdown
### GET /api/v1/users/{id}
Retrieves a single user by their unique identifier.
**Authentication Required**: Yes (Bearer token)
**Path Parameters**:
- `id` (integer, required): The unique user identifier
**Query Parameters**:
- `include` (string, optional): Comma-separated list of related resources to include
- Options: `orders`, `preferences`, `address`
- Example: `include=orders,preferences`
**Request Headers**:
- `Authorization: Bearer <token>` (required)
- `Accept: application/json` (optional, default)
**Success Response** (200 OK):
```json
{
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"orders": [
{
"id": 456,
"total": 99.99,
"status": "completed"
}
]
}
```
**Error Responses**:
- `401 Unauthorized`: Missing or invalid authentication token
- `404 Not Found`: User with specified ID doesn't exist
- `429 Too Many Requests`: Rate limit exceeded
**Example Request**:
```bash
curl -X GET "https://api.example.com/api/v1/users/123?include=orders" \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json"
```
```
## Best Practices
### 1. Use Clear, Descriptive Language
- Write for developers who are new to your API
- Avoid jargon unless it's industry-standard
- Explain the "why" not just the "what"
### 2. Provide Working Examples
- Use realistic data in examples
- Include complete request/response cycles
- Show common use cases and patterns
### 3. Document Edge Cases
- What happens with missing optional fields?
- How are null values handled?
- What are the validation rules?
### 4. Error Documentation
- List all possible error codes
- Explain what causes each error
- Show how to resolve common errors
```markdown
## Error Codes
| Code | Message | Description | Resolution |
|------|---------|-------------|------------|
| 400 | Bad Request | Invalid request syntax or parameters | Check request body against schema |
| 401 | Unauthorized | Missing or invalid authentication | Include valid Bearer token in Authorization header |
| 403 | Forbidden | Authenticated but lacking permissions | Contact admin to verify account permissions |
| 404 | Not Found | Resource doesn't exist | Verify the resource ID is correct |
| 422 | Unprocessable Entity | Validation failed | Review validation errors in response body |
| 429 | Too Many Requests | Rate limit exceeded | Wait before retrying; check X-RateLimit-Reset header |
| 500 | Internal Server Error | Server-side error occurred | Retry request; contact support if persists |
```
### 5. Authentication Examples
Show multiple authentication methods if supported:
```markdown
## Authentication
### Bearer Token (Recommended)
```bash
curl -H "Authorization: Bearer your-token-here" \
https://api.example.com/api/v1/users
```
### API Key (Legacy)
```bash
curl -H "X-API-Key: your-api-key" \
https://api.example.com/api/v1/users
```
### OAuth 2.0
```bash
# First, obtain access token
curl -X POST https://api.example.com/oauth/token \
-d "grant_type=client_credentials" \
-d "client_id=your-client-id" \
-d "client_secret=your-client-secret"
# Then use in requests
curl -H "Authorization: Bearer access-token" \
https://api.example.com/api/v1/users
```
```
## Code Examples in Multiple Languages
Provide examples in popular languages:
```markdown
### Python
```python
import requests
headers = {
'Authorization': 'Bearer your-token-here',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.example.com/api/v1/users/123',
headers=headers
)
user = response.json()
print(f"User: {user['name']}")
```
### JavaScript
```javascript
const response = await fetch('https://api.example.com/api/v1/users/123', {
headers: {
'Authorization': 'Bearer your-token-here',
'Content-Type': 'application/json'
}
});
const user = await response.json();
console.log(`User: ${user.name}`);
```
### Java
```java
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/api/v1/users/123"))
.header("Authorization", "Bearer your-token-here")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
```
```
## OpenAPI/Swagger Integration
When appropriate, include OpenAPI specification:
```yaml
openapi: 3.0.0
info:
title: User Management API
version: 1.0.0
description: RESTful API for managing user accounts
paths:
/api/v1/users/{id}:
get:
summary: Get user by ID
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: User found
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: User not found
```
## Interactive Documentation
Recommend tools for interactive docs:
- **Swagger UI** - Interactive API exploration
- **Redoc** - Clean, responsive API documentation
- **Postman Collections** - Shareable request collections
- **API Blueprint** - Markdown-based API documentation
## Versioning Documentation
Document version history clearly:
```markdown
## Changelog
### v2.0.0 (2024-03-01)
**Breaking Changes**:
- `GET /users` now requires authentication
- Removed deprecated `username` field; use `email` instead
**New Features**:
- Added `PATCH /users/{id}` for partial updates
- New query parameter `sort` for ordering results
**Bug Fixes**:
- Fixed pagination issue with `limit` > 100
### v1.5.0 (2024-02-01)
**New Features**:
- Added bulk user creation endpoint `POST /users/bulk`
```
## Rate Limiting Documentation
Be explicit about rate limits:
```markdown
## Rate Limits
| Tier | Requests/Hour | Requests/Day |
|------|--------------|--------------|
| Free | 100 | 1,000 |
| Pro | 1,000 | 10,000 |
| Enterprise | Unlimited | Unlimited |
**Rate Limit Headers**:
- `X-RateLimit-Limit`: Maximum requests allowed
- `X-RateLimit-Remaining`: Requests remaining in current window
- `X-RateLimit-Reset`: Unix timestamp when limit resets
When rate limited, you'll receive a `429 Too Many Requests` response:
```json
{
"error": "Rate limit exceeded",
"retry_after": 3600
}
```
```
## When This Skill Activates
This skill automatically activates when:
- Generating REST API documentation
- Creating README files for API projects
- Writing OpenAPI/Swagger specifications
- Documenting GraphQL APIs
- Creating developer onboarding guides
- Questions about API documentation best practices