# InkRelay - [PrintEasy](https://docs.inkrelay.app/index.md): Print PDFs and raw jobs to any printer from your own software. - [Quickstart](https://docs.inkrelay.app/quickstart.md): Print your first PDF in under 10 minutes. - [Install the agent](https://docs.inkrelay.app/install-agent.md): Run the PrintEasy agent as a service on macOS, Windows or Linux. - [Printing PDFs](https://docs.inkrelay.app/guides/printing-pdfs.md): Send a PDF by URL or as base64 and track it to done. - [Raw printing (ESC/POS, ZPL)](https://docs.inkrelay.app/guides/raw-printing.md): Send printer language bytes straight to receipt and label printers. - [Options and paper sizes](https://docs.inkrelay.app/guides/options-and-paper-sizes.md): Control copies, paper, duplex, color, trays and more. - [Webhooks](https://docs.inkrelay.app/guides/webhooks.md): Receive signed events for jobs, computers and printers. - [Test mode](https://docs.inkrelay.app/guides/test-mode.md): Build against virtual printers without paper or charges. - [Rate limits and idempotency](https://docs.inkrelay.app/guides/rate-limits-and-idempotency.md): Stay under 20 requests per second and retry safely. - [Errors](https://docs.inkrelay.app/guides/errors.md): Error format, status codes and request ids. - [TypeScript SDK](https://docs.inkrelay.app/sdks/typescript.md): @printeasy/sdk for Node 18 and later. - [Python SDK](https://docs.inkrelay.app/sdks/python.md): printeasy-sdk for Python 3.10 and later. - [Migrating from PrintNode](https://docs.inkrelay.app/guides/migrating-from-printnode.md): Move an existing PrintNode integration to PrintEasy, with the differences in paths, ids, states and options. - [List computers](https://docs.inkrelay.app/api-reference/computers/list-computers.md): Lists the computers running the PrintEasy agent in the organization and mode of the caller, newest first. A test key sees the virtual test computer. - [Get a computer](https://docs.inkrelay.app/api-reference/computers/get-a-computer.md): Returns one computer with its agent version, operating system and connection state. - [Delete a computer](https://docs.inkrelay.app/api-reference/computers/delete-a-computer.md): Soft-deletes the computer and its printers, revokes its agent tokens and disconnects the agent. The virtual test computer cannot be deleted. - [Rename, disable or re-enable a computer](https://docs.inkrelay.app/api-reference/computers/rename-disable-or-re-enable-a-computer.md): Renames a computer or disables it. Disabling disconnects the agent at once; re-enabling lets it reconnect and go online on its next ping. - [List the printers on a computer](https://docs.inkrelay.app/api-reference/printers/list-the-printers-on-a-computer.md): Lists the printers that the agent on one computer reports. Returns 404 when the computer is not in the organization and mode of the caller. - [List printers](https://docs.inkrelay.app/api-reference/printers/list-printers.md): Lists the printers reported by every computer in the organization and mode of the caller. A test key sees the four virtual test printers. - [Get a printer](https://docs.inkrelay.app/api-reference/printers/get-a-printer.md): Returns one printer with its state, capabilities, default options and custom paper sizes. - [Update printer settings](https://docs.inkrelay.app/api-reference/printers/update-printer-settings.md): Changes the display name, the live flag, default job options, custom paper sizes or remarks of a printer. Only enabled printers accept jobs. - [List events](https://docs.inkrelay.app/api-reference/events/list-events.md): The organization's event feed for the caller's mode, the same events webhooks deliver. Page back with dir=desc, or poll for new events with dir=asc and after set to the last id you processed. Polling with dir=asc sees an event about 2 seconds after it happens, so events that commit out of order are… - [List the print jobs of a printer](https://docs.inkrelay.app/api-reference/print-jobs/list-the-print-jobs-of-a-printer.md): Lists the print jobs sent to one printer, newest first by default. Returns 404 when the printer is not in the organization and mode of the caller. - [List print jobs](https://docs.inkrelay.app/api-reference/print-jobs/list-print-jobs.md): Lists the print jobs of the organization and mode of the caller, newest first by default. Filter by printer, computer, state or creation time. - [Create a print job](https://docs.inkrelay.app/api-reference/print-jobs/create-a-print-job.md): Queues a PDF or raw document for a printer. Send an Idempotency-Key header to make retries safe: a repeat with the same body returns the first response with header Idempotent-Replayed: true. To print an earlier job again, send reprintOf with its id instead of contentType and content. - [Get a print job](https://docs.inkrelay.app/api-reference/print-jobs/get-a-print-job.md): Returns one print job with its current state and the time of each state change so far. - [Cancel a print job](https://docs.inkrelay.app/api-reference/print-jobs/cancel-a-print-job.md): Cancels a print job that is still queued or sent; the agent drops it if it already has it. Jobs the printer has received can no longer be cancelled. - [List the state changes of a print job](https://docs.inkrelay.app/api-reference/print-jobs/list-the-state-changes-of-a-print-job.md): Lists every state change of one print job, oldest first, with the message and the actor (api, user, agent or system) behind it. - [Get print usage for this period](https://docs.inkrelay.app/api-reference/usage/get-print-usage-for-this-period.md): Returns the plan, the live prints it includes this monthly period and the live print jobs created so far. Test mode jobs never count, so a test key sees the same live usage. - [List webhook endpoints](https://docs.inkrelay.app/api-reference/webhooks/list-webhook-endpoints.md): Lists webhook endpoints in the organization and mode of the calling key, newest first. Secrets are never included. - [Create a webhook endpoint](https://docs.inkrelay.app/api-reference/webhooks/create-a-webhook-endpoint.md): Creates an endpoint in the mode of the calling key. The response holds the signing secret; store it now, it is never shown again. Live endpoints need https and every URL must resolve to a public address. - [Replay a delivery](https://docs.inkrelay.app/api-reference/webhooks/replay-a-delivery.md): Sends the same event again as a new delivery with its own retry schedule. webhook-id stays the event id, so receivers that already processed it can skip it. - [Get a webhook endpoint](https://docs.inkrelay.app/api-reference/webhooks/get-a-webhook-endpoint.md): Returns one endpoint, including whether it is enabled and why it was disabled. - [Delete a webhook endpoint](https://docs.inkrelay.app/api-reference/webhooks/delete-a-webhook-endpoint.md): Deletes the endpoint and its delivery log; queued retries stop. - [Update a webhook endpoint](https://docs.inkrelay.app/api-reference/webhooks/update-a-webhook-endpoint.md): Changes the URL, description, events or enabled flag. Enabling clears failingSince and disabledReason. - [List deliveries for an endpoint](https://docs.inkrelay.app/api-reference/webhooks/list-deliveries-for-an-endpoint.md): Delivery log for one endpoint, newest first, kept for 30 days. Filter with status to find failed deliveries to replay. - [Identify the organization behind an API key](https://docs.inkrelay.app/api-reference/account/identify-the-organization-behind-an-api-key.md): Returns the organization, mode, key id and plan of the API key that signs the request. Use it to check that a key works. - [Changelog](https://docs.inkrelay.app/changelog.md): Changes to the API, agent and SDKs. ## OpenAPI Specs - [openapi](/openapi/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.