---
title: "API"
description: "81 posts about API, summarised, each linking to the original."
---

# API
> 81 posts about API, summarised, each linking to the original.

## Articles

### [Never stop disrupting yourself; introducing the Fin API platform](https://yomu.fyi/post/never-stop-disrupting-yourself-introducing-the-fin-api-platform.md)
- Company: [Intercom](https://yomu.fyi/company/intercom.md)
- Author: Eoghan McCabe
- Published: Apr 2, 2026
- Type: Announcement

Fin API platform launch makes the models powering its customer-agent system available through APIs, with contracts starting at $250k annually. It says Fin currently resolves over 2M customer issues weekly across brands and runs on models trained by its AI group. Last week’s Apex announcement is described as a specialized customer-service LLM that beat frontier models from Anthropic and OpenAI in six-month production tests on resolution rate, latency, hallucination rate, and cost. Customers can choose the Fin Agent Platform, Fin Agent API, or direct access to Apex and related models for bespoke, specialized agents. The rationale is customer demand and a broader expectation that software differentiation will shift from features and interfaces toward agents built on differentiated AI.


### [How Notion catches breaking schema changes before they reach production](https://yomu.fyi/post/how-notion-catches-breaking-schema-changes-before-they-reach-productio.md)
- Company: [Notion](https://yomu.fyi/company/notion.md)
- Author: Maya Lekhi
- Published: Apr 2, 2026
- Type: Problem & solution

Schema drift in typed API requests and queue tasks can cause incidents when contracts change without detecting whether old payloads remain valid. Notion's CI guardrail extracts schema types from the base branch and compares them with PR types using TypeScript's compiler API, checking whether the old type is assignable to the new one. The check auto-discovers registered API endpoints and queue task types, uses git archive for base files, and currently covers approximately 1,300 endpoints and 296 task types. Backward compatibility blocks changes that reject old data, while queue schemas also receive an advisory forward check for rollout ordering. The rollout began with warnings, then made backward checks blocking and added a GitHub label for intentional exceptions; type checking still cannot catch extra runtime validation or semantic behavior changes.


### [Introducing Agent Skills](https://yomu.fyi/post/introducing-agent-skills.md)
- Company: [Anthropic](https://yomu.fyi/company/anthropic.md)
- Published: Oct 16, 2025
- Type: Announcement

Agent Skills are folders containing instructions, scripts, and resources that Claude loads when relevant to specialized tasks, enabling custom expertise across Claude apps, Claude Code, and the API. The system scans available skills, loads only the minimal information and files needed, and can combine multiple skills automatically. Skills may include executable code, and API use requires the Code Execution Tool beta; developers can manage versions through the /v1/skills endpoint and Claude Console. Users can build skills with the skill-creator workflow or install them through the anthropics/skills marketplace, while organization-wide management and a partner-built directory were added in the December 18, 2025 update. The post presents Skills as composable, portable, efficient, and powerful, but cautions that code-executing skills should come from trusted sources to protect data.


### [Heroku AppLink: Extend Salesforce with Any Programming Language](https://yomu.fyi/post/heroku-applink-extend-salesforce-with-any-programming-language.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Vivek Viswanathan
- Published: Jul 17, 2025
- Type: Announcement

Heroku AppLink is now generally available from the Salesforce Setup menu, extending Salesforce with Heroku applications and code written in virtually any programming language. The initial release provides SDK support for Node.js and Python, while Java examples and direct AppLink API access demonstrate how other languages can integrate; the APIs provide authentication, authorization, connection pooling, and access to Salesforce and Data Cloud data. AppLink combines an add-on, service-mesh buildpack, dashboard, CLI, API, SDK, OpenAPI integration, and Salesforce API integration to provision connections, restrict and authenticate requests, publish services, and monitor org integrations. The add-on is free, with normal Heroku billing for compute and data resources, and published applications can extend Flow, Apex, and Agentforce while user mode is enabled by default.


### [Superheroes, Startups, and Security: Sohail's Path to Developer Advocacy at Okta](https://yomu.fyi/post/superheroes-startups-and-security-sohail-s-path-to-developer-advocacy.md)
- Company: [Okta](https://yomu.fyi/company/okta.md)
- Author: Sohail Pathan
- Published: Jun 16, 2025
- Type: Announcement

Sohail Pathan describes his path from Android development to a Senior Developer Advocate role at Okta, tracing how curiosity about technology grew into community and developer relations work. After studying Computer Science and adopting Kotlin for Android app projects, he moved from an EdTech startup’s Android team into its first Developer Community Manager role, organizing meetups, answering forum questions, and supporting learners. At a deeptech startup, he led Developer Relations for a cloud-based Android Studio tool, using meetups, hackathons, and feedback to seek product-market fit before technical roadblocks and limited demand forced closure after four months. At ApyHub, he created Go and Node.js tutorials, sample apps, API documentation, and community programs while gaining hands-on experience with REST architecture, microservices, API gateways, containers, load balancing, DevOps, OAuth, and identity management. He says that exposure led him to Okta, where he plans to share API and identity knowledge with its community.


### [What are MCP Servers?](https://yomu.fyi/post/what-are-mcp-servers.md)
- Company: [Fly.io](https://yomu.fyi/company/fly-io.md)
- Published: Jun 12, 2025
- Type: Explainer

This explainer clarifies what Model Context Protocol (MCP) servers do and where they differ from conventional APIs, serverless functions, and standalone appliances. It frames MCP servers as Alexa Skills that connect capabilities to an LLM, then as JSON-based APIs with multiplexing, server push, and built-in introspection for discovering tools, arguments, and usage descriptions. The post cautions that blindly generating an MCP server from an OpenAPI schema may expose low-level calls rather than agent-oriented workflows, and notes that MCP servers have a long-lived initialization, operation, and shutdown lifecycle rather than a serverless one. It also argues that MCP is not inherently secure or private, recommending remotely hosted servers protected by revocable bearer tokens, and envisions customized MCP-based agents becoming family-like assistants rather than mere appliances.


### [How to Add the Moesif API Observability Add-On to Your Heroku Applications](https://yomu.fyi/post/how-to-add-the-moesif-api-observability-add-on-to-your-heroku-applicat.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Matt Tanner
- Published: Apr 16, 2025
- Type: Tutorial

Heroku applications can add the Moesif API Observability add-on to analyze API traffic and support monetization. The setup uses either the Heroku CLI or Dashboard: the CLI command is heroku addons:create moesif, while the UI path goes through Resources, Find more add-ons, and Metrics and Analytics. Provisioning creates a MOESIF\_APPLICATION\_ID config variable, and the application then requires the Moesif SDK initialized with that value. The guide also covers copying the variable into a local .env file with Heroku Local and excluding that file from Git through .gitignore. Once configured, API events should flow into Moesif for live logs, time-series metrics, funnels, retention, alerting, and billing features, while Heroku handles add-on billing and user management.


### [Behind the Scenes - A Glimpse into Tax Calculations](https://yomu.fyi/post/behind-the-scenes-a-glimpse-into-tax-calculations.md)
- Company: [Etsy](https://yomu.fyi/company/etsy.md)
- Author: Nancy Arnold
- Published: Mar 29, 2025
- Type: Explainer

As jurisdictions increasingly require marketplaces to collect and remit tax, Etsy describes the infrastructure it uses to calculate, record, and report taxes on transactions. When a buyer adds an item to a cart, Etsy sends a Quotation Request API call to Vertex, using buyer and seller locations, product category, tax rules, and mappings to determine the amount shown. At checkout and throughout fulfillment, DistributeTaxRequest SOAP calls carry order, cancellation, and refund details to Vertex, whose records support reporting and audit workflows imported into Etsy’s bigdata. The integration also required mapping Etsy taxonomy categories to Vertex rule drivers and separating quotation, distribution, and reporting workloads across multiple instances for horizontal scaling and load balancing. Shadow requests, ramped gradually without applying calculated taxes to carts, let the team simulate added Vertex load and monitor checkout performance before releasing traffic-increasing features.


### [Mastering API Gateway Integration: Salesforce, Heroku, and MuleSoft Anypoint Flex Gateway](https://yomu.fyi/post/mastering-api-gateway-integration-salesforce-heroku-and-mulesoft-anypo.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Julián Duque
- Published: Jul 29, 2024
- Type: Tutorial

MuleSoft Anypoint Flex Gateway provides a pattern for exposing APIs and microservices running in Heroku Private Spaces while adding API management and security controls. The tutorial deploys an internal Heroku application, creates or imports an OpenAPI 3.0 specification in Anypoint Design Center, publishes it to Exchange, registers the gateway through Runtime Manager, and deploys it in the same Private Space. That placement lets internal-routing applications receive public traffic through the gateway while routing access through a centrally configured layer managed with MuleSoft and Heroku. It then applies a Client ID Enforcement policy in API Manager, showing that requests with incorrect credentials fail and requests using the issued Client ID and Client Secret can authenticate. The pattern is presented as a foundation for Heroku and Salesforce multi-cloud integrations.


### [Working with ChatGPT Functions on Heroku](https://yomu.fyi/post/working-with-chatgpt-functions-on-heroku.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Julián Duque
- Published: Jan 30, 2024
- Type: Tutorial

Menu Maker is a Node.js web application that turns user-supplied ingredients into a dish name, fine-dining description, ingredient list, and recipe. Its React front end communicates with an Express back end, which adds prompt instructions and sends the request to OpenAI’s Chat Completions API. The application uses ChatGPT’s function calling feature to define an updateDish function with structured JSON fields for the title, description, ingredients, and recipe, so parsed arguments can update React state directly. The GitHub-hosted Node.js monorepo is deployed to Heroku, where an OPENAI\_API\_KEY config var authenticates requests, an optional CHATGPT\_MODEL selects the model, and Heroku runs yarn build and yarn start.


### [Why You Should Migrate to OAuth 2.0 From Static API Tokens](https://yomu.fyi/post/why-you-should-migrate-to-oauth-2-0-from-static-api-tokens.md)
- Company: [Okta](https://yomu.fyi/company/okta.md)
- Author: Alisa Duncan
- Published: Sep 25, 2023
- Type: Explainer

Static API tokens provide a simple way to authorize calls to protected third-party APIs, but their long lifetimes, broad permissions, and lack of user context create security and auditing risks. OAuth 2.0 addresses these limitations through a centralized authorization server that issues short-lived access tokens, which clients send in the Authorization header with the Bearer scheme. The post describes Client Credentials for service-to-service interactions and explains that scopes can distinguish permissions such as okta.users.read and okta.users.write; other configurations support task-based automation and user access through web applications. Migration guidance recommends implementing new calls with OAuth 2.0, applying least privilege, testing expiration and error handling, and securing private keys and JWKS generation before production deployment.


### [Notion Acquires Automate.io for Enhanced Automation & Integration | Notion](https://yomu.fyi/post/notion-acquires-automate-io-for-enhanced-automation-integration-notion.md)
- Company: [Notion](https://yomu.fyi/company/notion.md)
- Author: Ivan Zhao
- Published: Sep 8, 2021
- Type: Announcement

Notion announced that it is acquiring Automate.io to strengthen its strategy of connecting Notion with the other tools and systems used in everyday work. Automate.io had spent five years building connectivity and integrations for more than 200 software tools, and Notion says the acquisition will support high-quality native integrations for teams and businesses as well as features for developers building on Notion. The company plans to continue working with platform partners including Zapier and IFTTT after launching its API earlier in the year, while expanding access to workflows and integrations. The deal also makes Hyderabad, India, Notion’s fifth office and its first engineering centre outside the United States, with plans to grow a technical team there over several years.


### [Extend Flows with Heroku Compute: An Event-Driven Pattern](https://yomu.fyi/post/extend-flows-with-heroku-compute-an-event-driven-pattern.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Chris Marino
- Published: Dec 11, 2020
- Type: Tutorial

The post presents an event-driven pattern for extending Salesforce Flow with custom business logic deployed as a Heroku app and exposed as an external service. It uses an OpenAPI specification to define the interface, generates a Node.js application stub, adapts it for Heroku with a Procfile and port configuration, and registers the API in Salesforce. Flow accesses the service through a Named Credential using basic HTTP authentication, while the Heroku app authorizes Salesforce access with a JWT account token and API token. The example begins with product retrieval and then adds a Get Inventory method that can read inventory and update the Salesforce Product object. A Platform Event can trigger a flow that calls this method, while programmers and low-code builders iterate against the shared API contract before completing their work independently.


### [Building a GraphQL API in JavaScript](https://yomu.fyi/post/building-a-graphql-api-in-javascript.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Owen Ou
- Published: Jun 24, 2020
- Type: Tutorial

GraphQL lets API clients specify the fields they need instead of accepting a server-defined response, reducing unnecessary payload and potentially combining data from multiple stores behind one endpoint. The tutorial builds a JavaScript/Node.js implementation by loading Schema Definition Language (SDL) with graphql-tools, defining Query, User, and Address types, and connecting fields to resolver functions. Resolvers receive field arguments and can use context for authorization, illustrated by restricting address access to the current user. It also recommends keeping business logic separate from resolvers and notes that GraphQL does not eliminate database performance, caching, logging, monitoring, or versioning concerns. The discussion presents GraphQL as useful for evolving, front-end-heavy applications, while warning that its single HTTP status code and schema versioning limitations can complicate error handling and breaking changes.


### [Saved by the Schema: Using JSON Schema to Document, Test, and Debug APIs](https://yomu.fyi/post/saved-by-the-schema-using-json-schema-to-document-test-and-debug-apis.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Jessie Young
- Published: Apr 9, 2019
- Type: Problem & solution

Heroku uses JSON Schema to define Platform API response structures, generate documentation, and validate endpoint behavior. A CI-invoked rake task detects schema changes and uses prmd to generate Markdown API reference material, while committee tests API responses with assert\_schema\_conform. Those tests exposed an edge case in Enterprise usage data: dyno values with many decimal places were parsed by Oj as BigDecimal and serialized as quoted strings, whereas integer and ordinary float values remained numbers. Heroku traced this behavior through MultiJson and configured Oj with bigdecimal\_load: :float, because the endpoint had sufficient precision at 15 decimal places and its schema required a number. The conforming test then passed, confirming that the schema and generated documentation matched returned API values.


### [Handling Addresses from All Around the World](https://yomu.fyi/post/handling-addresses-from-all-around-the-world.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: Nima Izadi
- Published: Nov 14, 2018
- Type: Explainer

International address handling is difficult because countries and locales differ in field order, required fields, terminology, translations, and display conventions. Shopify models each address with fields such as names, address lines, zones, postal code, city, country code, and phone, then stores country-specific metadata in YAML-backed country data. A reusable format describes form and display order, allowing clients to reorder fields, prepopulate country and zone values, and add locale-specific characters such as Japan’s 〒 and 様. Label keys and translations handle terms such as province, prefecture, postcode, and pincode, while an API endpoint keeps applications synchronized and accepts locale information. The team also provides @shopify/address and higher-level components, while identifying caching as a remaining issue to reduce repeated network calls.


### [Shaping the Future of Payments in the Browser](https://yomu.fyi/post/shaping-the-future-of-payments-in-the-browser.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: Krystian Czesak
- Published: Sep 4, 2018
- Type: Benchmark

Shopify tested whether the Payment Request API was ready for its merchants and buyers on supported browsers. The team defined checkout completion rate, time to purchase, drop-off, and qualitative checkout experience as success measures, then ran an A/B experiment with selected merchants and eligible buyers. The isolated Ruby app injected storefront JavaScript, checked eligibility and credit-card support, and routed buyers to either the regular checkout or a browser-provided payment sheet. The experiment recorded a 7% checkout conversion rate drop and a 60% drop at the payment sheet, although time to completion medians were promising. Shopify concluded Payment Request was not yet a good fit, while expecting greater familiarity, payment-sheet improvements, and third-party payment methods through Payment Handler API to help adoption.


### [Beyond Web and Worker: Evolution of the Modern Web App on Heroku](https://yomu.fyi/post/beyond-web-and-worker-evolution-of-the-modern-web-app-on-heroku.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Chris Castle
- Published: Aug 14, 2018
- Type: Explainer

Over a decade, the standard Heroku web application has expanded from a web process, database, worker, and Redis queue into a broader architecture for web, mobile, data, and operational demands. The post connects this shift to snappier single-page experiences, native smartphone apps, APIs as integration surfaces, growing streaming data, increasing system complexity, and scale. Its proposed components include a content delivery network, API Gateway, Apache Kafka, object storage, data warehouses, and query or visualization tools, alongside service-oriented architecture and scalable-first design. The architecture separates functionality into smaller services for adaptability, while acknowledging that more components create more scaling and operational levers. It presents Heroku’s PaaS and managed services as a way to reduce that burden, then leaves deployment, communication, CI/CD, monitoring, and security as topics for follow-up posts.


### [Heroku CLI: Completing Autocomplete](https://yomu.fyi/post/heroku-cli-completing-autocomplete.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Philipe Navarro
- Published: Jun 12, 2018
- Type: Explainer

Heroku CLI Autocomplete had to support a dynamic, plugin-based command set while completing values that often reside behind the Heroku API. Instead of static shell case statements, its cache builder iterates through installed commands and generates setters that supply command, flag, and value completions when the user presses Tab. A shim sourced from the user’s .bashrc or .zshrc limits profile changes, fails silently when unavailable, and permits updates without repeated edits. API-backed values are cached on disk, while oclif custom hooks invalidate or rebuild relevant caches after commands change data. The completion function also parses the partially entered command line to provide contextual results, such as add-on aliases for a specified app; the work is being incorporated into an oclif plugin.


### [Incident Preparation: Simulating Third-Party Downtime](https://yomu.fyi/post/incident-preparation-simulating-third-party-downtime.md)
- Company: [Heroku](https://yomu.fyi/company/heroku.md)
- Author: Damien Mathieu
- Published: Mar 1, 2016
- Type: Tutorial

Heroku’s help application depends on the Platform API for authentication, authorization, and user data, so it must remain available to agents and customers during platform incidents. The open-sourced api-maintenance-sim app tests this requirement by imitating an outage in which every request receives an HTTP 503 Service Unavailable response. After deploying the simulator, teams point the application under test to its hostname through PLATFORM\_API\_URL, passed to platform-api’s connect\_oauth method; when unset, the gem uses the production URI. A heroku config:set command enables the alternate endpoint, making regular simulations possible and helping reveal what failure means for the application or service when the Platform API is unavailable, supporting preparation for incidents and communication during outages.


[Newer posts](https://yomu.fyi/topic/api/page/3.md) · [Older posts](https://yomu.fyi/topic/api/page/5.md)
