PracHub
QuestionsPremiumLearningGuidesCheatsheetNEWCoaches
|Home/System Design/DoorDash

Design API that aggregates three downstream APIs

Last updated: Mar 29, 2026

Quick Overview

This question evaluates a candidate's ability to design an API aggregator, covering skills in service orchestration, fault tolerance, latency and SLO management, error handling, and observability for distributed HTTP/JSON services.

  • medium
  • DoorDash
  • System Design
  • Software Engineer

Design API that aggregates three downstream APIs

Company: DoorDash

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Technical Screen

You are given three existing HTTP JSON APIs owned by other backend services: - **Service A:** `GET /service-a?user_id={id}` → returns basic user profile data. - **Service B:** `GET /service-b?user_id={id}` → returns a list of the user’s recent orders. - **Service C:** `GET /service-c?user_id={id}` → returns a list of recommended items for the user. Each service: - Uses REST over HTTP and returns JSON. - Has independent latency and failure behavior. - May return `2xx` success, `4xx` client errors, or `5xx` server errors. You need to design and implement a **new API endpoint** (often called an API bootstrap or aggregator) that: - Exposes a single endpoint, e.g. `GET /bootstrap?user_id={id}`. - Internally calls all three existing services. - Combines their responses into a single JSON response to the client. - Meets a reasonable latency SLO (for example, p95 < 300 ms). - Handles partial failures gracefully (e.g., if one service is down). Assume this will be implemented in a typical backend language (e.g., C++/Java/Go), but focus on the **API and system design**, not language-specific syntax. **Describe your design in detail**, including: 1. **API contract** for the new `/bootstrap` endpoint (request parameters and response schema), including how you represent partial failures. 2. **Call orchestration**: - How you will call the three downstream services (in parallel vs sequentially). - How you will set timeouts and retries. 3. **Error handling and fallback strategies**: - What you return if one or more downstream services fail or time out. - How you distinguish between client errors and server errors from downstream services. 4. **Performance and scalability considerations**: - How your design keeps latency low. - How the service scales under high QPS. 5. **Reliability and observability**: - Logging, metrics, and tracing you would add. - Any use of patterns like circuit breakers or bulkheads. Explain your reasoning step by step and call out important tradeoffs and edge cases.

Quick Answer: This question evaluates a candidate's ability to design an API aggregator, covering skills in service orchestration, fault tolerance, latency and SLO management, error handling, and observability for distributed HTTP/JSON services.

Related Interview Questions

  • Design a resilient bootstrap API - DoorDash (medium)
  • Design Real-Time Driver Pay Aggregation - DoorDash (hard)
  • Design personalized restaurant search and recommendations - DoorDash (medium)
  • Design Food Ratings and Driver Payouts - DoorDash (medium)
  • Design a Customer Review Page - DoorDash (medium)
DoorDash logo
DoorDash
Nov 4, 2025, 12:00 AM
Software Engineer
Technical Screen
System Design
19
0

You are given three existing HTTP JSON APIs owned by other backend services:

  • Service A: GET /service-a?user_id={id} → returns basic user profile data.
  • Service B: GET /service-b?user_id={id} → returns a list of the user’s recent orders.
  • Service C: GET /service-c?user_id={id} → returns a list of recommended items for the user.

Each service:

  • Uses REST over HTTP and returns JSON.
  • Has independent latency and failure behavior.
  • May return 2xx success, 4xx client errors, or 5xx server errors.

You need to design and implement a new API endpoint (often called an API bootstrap or aggregator) that:

  • Exposes a single endpoint, e.g. GET /bootstrap?user_id={id} .
  • Internally calls all three existing services.
  • Combines their responses into a single JSON response to the client.
  • Meets a reasonable latency SLO (for example, p95 < 300 ms).
  • Handles partial failures gracefully (e.g., if one service is down).

Assume this will be implemented in a typical backend language (e.g., C++/Java/Go), but focus on the API and system design, not language-specific syntax.

Describe your design in detail, including:

  1. API contract for the new /bootstrap endpoint (request parameters and response schema), including how you represent partial failures.
  2. Call orchestration :
    • How you will call the three downstream services (in parallel vs sequentially).
    • How you will set timeouts and retries.
  3. Error handling and fallback strategies :
    • What you return if one or more downstream services fail or time out.
    • How you distinguish between client errors and server errors from downstream services.
  4. Performance and scalability considerations :
    • How your design keeps latency low.
    • How the service scales under high QPS.
  5. Reliability and observability :
    • Logging, metrics, and tracing you would add.
    • Any use of patterns like circuit breakers or bulkheads.

Explain your reasoning step by step and call out important tradeoffs and edge cases.

Solution

Show

Comments (0)

Sign in to leave a comment

Loading comments...

Browse More Questions

More System Design•More DoorDash•More Software Engineer•DoorDash Software Engineer•DoorDash System Design•Software Engineer System Design
PracHub

Master your tech interviews with 7,500+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.