HTTP API abstraction