Norbert Wójtowicz's wroclove.rb 2019 talk, the fourth in a multi-year arc after his 2015 wroclove.rb talk on ClojureScript+React for front-ends, his 2017 wroclove.rb talk on Clojure+immutable data for back-ends (including clojure.spec replacing type checkers), and his RubyConf Tel Aviv talk on replacing relational/NoSQL/Redux databases with immutable data flow. Having covered frontends, backends and databases, this talk closes the loop on APIs. Walks through YouTube's single-page-app rendering problem (video, channel, comments, next-videos), critiques REST (the YouTube 'part' quota system, snippet vs contentDetails) and GraphQL (type explosion because attributes are always scoped to a specific type). Proposes a four-step recipe — immutable, EDN-based, context-free, flat — and demonstrates Pathom, a Clojure library implementing graph API resolution with: resolvers mapping input attributes to output attributes; EQL queries as data structures (vectors for attribute lists, maps for joins); namespace-qualified keywords that uniquely identify e.g. :youtube.video/id across services; flattening 1:1 relationships so channel-title can be fetched at the same level as video-id; mutations as EDN symbols giving read-after-write semantics; fallback traversal when one path fails with a 403; and batching/parallelism across playlist/channel/video API calls. Live demo uses Clojure Workspaces (itself a Fulcro app) to query YouTube's API, then extends with a YouTube↔SpaceX ID alias to combine launch data, video title and view count in one query without joins. Closes by comparing Workspaces + Fulcro Inspect to what Rails Engines 'should have been'.