Skip to content

Create a print job from a URL

Fetch a document from a public HTTPS URL and create a normal CloudPrint document and print job in one request.

POST/api/v1/print-jobs/from-urlAPI version: v1operationId: createPrintJobFromUrlView as Markdown

What this endpoint does

Fetch a document from a public HTTPS URL and create a normal CloudPrint document and print job in one request.

Authentication

Send a short-lived access token in Authorization: Bearer <access_token>.

Required scopes: print_jobs:write

Request

Production base URL: https://public-api.cloudprint.me/api/v1/print-jobs/from-url

Parameters

NameLocationTypeRequiredDescriptionConstraints
Idempotency-KeyheaderstringnoOptional key that prevents duplicate print jobs for the same account and payload.maxLength: 128

Request body

Content type: application/json

NameTypeRequiredDescriptionConstraints
document_urlstring (uri)yesPublic HTTPS URL from which CloudPrint downloads the document.example: "https://files.example.com/labels/order-100045.pdf"
document_filenamestring | nullnoFile name used for format detection and operator diagnostics.example: "order-100045.pdf"
document_formatstring | nullnoExplicit print format, such as pdf or raw.enum: pdf, raw; example: "pdf"
document_raw_languagestring | nullnoPrinter command language used by RAW data, for example ZPL or EPL.enum: tspl, zpl, cpcl, escpos; example: null
printer_idstring (uuid)yesStable CloudPrint UUID of the destination printer.
copiesintegernoNumber of copies CloudPrint asks the printer to produce.min: 1; max: 99; example: 1
intentstringnoBusiness purpose of the print job, used for diagnostics and sensible defaults.enum: document, shipping_label, product_label, invoice, packing_slip, a4_document, receipt; example: "shipping_label"
color_modestringnoRequested color handling; default leaves the decision to the printer configuration.enum: default, monochrome, color; example: "default"
duplex_modestringnoRequested one-sided or two-sided printing mode.enum: default, simplex, duplex_long_edge, duplex_short_edge; example: "default"
media_width_mmnumber | nullnoRequested media or label width in millimetres.min: 1; max: 2000; example: 58
media_height_mmnumber | nullnoRequested media or label height in millimetres.min: 1; max: 2000; example: 40
dpiinteger | nullnoTarget print resolution in dots per inch; use a value supported by the printer.min: 72; max: 2400; example: 203
scale_modestringnoControls whether the document keeps its size or is fitted to the target media.enum: none, fit; example: "none"
orientationstringnoRequested page orientation; default uses printer settings.enum: default, portrait, landscape; example: "default"
offset_x_mmnumbernoHorizontal print offset in millimetres.min: -2000; max: 2000; example: 0
offset_y_mmnumbernoVertical print offset in millimetres.min: -2000; max: 2000; example: 0
margin_top_mmnumbernoAdditional print margin in millimetres.min: 0; max: 2000; example: 0
margin_right_mmnumbernoAdditional print margin in millimetres.min: 0; max: 2000; example: 0
margin_bottom_mmnumbernoAdditional print margin in millimetres.min: 0; max: 2000; example: 0
margin_left_mmnumbernoAdditional print margin in millimetres.min: 0; max: 2000; example: 0

Example requests

cURL

bash
curl -sS https://public-api.cloudprint.me/api/v1/print-jobs/from-url \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: order-100045-label' \
  -d '{
    "document_url": "https://files.example.com/labels/order-100045.pdf",
    "document_filename": "order-100045.pdf",
    "printer_id": "11111111-1111-4111-8111-111111111111",
    "copies": 1,
    "intent": "shipping_label",
    "media_width_mm": 58,
    "media_height_mm": 40,
    "dpi": 203
  }'

Response

HTTP status: 201 — Print job created

Response fields

NameTypeRequiredDescriptionConstraints
print_job_idstring (uuid)yesStable UUID of the print job; persist it for status checks and support.
document_idstring (uuid)yesStable UUID returned after a successful document upload.
document_mime_typestringyesMIME type of the supplied document.example: "application/pdf"
document_formatstringyesExplicit print format, such as pdf or raw.enum: pdf, raw; example: "pdf"
document_raw_languagestring | nullyesPrinter command language used by RAW data, for example ZPL or EPL.enum: tspl, zpl, cpcl, escpos; example: null
printer_idstring (uuid)yesStable CloudPrint UUID of the destination printer.
statusstringyesCurrent resource or workflow state; use the endpoint-specific enum values.enum: pending, reserved, printing, printed, failed, cancelled; example: "pending"
copiesintegeryesNumber of copies CloudPrint asks the printer to produce.min: 1; max: 99; example: 1
intentstringyesBusiness purpose of the print job, used for diagnostics and sensible defaults.enum: document, shipping_label, product_label, invoice, packing_slip, a4_document, receipt; example: "shipping_label"
color_modestringyesRequested color handling; default leaves the decision to the printer configuration.enum: default, monochrome, color; example: "default"
duplex_modestringyesRequested one-sided or two-sided printing mode.enum: default, simplex, duplex_long_edge, duplex_short_edge; example: "default"
media_width_mmnumber | nullyesRequested media or label width in millimetres.min: 1; max: 2000; example: 58
media_height_mmnumber | nullyesRequested media or label height in millimetres.min: 1; max: 2000; example: 40
dpiinteger | nullyesTarget print resolution in dots per inch; use a value supported by the printer.min: 72; max: 2400; example: 203
scale_modestringyesControls whether the document keeps its size or is fitted to the target media.enum: none, fit; example: "none"
orientationstringyesRequested page orientation; default uses printer settings.enum: default, portrait, landscape; example: "default"
offset_x_mmnumberyesHorizontal print offset in millimetres.min: -2000; max: 2000; example: 0
offset_y_mmnumberyesVertical print offset in millimetres.min: -2000; max: 2000; example: 0
margin_top_mmnumberyesAdditional print margin in millimetres.min: 0; max: 2000; example: 0
margin_right_mmnumberyesAdditional print margin in millimetres.min: 0; max: 2000; example: 0
margin_bottom_mmnumberyesAdditional print margin in millimetres.min: 0; max: 2000; example: 0
margin_left_mmnumberyesAdditional print margin in millimetres.min: 0; max: 2000; example: 0
created_atstring (date-time)yesISO 8601 timestamp recorded by CloudPrint.
reserved_atstring | null (date-time)yesISO 8601 timestamp recorded by CloudPrint.
started_atstring | null (date-time)yesISO 8601 timestamp recorded by CloudPrint.
completed_atstring | null (date-time)yesISO 8601 timestamp recorded by CloudPrint.
failure_reasonstring | nullyesMachine-readable or diagnostic reason recorded when printing fails.

Example response

json
{
  "print_job_id": "11111111-1111-4111-8111-111111111111",
  "document_id": "11111111-1111-4111-8111-111111111111",
  "document_mime_type": "application/pdf",
  "document_format": "pdf",
  "document_raw_language": null,
  "printer_id": "11111111-1111-4111-8111-111111111111",
  "status": "pending",
  "copies": 1,
  "intent": "shipping_label",
  "color_mode": "default",
  "duplex_mode": "default",
  "media_width_mm": 58,
  "media_height_mm": 40,
  "dpi": 203,
  "scale_mode": "none",
  "orientation": "default",
  "offset_x_mm": 0,
  "offset_y_mm": 0,
  "margin_top_mm": 0,
  "margin_right_mm": 0,
  "margin_bottom_mm": 0,
  "margin_left_mm": 0,
  "created_at": "2026-08-06T12:00:00Z",
  "reserved_at": null,
  "started_at": null,
  "completed_at": null,
  "failure_reason": null
}

Errors

HTTP statusDescription
400Invalid URL request
401OAuth bearer token is missing or invalid
403OAuth bearer token lacks documents:write or print_jobs:write
409Idempotency key conflict or unsupported print route. Unsupported routes include details.reason.
413Remote document is too large
415Document type is not supported by the Public API
422Remote document or print job validation failed
429Rate limit exceeded
500Unexpected error

Integration guidance

  • The source must be a public HTTPS URL; localhost, private networks, embedded credentials and unsafe redirects are rejected.
  • Use a short-lived, narrowly scoped download URL that remains valid long enough for CloudPrint to fetch it.
  • Apply the same idempotency and status-tracking rules as for normal job creation.

Guides for integrating CloudPrint, connecting the local agent and operating print workflows.