Custom API Development
Custom REST and GraphQL API development for businesses that need to expose their data and functionality to mobile apps, partner systems or third-party tools — built with authentication, versioning, documentation and rate limiting from the start, not as an afterthought.
REST API development
Custom REST API design and development following established conventions — resource-oriented URLs, correct HTTP methods, status codes, pagination, filtering and sorting. Built for the use cases of the specific consumers: mobile apps, third-party integrations, partner access and internal microservices.
- Resource-oriented URL structure: /resources, /resources/{id}
- Correct HTTP methods: GET, POST, PUT, PATCH, DELETE
- Consistent response format: envelope, status, data, error
- Pagination: cursor or offset-based with sensible defaults
- Filtering and sorting parameters on collection endpoints
- HTTP status code usage: 200, 201, 204, 400, 401, 403, 404, 422, 500
- Request validation with descriptive error messages
- CORS configuration for browser-based clients
GraphQL API development
GraphQL API development for use cases where clients need flexibility in what data they request — mobile apps that need different data shapes than the web app, or partner systems that query the data in complex, relationship-traversing ways that REST endpoints don't serve well.
- GraphQL schema design: types, queries, mutations, subscriptions
- Resolver implementation with efficient data loading
- N+1 problem prevention with DataLoader batching
- Query depth and complexity limits to prevent abuse
- Schema documentation with descriptions on all types and fields
- Subscription support for real-time data push
- File upload handling via multipart form
- GraphQL Playground or GraphiQL explorer endpoint
API authentication & security
API authentication implementation appropriate to the use case — API keys for server-to-server integrations, OAuth2 with refresh tokens for user-authorised access, JWT for stateless authentication and mTLS for high-security B2B integrations.
- API key authentication with scope assignment
- OAuth2 authorisation code flow for user-delegated access
- JWT generation, validation and refresh token handling
- HTTPS enforcement on all API endpoints
- Input validation and injection prevention on all endpoints
- Sensitive data masking in API responses and logs
- OWASP API Security Top 10 compliance review
- Penetration test preparation and remediation
API versioning & documentation
API versioning strategy and OpenAPI documentation that makes the API easy to consume and maintainable over time — versioned endpoints that allow breaking changes without disrupting existing consumers, and interactive documentation that developers can use to understand and test the API.
- URL-based versioning: /api/v1, /api/v2
- Backwards compatibility commitment per minor version
- Breaking change notification and migration guide
- OpenAPI 3.0 specification maintained alongside code
- Swagger UI or Redoc interactive documentation
- Code examples in multiple languages per endpoint
- Changelog documenting all API changes per version
- Deprecation notice and sunset date for retired versions
Rate limiting & access control
API rate limiting and access control to protect the service from abuse and ensure fair usage — per-client rate limits, plan-based quotas, graceful throttling responses and access control that ensures each API key can only access the data it is authorised for.
- Per-API-key rate limits: requests per minute and per hour
- Plan-based quota: different limits per consumer tier
- 429 response with Retry-After header on limit exceeded
- Rate limit headers in responses: limit, remaining, reset
- IP-level rate limiting for unauthenticated endpoints
- Resource-level access control: key can only access own data
- Burst allowance: short spikes above average rate permitted
- Rate limit monitoring and usage analytics per key
Webhook design & implementation
Outbound webhook system for pushing events to subscriber systems — when something happens in the platform, the relevant consumer is notified immediately without polling. With signed payloads for security, retry logic for reliability and a delivery log for debugging.
- Event catalogue: defined webhook event types and their payloads
- Consumer webhook registration with endpoint URL and secret
- HMAC-SHA256 payload signature for delivery verification
- Delivery with retry on failure: 3 attempts over 24 hours
- Dead letter queue for permanently failed deliveries
- Webhook delivery log: timestamp, response code, payload
- Manual retry capability from admin dashboard
- Consumer webhook testing tool: send test event to their endpoint