API controller