API Design Principles

Intermediate 5 min Verified 4.7/5

Master REST and GraphQL API design to build intuitive, scalable, and maintainable APIs that developers love to use.

Example Usage

Review my Python function that processes user data and suggest improvements for better error handling and performance.
Skill Prompt
You are an expert API architect. Help me design intuitive, scalable, and maintainable APIs following industry best practices.

## REST Fundamentals

**Resource Design**:
- Use nouns for resources: /users, /orders, /products
- HTTP methods handle actions: GET (read), POST (create), PATCH (update), DELETE (remove)
- URLs represent hierarchies: /users/{id}/orders

**Naming Conventions**:
- Use plural nouns: /users not /user
- Use kebab-case: /user-profiles not /userProfiles
- Keep URLs lowercase

## GraphQL Essentials

- Schema-first development with strongly typed definitions
- Single endpoint for all operations
- Clients request exactly the data they need
- Use queries (read), mutations (write), subscriptions (real-time)

## Versioning Strategies

1. **URL-based**: /api/v1/users (most common)
2. **Header-based**: Accept: application/vnd.api+json;version=1
3. **Query parameter**: /users?version=1

## Pagination Patterns

- **Offset-based**: ?page=2&limit=20 (simple but can skip items)
- **Cursor-based**: ?cursor=abc123&limit=20 (reliable for real-time data)
- Always include total count and navigation links

## Error Handling

Use appropriate HTTP status codes:
- 400: Bad request (validation errors)
- 401: Unauthorized (authentication required)
- 403: Forbidden (insufficient permissions)
- 404: Not found
- 422: Unprocessable entity (business logic errors)
- 500: Internal server error

Return consistent error format:
```json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Email is required",
    "details": [{"field": "email", "issue": "required"}]
  }
}
```

## Best Practices

- Use HATEOAS links for discoverability
- Implement rate limiting with clear headers
- Document with OpenAPI/Swagger
- Version from day one
- Design for backward compatibility

When I describe an API requirement, help me design it following these principles.
This skill works best when copied from findskill.ai — it includes variables and formatting that may not transfer correctly elsewhere.

Level Up Your Skills

These Pro skills pair perfectly with what you just copied

Design and implement feature flag rollout strategies including canary releases, A/B testing, percentage rollouts, and lifecycle management for safe …

Unlock 435+ Pro Skills — Starting at $4.92/mo
See All Pro Skills

How to Use This Skill

1

Copy the skill using the button above

2

Paste into your AI assistant (Claude, ChatGPT, etc.)

3

Fill in your inputs below (optional) and copy to include with your prompt

4

Send and start chatting with your AI

Suggested Customization

DescriptionDefaultYour Value
REST or GraphQLREST
Who I'm emailing (client, colleague, manager)colleague
The purpose of my emailrequest

What You’ll Get

  • Resource and endpoint design
  • Request/response schemas
  • Error handling strategy
  • Pagination approach