⚡ Open Source · Drupal 11
⚡ Open Source · WordPress 6.0+

Unified API management for Drupal

Unified API management for WordPress

Stop writing raw cURL calls. API Orchestrator gives you a managed, observable, and extensible layer for every external API your Drupal site talks to — REST, GraphQL, or anything HTTP.

Stop writing raw wp_remote_get calls. API Orchestrator gives you a managed, observable, and extensible layer for every external API your WordPress site talks to — with a full React admin dashboard.

10+
Sub-modules
20+
Sample Endpoints
4
Notification Channels
40+
REST API Endpoints
13
Admin Pages
6
Notification Channels
drush api-orchestrator:request
// Before — raw cURL scattered everywhere $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); // No logging. No retries. No alerts. // After — API Orchestrator $result = $orchestrator->request( 'shopify_product_list', ['page_size' => 10] ); // Logged Retried Monitored Alertable
# 1000+ API calls? One dashboard. Services: 12 configured Endpoints: 47 active Today: 3,842 requests Success: 99.2% Avg time: 186ms # Filter by service, endpoint, status, # date range, response code, duration # Export to CSV, Excel, PDF, JSON
# Multi-environment support Endpoint: shopify_product_list Default: shopify_storefront # Per-environment service overrides: Dev: shopify_dev → dev.myshopify.com Test: shopify_stage → stage.myshopify.com Live: shopify_prod → prod.myshopify.com Current: live → using shopify_prod
# Alert when things go wrong #[AlertChannel(id: 'slack')] #[AlertChannel(id: 'discord')] #[AlertChannel(id: 'pagerduty')] Rule: error_rate > 10% in 15min Status: TRIGGERED Value: 23.5% Sent: Slack Discord
# REST & GraphQL, one interface $ drush api-orchestrator:request \ shopify_product_list \ --data='{"page_size":"5"}' ✔ 200 OK 312ms GraphQL Products: 5 items returned $ drush api-orchestrator:request \ jp_create_post --data='{"title":"Hi"}' ✔ 201 Created 145ms REST POST
# See how it works — built-in samples $ drush en api_orchestrator_sample_shopify -y # Installs Shopify mock.shop — no API key # 5 GraphQL endpoints, ready to test $ drush api-orchestrator:request \ shopify_product_list ✔ 200 OK Works instantly. # Also: JSONPlaceholder (REST), Magento (GraphQL)
wp api-orchestrator request
// Before — raw wp_remote calls everywhere $response = wp_remote_get($url); $body = wp_remote_retrieve_body($response); // No logging. No retries. No alerts. // After — API Orchestrator $executor = new Executor(); $result = $executor->execute( 'shopify.product_list', ['page_size' => 10] ); // Logged Retried Monitored Alertable
# 40+ REST API endpoints. React dashboard. Services: 12 configured Endpoints: 47 active Today: 3,842 requests Success: 99.2% Avg time: 186ms # 13 admin pages · No-code request builder # Export CSV/JSON · Analytics & Charts # 8 custom database tables
# Hostname-based environment detection Endpoint: shopify_product_list Default: shopify_storefront # Per-environment service overrides: Dev: shopify_dev → dev.myshopify.com Stage: shopify_stage → stage.myshopify.com Prod: shopify_prod → prod.myshopify.com Current: production → using shopify_prod
# 6 notification channels built-in Email (wp_mail) Slack (Block Kit messages) Discord (Rich embeds) Teams (Adaptive Cards) WhatsApp (Twilio API) PagerDuty (Events API v2) Rule: error_rate > 10% in 15min Sent: Slack PagerDuty
# REST & GraphQL via WP-CLI $ wp api-orchestrator request \ shopify_product_list \ --data='{"page_size":"5"}' ✔ 200 OK 312ms GraphQL Products: 5 items returned $ wp api-orchestrator request \ jp_create_post --data='{"title":"Hi"}' ✔ 201 Created 145ms REST POST
# One-click sample integrations # Navigate to Samples in admin dashboard Click: "Install JSONPlaceholder" → Creates service + 5 REST endpoints → Ready to test immediately Click: "Install Shopify" → Creates service + 5 GraphQL endpoints → Uses mock.shop — no API key needed

Raw HTTP calls are not scalable

Every external API call you make without orchestration creates technical debt. API Orchestrator solves this at the architecture level.

🔒

Centralized Configuration

Define services and endpoints as config entities. Manage base URLs, API keys, headers, and timeouts from the admin UI — no code changes needed.

Define services and endpoints from a React admin dashboard. Manage base URLs, 5 auth types, headers, and timeouts — no code changes needed.

📊

Full Observability

Every request is logged with method, URL, status code, duration, and response size. See what you sent, what you got, and how long it took.

🔄

Automatic Retries

Configure max retries and intervals per service. Failed requests are retried automatically with exponential backoff. No more silent failures.

🔔

Multi-Channel Alerts

Get notified via Email, Slack, Microsoft Teams, or WhatsApp when endpoints fail. Set thresholds for error rates, response times, and more.

Get notified via Email, Slack, Discord, Teams, WhatsApp, or PagerDuty when endpoints fail. 6 channels with threshold-based alert rules.

📈

Analytics Dashboard

Interactive charts showing request volume, success rates, response time distributions, and per-endpoint performance. Filter by date, service, or status.

REST & GraphQL

First-class support for both REST and GraphQL APIs. Token replacement with defaults, GraphQL variable injection, and proper content encoding.

🏗

Manageable at Scale

Running 1000+ API calls a day? Filter, search, and export from one dashboard. See every request's status, duration, and response across all your services.

🛠

Multi-Environment

Add environments one by one (dev, test, live) with a URL pattern and default checkbox. Auto-detects current environment by matching hostname. Deploy with drush cex/cim.

Add environments with hostnames from the admin UI. Auto-detects current environment by matching hostname. Override service base URLs, auth, and headers per environment.

Modular by design

Enable only what you need. Each feature is a separate sub-module with its own dependencies.

Core Module

Services, endpoints, request builder, token replacer, HTTP executor, response storage, queue worker, Drush commands

🔧

Feature Modules

Analytics · Monitoring · Alerts · Notifications · Export · Reports · ECA Integration

📦

Integration Samples

Shopify (mock.shop) · JSONPlaceholder · Magento 2 — pre-configured, ready to use

🌐

Your APIs

Any REST or GraphQL API — define a service, add endpoints, start making requests

All-in-one plugin, zero bloat

17 PHP classes, 8 custom tables, 40+ REST API endpoints, and a full React admin dashboard — in a single plugin.

Core Plugin — 17 PHP Classes

Executor, Database, Token Replacer, Retry Handler, Queue Handler, Logger, Environment, REST API, WP-CLI

React Admin Dashboard — 13 Pages

Dashboard · Services · Endpoints · Environments · Builder · Logs · Analytics · Monitoring · Alerts · Notifications · Export · Samples · Settings

🔧

REST API Layer — 40+ Endpoints

Full CRUD for services, endpoints, environments, alerts, notifications · Analytics · Execute · Export · Health check

🌐

Your APIs

Any REST or GraphQL API — define a service, add endpoints, start making requests

Everything you need, nothing you don't

10 sub-modules covering analytics, monitoring, notifications, exports, reports, and more.

📊

Analytics

Charts, timelines, endpoint performance metrics

📡

Monitoring

Real-time dashboard with live feed and heatmap

🔔

Alerts

Threshold rules with cooldown and multi-channel dispatch

📬

Notifications

Email, Slack, Teams, WhatsApp providers

📄

Export

CSV, Excel, PDF, JSON with scheduled reports

📋

Reports

Standalone HTML reports with Chart.js

ECA

Trigger API calls from ECA workflows

🛒

Samples

Shopify, Magento, JSONPlaceholder ready-to-use

One plugin, everything included

No add-ons needed. Every feature ships with the core plugin — activate and go.

📊

Analytics

Chart.js graphs, volume trends, duration histograms

📡

Monitoring

Real-time health indicators, service status overview

🔔

Alerts

Threshold rules: error rate, response time, failure count

📬

6 Notification Channels

Email, Slack, Discord, Teams, WhatsApp, PagerDuty

🎨

Request Builder

No-code drag-and-drop API testing interface

📄

Export & Reports

CSV, JSON export with analytics reports

💻

WP-CLI

5 commands: request, list, stats, health

🛒

Samples

JSONPlaceholder (REST) + Shopify (GraphQL)

Built by a Drupal engineer

Built by a full-stack engineer

API Orchestrator is designed, developed, and maintained by Levent Celik.

Levent Celik

Levent Celik

Senior Drupal Developer & Software Architect

Senior Software Engineer & Full-Stack Developer

API Orchestrator was born from years of experience building large-scale Drupal projects that integrate with dozens of external APIs. Tired of seeing the same problems — scattered cURL calls, silent failures, zero observability — Levent built a unified solution that any Drupal site can use out of the box. The module follows SOLID principles, Drupal coding standards, and ships with 10 sub-modules covering everything from real-time monitoring to ECA workflow integration.

API Orchestrator was born from years of experience building production WordPress sites that integrate with dozens of external APIs. Tired of seeing the same problems — scattered wp_remote calls, silent failures, zero observability — Levent built a unified solution. The plugin features 17 PHP classes, a full React admin dashboard, 40+ REST API endpoints, 8 custom database tables, and 6 notification channels — all in a single, self-contained plugin.

Ready to orchestrate your APIs?

Install from Drupal.org in seconds. Zero configuration needed with built-in sample integrations.

Install the plugin and start managing your APIs in minutes. Built-in samples get you running instantly.