A universal bridge to connect, map, and automate data transfer between any two REST APIs.
Full documentation is available at https://kkartas.github.io/APILinker/.
pip install apilinkerMessage-queue connectors are optional.
pip install apilinker[mq]Minimal example (worker loop):
from apilinker.core.error_handling import DeadLetterQueue
from apilinker.core.message_queue import MessagePipeline, MessageWorker
from apilinker.core.message_queue_connectors import RabbitMQConnectorPlugin
consumer = RabbitMQConnectorPlugin()
producer = RabbitMQConnectorPlugin()
consumer_conn = consumer.connect(host="localhost")
producer_conn = producer.connect(host="localhost")
pipeline = MessagePipeline(
consumer=consumer,
producer=producer,
dlq=DeadLetterQueue("./dlq"),
)
worker = MessageWorker(
pipeline,
consumer_connection=consumer_conn,
producer_connection=producer_conn,
source="input_queue",
default_destination="output_queue",
)
worker.run()- 🔄 Universal Connectivity - Connect any two REST APIs.
- 🗺️ Powerful Mapping - Transform data with ease.
- 🔗 Multi-Source Aggregation (v0.7.1) - Join data from multiple APIs (inner/left/right/outer joins) via the Python API.
- 📥 Large Download Streaming (v0.7.1) - Stream HTTP responses to disk with resume and progress callbacks.
- ⭐ Event-Driven Pipelines - Optional message queue connectors (RabbitMQ, Redis Pub/Sub, AWS SQS, Kafka).
- SSE Streaming - Built-in SSE connector with reconnection, chunked processing, and backpressure controls.
- 🔒 Secure - Enterprise secret management (Vault, AWS, Azure, GCP).
- 🧬 Scientific Connectors - Built-in support for NCBI, arXiv, and more.
from apilinker import ApiLinker
linker = ApiLinker()
linker.register_source("crm", crm_connector)
linker.register_source("billing", billing_connector)
rows = linker.aggregate_sources(
source_requests={
"crm": {"connector": "crm", "endpoint": "list_users"},
"billing": {"connector": "billing", "endpoint": "list_plans"},
},
aggregation_config={
"join_type": "inner",
"merge_strategy": "flat",
"sources": [
{"name": "crm", "join_key": "id", "fields": [...]},
{"name": "billing", "join_key": "customer_id", "fields": [...]},
],
},
)See Multi-Source Aggregation and examples/multi_source_aggregation.py.
We welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.