---
title: "Developers & API | ezeep Cloud Printing"
description: "Build custom print workflows with the ezeep API. REST endpoints for print submission, printer management, and more."
type: article
version: 1
version_id: "e57d2b46-cf06-4ecc-9380-2188a0c0bc28"
generated_at: "2026-05-07T12:31:31.124Z"
author: "URL curl"
language: en
reading_time: "14 min"
word_count: 2723
keywords: ["Developers & API", "ezeep Cloud Printing", "I Want To...", "Built for Production", "From Zero to First Print Job", "Frequently Asked Questions"]
url: "https://www.ezeep.com/developers-api"
---

# Developers & API | ezeep Cloud Printing

> Build custom print workflows with the ezeep API. REST endpoints for print submission, printer management, and more.

## Key Takeaways

- I Want To...
- Built for the Way Developers Build Today
- Add Printing to Any Application
- Trigger Print Jobs Without a User
- Build Secure Release Into Your Application

## Contents

- [I Want To...](#i-want-to)
- [Built for the Way Developers Build Today](#built-for-the-way-developers-build-today)
- [Add Printing to Any Application](#add-printing-to-any-application)
- [Trigger Print Jobs Without a User](#trigger-print-jobs-without-a-user)
- [Build Secure Release Into Your Application](#build-secure-release-into-your-application)
- [Architecture That Stays Out of Your Way](#architecture-that-stays-out-of-your-way)
- [Standard OAuth2. No Proprietary Auth.](#standard-oauth2-no-proprietary-auth)
- [Make Your Devices Cloud-Native](#make-your-devices-cloud-native)
- [Built for Production](#built-for-production)
- [From Zero to First Print Job](#from-zero-to-first-print-job)
- [Start Free. Scale When You Ship.](#start-free-scale-when-you-ship)
- [Frequently Asked Questions](#frequently-asked-questions)
- [Build Printing Into Your Product  Without the Pain](#build-printing-into-your-product-without-the-pain)

# Our API. Your App. Endless Possibilities.

From MCP servers for AI-native platforms to REST APIs and backend automation - build printing into anything you're creating, without drivers, servers, or hardware headaches.

[Read the API Docs](https://apidocs.ezeep.com)[Get API Credentials](https://www.ezeep.com/contact/api?hsLang=en)

Quick Chooser

## I Want To...

### Build with ezeep in Any AI-Native Environment

ezeep's MCP makes printing a native capability in any app you build with AI-powered tools, from a Lovable-built ERP to a Claude-powered ops workflow, with zero code and zero integration effort.

Build with ezeep in Any AI-Native Environment

### Integrate Printing Into My App or Platform

Submit print jobs, manage printers, users, and groups through a standard REST API. Connect ezeep to any application, SaaS product, or platform - no drivers, print servers, or infrastructure to manage.

Integrate Printing Into My App or Platform

#### Automate Backend Print Workflows

Trigger print jobs from backend services, scheduled tasks, and event pipelines without a logged-in user: warehouse labels from order events, invoices from accounting software, reports on a schedule.

Automate Backend Print Workflows

MCP

## Built for the Way Developers Build Today

ezeep's MCP server exposes your entire print environment as native tools - list printers, submit jobs, manage users, and automate workflows directly inside Claude, Cursor, Lovable, Windsurf, GitHub Copilot, or any MCP-compatible platform.

What You Can Do

Query available printers by name, location, or capability. Submit print jobs by passing a document and a printer target. Monitor and manage in-progress jobs. Create and manage users, groups, and printer assignments. Pull usage history and reporting. Manage your entire print fleet through conversation — ask your AI to show offline printers, invite users, or reassign printer groups without opening a dashboard.

Available Resources

Printers, Print Jobs, Users, Groups, Assignments, Connectors, Usage Reports.

Works With

[Claude](http://Claude.com), [Cursor](http://cursor.com), [Lovable](http://lovable.dev), [Windsurf](http://windsurf.com), [GitHub Copilot](https://github.com/copilot), and any platform that supports the Model Context Protocol.

Common Use Cases

Printing shipping labels and packing slips from a Lovable-built fulfilment platform. Triggering invoice runs from a Claude-powered accounting workflow. Building a warehouse ops copilot that routes documents to the right printer at the right time. Giving any AI-built application a print button that actually works at enterprise scale.

[Get Your API Key](https://www.ezeep.com/contact/api?hsLang=en)

```json
{
  "mcpServers": {
    "ezeep": {
      "type": "http",
      "url": "https:">//mcp.ezeep.com/mcp",
      "headers": {
        "Authorization": "Bearer <your_api_key>"
      }
    }
  }
}
```

API

## Add Printing to Any Application

Your app sends a document and a printer target. ezeep renders it in the cloud and delivers it. That's the entire integration surface.

```curl
"token comment"># List available printers
curl -X GET 'https:"token comment">//printapi.ezeep.com/sfapi/GetPrinter/' \
  -H "Authorization: Bearer <access_token>"

"token comment"># Print a file by URL
curl -X POST 'https:"token comment">//printapi.ezeep.com/sfapi/Print' \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <access_token>" \
  -d '{
    "fileurl": "https:">//example.com/invoice.pdf",
    "printerid": "9620e656-b39b-49ba-a653-a3f168575ec2",
    "type": "pdf"
  }'

"token comment"># Create a user
curl -X POST 'https:"token comment">//api.ezeep.com/v1/users/' \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newuser@company.com",
    "first_name": "Jane",
    "last_name": "Doe"
  }'
```

```javascript
const headers = {
  Authorization: class="token string">"Bearer class="token operator"><access_token>",
  class="token string">"Content-Type": class="token string">"application/json",
};

const printers = await fetch(
  class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/sfapi/GetPrinter/",
  { headers }
);

const job = await fetch(
  class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/sfapi/Print",
  {
    method: class="token string">"class="token function">POST",
    headers,
    body: JSON.stringify({
      fileurl: class="token string">"https:class="token commentclass="token string">">//example.com/invoice.pdf",
      printerid: class="token string">"9620e656-b39b-49ba-a653-a3f168575ec2",
      type: class="token string">"pdf",
    }),
  }
);

const user = await fetch(
  class="token string">"https:class="token commentclass="token string">">//api.ezeep.com/v1/users/",
  {
    method: class="token string">"class="token function">POST",
    headers,
    body: JSON.stringify({
      email: class="token string">"newuser@company.com",
      first_name: class="token string">"Jane",
      last_name: class="token string">"Doe",
    }),
  }
);
```

```python
import requests

headers = {
    class="token string">"Authorization": class="token string">"Bearer class="token operator"><access_token>",
    class="token string">"Content-Type": class="token string">"application/json",
}

printers = requests.get(
    class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/sfapi/GetPrinter/",
    headers=headers
).json()

job = requests.post(
    class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/sfapi/Print",
    headers=headers,
    json={
        class="token string">"fileurl": class="token string">"https:class="token commentclass="token string">">//example.com/invoice.pdf",
        class="token string">"printerid": class="token string">"9620e656-b39b-49ba-a653-a3f168575ec2",
        class="token string">"type": class="token string">"pdf",
    },
).json()

user = requests.post(
    class="token string">"https:class="token commentclass="token string">">//api.ezeep.com/v1/users/",
    headers=headers,
    json={
        class="token string">"email": class="token string">"newuser@company.com",
        class="token string">"first_name": class="token string">"Jane",
        class="token string">"last_name": class="token string">"Doe",
    },
).json()
```

What You Can Do

Submit PDFs, images, and raw data as print jobs from any server-side or client-side context. Target specific printers by ID or let users choose from their assigned list. Set job options like copies, duplex, color mode, and page range per request. Track job status and get confirmation when the document reaches the printer. Create and manage organizations, users, and groups programmatically. Assign and revoke printer access by user or group. Query available printers, connectors, and driver information. Pull usage reports and print history on demand. Listen for events via webhooks.

Available Resources

Print Jobs, Printers, Organizations, Users, Members, Groups, Memberships, Assignments, Connectors, Printer Drivers, Webhooks.

Common Use Cases

Shipping labels from WMS, invoices from CRM, documents from web apps, receipts from POS, kiosk and self-service output, coworking platforms automating member onboarding and print billing, MSP tools managing client environments, SaaS platforms embedding print management.

[Read the API Documentation](https://apidocs.ezeep.com)

Backend Workflow Automation

## Trigger Print Jobs Without a User

Not every print job starts with someone clicking print. The ezeep Print App for Services lets your backend, scheduler, or event pipeline send documents to any printer automatically — no active user session required.

What You Can Do

Print from backend services, cron jobs, and event-driven pipelines without an interactive user session. Route jobs to specific printers by location, department, or job type. Integrate with Zapier, Make, or any webhook-capable platform. Run fully unattended workflows across distributed sites.

Common Use Cases

Warehouse label printing triggered by order events, automated invoice runs from accounting software, scheduled report distribution, Zapier and Make integrations, kiosk output.

[Read Documentation](https://apidocs.ezeep.com)

```curl
"token comment"># Unattended print: submit a file by URL
curl -X POST 'https:"token comment">//printapi.ezeep.com/sfapi/Print' \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <service_token>" \
  -d '{
    "fileurl": "https:">//wms.example.com/label.pdf",
    "printerid": "<warehouse_printer_id>",
    "type": "pdf",
    "copies": 2,
    "printanddelete": true
  }'

curl -X GET \
  'https:"token comment">//printapi.ezeep.com/sfapi/Status/?id=<jobid>' \
  -H "Authorization: Bearer <service_token>"
```

```javascript
const headers = {
  class="token string">"Content-Type": class="token string">"application/json",
  Authorization: class="token string">"Bearer class="token operator"><service_token>",
};

const job = await fetch(
  class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/sfapi/Print",
  {
    method: class="token string">"class="token function">POST",
    headers,
    body: JSON.stringify({
      fileurl: class="token string">"https:class="token commentclass="token string">">//wms.example.com/label.pdf",
      printerid: class="token string">"class="token operator"><warehouse_printer_id>",
      type: class="token string">"pdf",
      copies: class="token number">2,
      printanddelete: true,
    }),
  }
);
const { jobid } = await job.json();

const status = await fetch(
  `https:class=class="token string">"token comment">//printapi.ezeep.com/sfapi/Status/?id=${jobid}`,
  { headers: { Authorization: class="token string">"Bearer class="token operator"><service_token>" } }
);
```

```python
import requests

headers = {
    class="token string">"Authorization": class="token string">"Bearer class="token operator"><service_token>",
    class="token string">"Content-Type": class="token string">"application/json",
}

job = requests.post(
    class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/sfapi/Print",
    headers=headers,
    json={
        class="token string">"fileurl": class="token string">"https:class="token commentclass="token string">">//wms.example.com/label.pdf",
        class="token string">"printerid": class="token string">"class="token operator"><warehouse_printer_id>",
        class="token string">"type": class="token string">"pdf",
        class="token string">"copies": class="token number">2,
        class="token string">"printanddelete": True,
    },
).json()

status = requests.get(
    fclass="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/sfapi/Status/?id={job[class="token string">'jobid']}",
    headers={class="token string">"Authorization": class="token string">"Bearer class="token operator"><service_token>"},
).json()
```

Pull Printing API

## Build Secure Release Into Your Application

The Pull Printing Release API lets you build authenticated document release directly into your own app or device interface. Users authenticate, see their pending jobs, and release them at the printer.

```curl
"token comment"># Get pending jobs for authenticated user
curl -X GET 'https:"token comment">//printapi.ezeep.com/pullprint/jobs' \
  -H "Authorization: Bearer <access_token>"

"token comment"># Release a specific job to a printer
curl -X POST 'https:"token comment">//printapi.ezeep.com/pullprint/release' \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "job_id": "<pending_job_id>",
    "printer_id": "<release_printer_id>"
  }'
```

```javascript
class=class="token string">"token comment">// Get pending jobs for authenticated user
const jobs = await fetch(
  class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/pullprint/jobs",
  { headers: { Authorization: class="token string">"Bearer class="token operator"><access_token>" } }
);

class=class="token string">"token comment">// Release a specific job to a printer
const release = await fetch(
  class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/pullprint/release",
  {
    method: class="token string">"class="token function">POST",
    headers: {
      class="token string">"Content-Type": class="token string">"application/json",
      Authorization: class="token string">"Bearer class="token operator"><access_token>",
    },
    body: JSON.stringify({
      job_id: class="token string">"class="token operator"><pending_job_id>",
      printer_id: class="token string">"class="token operator"><release_printer_id>",
    }),
  }
);
```

```python
import requests

headers = {class="token string">"Authorization": class="token string">"Bearer class="token operator"><access_token>"}

class=class="token string">"token comment"># Get pending jobs for authenticated user
jobs = requests.get(
    class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/pullprint/jobs",
    headers=headers
).json()

class=class="token string">"token comment"># Release a specific job to a printer
release = requests.post(
    class="token string">"https:class="token commentclass="token string">">//printapi.ezeep.com/pullprint/release",
    headers={**headers, class="token string">"Content-Type": class="token string">"application/json"},
    json={
        class="token string">"job_id": class="token string">"class="token operator"><pending_job_id>",
        class="token string">"printer_id": class="token string">"class="token operator"><release_printer_id>",
    },
).json()
```

What You Can Do

Query available printers by name, location, or capability. Submit print jobs by passing a document and a printer target. Monitor and manage in-progress jobs. Create and manage users, groups, and printer assignments. Pull usage history and reporting. Manage your entire print fleet through conversation — ask your AI to show offline printers, invite users, or reassign printer groups without opening a dashboard.

Available Resources

Printers, Print Jobs, Users, Groups, Assignments, Connectors, Usage Reports.

Works With

Claude, Cursor, Lovable, Windsurf, GitHub Copilot, and any platform that supports the Model Context Protocol.

Common Use Cases

Printing shipping labels and packing slips from a Lovable-built fulfilment platform. Triggering invoice runs from a Claude-powered accounting workflow. Building a warehouse ops copilot that routes documents to the right printer at the right time. Giving any AI-built application a print button that actually works at enterprise scale.

#### **What You Can Do**

Query pending print jobs for an authenticated user. Release specific jobs to a target printer on demand. Build custom release interfaces for kiosks, touchscreens, or mobile apps. Support both trusted-user and trusted-device authentication workflows.

#### **Common Use Cases**

Custom release apps on printer touchscreens, RFID or badge-tap release at shared devices, mobile release from a custom app, secure printing in healthcare and financial services environments.

Read Pull Printing API Documentation

How It Works

## Architecture That Stays Out of Your Way

You don't need to understand printing to use the ezeep API. But if you want to know what happens after your API call, here it is.

1

#### Your App Calls the API

Authenticate via OAuth2 (Authorization Code or Device flow). Send a document with a target printer ID. That's your only touchpoint.

2

#### ezeep Renders in the Cloud

The document is converted to print-ready output using cloud-hosted manufacturer drivers. Your app never handles driver logic, spooler configuration, or format conversion.

3

#### The Printer Receives the Job

ezeep routes the rendered job to the target printer through an encrypted channel. If the printer is connected via an [ezeep Hub](/ezeep-hub?hsLang=en), Connector, or native cloud link, the job arrives without any on-premises infrastructure in between.

Authentication

## Standard OAuth2. No Proprietary Auth.

ezeep uses OAuth2 with JWT tokens. Choose the flow that fits your integration.

#### Authorization Code Flow

Best for interactive applications where a user is present. Redirect the user to ezeep's auth server, receive an authorization code, exchange it for access and refresh tokens.

#### Device Authorization Flow

Best for devices, kiosks, and headless environments where there's no browser. Request a device code, display it to the user, poll for authorization.

#### Token Revocation

Revoke access or refresh tokens when a session ends or credentials need to be invalidated. This ensures expired integrations lose access immediately.

All API traffic is encrypted via TLS. Access tokens expire after approximately one hour. Refresh tokens have a longer lifetime and can generate new access tokens as needed.

[Read Full Auth Documentation](https://apidocs.ezeep.com/ezeepblue/auth/README.html)

Printer Manufacturers

## Make Your Devices Cloud-Native

Building a printer, MFP, or embedded device? The ezeep API supports manufacturer integrations including cloud printing, follow-me workflows, Pull Printing release apps on touchscreens, and scan-to-cloud scenarios.

If you're looking to embed ezeep into your hardware or firmware, we have dedicated documentation and an integrations team to support the process.

[View Manufacturer Integration Docs](https://apidocs.ezeep.com/ezeepblue/README.html)

Security & Compliance

## Built for Production

 Security isn't a feature we added. It's how the platform was built from day one.

#### Encrypted API Traffic

All communication between your app and ezeep is TLS-encrypted. Print data is encrypted in transit and not retained after delivery.

Encrypted API Traffic

#### Permission-Based Access

Control what each API consumer can do through scoped tokens, user-level permissions, and organization-level isolation.

Permission-Based Access

#### Centralized Audit Logging

Every API action is logged with user, timestamp, and resource context for traceability, debugging, and compliance.

Centralized Audit Logging

#### Multi-Tenant Isolation

Each organization's data, users, and printers are fully isolated. Built for SaaS products serving multiple customers from a single integration.

Multi-Tenant Isolation

[Read About ezeep Security](https://www.ezeep.com/security-compliance?hsLang=en)

Get Started

## From Zero to First Print Job

1

#### Read the Docs

The API reference covers authentication, endpoints, parameters, and response formats. [Quickstart guides](https://apidocs.ezeep.com/ezeepblue/quick-guides/README.html) walk you through printing, [user management](/features/user-management?hsLang=en), and writing your first integration.

2

#### Get Your Credentials

Request your Client ID and Secret through the developer portal. For a quick test, use the demo Client ID from the docs to authenticate and make your first calls immediately.

3

#### Send Your First Print Job

Authenticate, pick a printer, submit a document. You'll have a working print integration in minutes. When you're ready to go deeper, the full REST API and webhooks are there.

[Get API Credentials](https://www.ezeep.com/contact/api?hsLang=en)

Pricing & Partners

## Start Free. Scale When You Ship.

The ezeep API is available on all plans, including the free tier with 50 pages per month. Build and test your integration at no cost, then scale with plan-based page quotas as your usage grows.

Building a product or platform around ezeep printing? Join ezeep Connect for partner resources, co-marketing, and dedicated integration support.

Become a Partner

## Frequently Asked Questions

Curious about how it all works? Here's everything you wanted to know about ezeep's cloud printing API!

##### What is the ezeep Print API?

The ezeep API is a RESTful cloud printing interface. It lets developers submit print jobs, manage printers and users, and automate document output programmatically. Your app calls the API over HTTPS, ezeep handles rendering and delivery to the target printer. [No drivers](/features/driverless-printing?hsLang=en), [no print servers](/use-cases/serverless-printing?hsLang=en), no direct printer connections from your code.

##### How do I get started?

Sign up for a free ezeep account, request API credentials (Client ID and Secret), and follow the [quickstart guide](https://apidocs.ezeep.com/ezeepblue/quick-guides/README.html) in the documentation. You can also use the demo Client ID to make your first API calls immediately without waiting for credentials.

##### How does authentication work?

ezeep uses standard OAuth2 with JWT tokens. Interactive applications use the Authorization Code Flow. Devices, kiosks, and headless services use the Device Authorization Flow. Access tokens expire after approximately one hour and can be refreshed automatically.

##### Can the API print without a logged-in user?

Yes. The [ezeep Print App for Services](/features/print-app-for-services?hsLang=en) enables unattended printing from backend systems, scheduled tasks, and event-driven workflows. This covers ERP/WMS label printing, kiosk output, scheduled reports, and any scenario where print jobs are triggered by code rather than a person.

##### What printer hardware is supported?

Any printer connected to ezeep through an ezeep Hub, ezeep Connector, or native cloud connection is accessible via the API. This includes office printers and MFPs from [HP](/use-cases/hp-printing?hsLang=en), [Lexmark](/use-cases/lexmark-printing?hsLang=en), [Xerox](/use-cases/xerox-printing?hsLang=en), Kyocera, Brother, Konica Minolta, and others, plus specialty hardware like [Zebra label printers](/use-cases/zebra-printing?hsLang=en) and [Epson receipt printers](/use-cases/epson-printing?hsLang=en).

Back to top

## Build Printing Into Your Product Without the Pain

You write the code. ezeep handles everything between your API call and ink on paper.

[Start Free Trial](https://www.ezeep.com/free-trial/developers?hsLang=en) [Contact About API Pricing](https://www.ezeep.com/contact/api?hsLang=en)

---

## About This Content

**Source:** [Developers & API | ezeep Cloud Printing](https://www.ezeep.com/developers-api)
**Author:** URL
curl

*This content is provided for informational purposes. Please visit the original source for the most up-to-date information.*