Tutorials

# Integrate APIs, agents, and any system, step by step

Guided paths for the work your teams already do. Each tutorial is a full story, from the first service to a running integration.

![Gateway options](https://zatosource-production.b-cdn.net/docs/gfx/ai/mcp-gateway-options.webp?v=1790934278)

![What happens next?](https://zatosource-production.b-cdn.net/docs/gfx/channels/hl7-mllp-config-step-2.webp?v=1789489046)

![New SOAP connection](https://zatosource-production.b-cdn.net/docs/gfx/outgoing/soap-create.webp?v=1791135914)

Main tutorial

## Design and build production-ready integrations in Python

A complete path from the first service to a running integration that orchestrates remote systems. This is the story to start with when the project is still on paper.

[Start the main tutorial](https://zato.io/tutorials/main/01.html)

![Python IDE](https://zatosource-production.b-cdn.net/docs/gfx/ide/service-editor.webp?v=1788286334)

[Video: New REST channel](https://zatosource-production.b-cdn.net/docs/gfx/channels/rest-create.webm?v=1791298976)

REST API

## Publish, secure, and document REST from one platform

Design the API, attach security, and let OpenAPI come from the services themselves. One control plane for the APIs you expose.

[REST API tutorial](https://zato.io/tutorials/rest-api/python.html)

[Video: New REST channel](https://zatosource-production.b-cdn.net/docs/gfx/channels/rest-create.webm?v=1791298976)

Healthcare

## Route HL7, FHIR, and EDIFACT on the same platform

Clinical and EDI traffic next to everything else. Destinations in the dashboard or a routing service of your own, no second stack.

[HL7 tutorial](https://zato.io/tutorials/healthcare/hl7v2.html)

[Video: New MLLP channel](https://zatosource-production.b-cdn.net/docs/gfx/channels/hl7-mllp-create.webm?v=1789500683)

[Video: New FHIR connection](https://zatosource-production.b-cdn.net/docs/gfx/outgoing/fhir-create.webm?v=1791135989)

[Video: New REST channel](https://zatosource-production.b-cdn.net/docs/gfx/channels/edifact-rest-create.webm?v=1791298935)

AI

## Expose Python services as tools for every MCP client

Stand up a gateway, assign keys, and let Cursor, Claude, and the rest of the clients call the services you already run.

[MCP tutorial](https://zato.io/tutorials/mcp/01.html)

![New MCP gateway](https://zatosource-production.b-cdn.net/docs/gfx/ai/mcp-gateway-create.webp?v=1790934276)

![Gateway options](https://zatosource-production.b-cdn.net/docs/gfx/ai/mcp-gateway-options.webp?v=1790934278)

SOAP

## Call and accept SOAP without making SOAP your job

Build requests as Python objects, unwrap incoming envelopes, and keep WS-Security in definitions. The protocol stays in the platform.

[SOAP tutorials](https://zato.io/tutorials/soap/calling.html)

![New SOAP connection](https://zatosource-production.b-cdn.net/docs/gfx/outgoing/soap-create.webp?v=1791135914)

Scheduler

## Run background jobs and APIs on a schedule

The same service, on a cron or an interval, with a history operations can read. Jobs live next to the APIs they call.

[Scheduler tutorial](https://zato.io/tutorials/python-scheduler.html)

![New scheduler job](https://zatosource-production.b-cdn.net/docs/gfx/scheduler/job-create-billing.webp?v=1791135883)

DevOps

## Deploy code and configuration the same way every time

A GitOps path from a project on disk to a running environment. Services and config move together.

[Deployment tutorial](https://zato.io/tutorials/devops/deployment.html)

![Python packages](https://zatosource-production.b-cdn.net/docs/gfx/admin/python-packages.webp?v=1788286339)

Cloud

## Microsoft 365 and OData without a side integration

Automate 365 and query SAP or Dynamics through OData from the same dashboard as everything else.

[Microsoft 365 tutorial](https://zato.io/tutorials/microsoft/365.html)

More

## Rules, tests, and the rest of the path

Express business rules both sides can read, and test services without standing up a server.

[Rule engine tutorial](https://zato.io/docs/rule-engine/tutorial.html)

flight\_delays.py

```
def handle(self):

    data = self.request.payload

    # Business people wrote the rule, Python runs it
    if result := self.rules.airport.match(data):
        self.invoke('ops.rebook-passengers', result)
```

## Ready to build your own integrations?

Pick a tutorial above or schedule a demo to see how Zato fits your environment.

[Get started ▶](https://zato.io/docs/admin/guide/install/index.html) [Read the docs](https://zato.io/docs/index.html)

Open source In Python
