API Documentation
Complete reference for the Cloudlinker API. Manage your clients, devices, and jobs programmatically with our RESTful API.
Base URL
https://cloudlinker.eu/api
All API requests should be made to this base URL
Basic Authentication
All API requests require basic authentication using an API key and an Organization ID. Include both fields in the request header:
Connection Test
Test your API connection and authentication.
test
Test your API connection and verify authentication. Returns your organization ID if properly authenticated.
Example Response
{
"organization_id": "0197df47-871f-72d1-95df-2bfb0c18529a"
}
This endpoint is perfect for testing if your external packages can properly connect to the CloudLinker API. If authentication fails, you will receive a 401 Unauthorized response instead of your organization ID.
Clients API
Manage your connected clients and their configurations.
clients/list
Retrieve a list of all devices associated with your account.
Query Parameters
hostname (optional) - Filter the results based on hostnamepagination (optional) - Number of results to return (default: 20)Request Body
{
"hostname": "LT", //optional, filters clients with hostname that starts with 'LT'
"pagination": 20 //optional
}
Example Response
{
"data": [
{
"id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"hostname": "LT-STESA",
"ip_address": "10.5.0.2"
}
],
"links": {
"first": "http://cloudlinker/api/clients/list?page=1",
"last": "http://cloudlinker/api/clients/list?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "http://cloudlinker/api/clients/list?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "http://cloudlinker/api/clients/list",
"per_page": 20,
"to": 1,
"total": 1
}
}
The data section contains a list of clients. It's capped to the maximum pagination limit. In case that there are more pages available you can use the links included to perform additional requests. This allows you to iterate through all results.
clients/create
Add a new client to your account. This is normally handled by the cloudlinker client software. But you can also choose to manually register all your clients.
Query Parameters
client_id (required) - ID of the clienthostname (required) - Hostname of the clientdescription (optional) - Description of the client, use your own interpretationip_address (required) - IP address of the clientRequest Body
{
"hostname": "your_clients_hostname",
"description": "Your clients description",
"ip_address": "192.168.1.101",
}
Example Response
{
"data": {
"id": "0197e078-c984-7383-9c82-94b2b96bbe20",
"hostname": "LT-TEST",
"description": "This is a test server",
"ip_address": "192.168.1.123",
"last_seen": null
}
}
You need to store the returned ID value in your application. You will need this ID to launch a job request to this client.
clients/update
Update an existing client in your account. This is normally handled by the cloudlinker client software. But you can also choose to manually update your clients.
Query Parameters
hostname (optional) - Hostname of the clientdescription (optional) - Description of the client, use your own interpretationip_address (optional) - IP address of the clientlast_seen (optional) - Timestamp in Y-m-d H:i:s format when the client was last active (last startup time or last job execution)Request Body
{
"hostname": "LT-NEWTEST",
"description": "This is a second test server",
"ip_address": "192.168.1.150",
"last_seen": "2025-07-06 18:09:00"
}
Example Response
{
"data": {
"id": "0197e078-c984-7383-9c82-94b2b96bbe20",
"hostname": "LT-NEWTEST",
"description": "This is a second test server",
"ip_address": "192.168.1.150",
"last_seen": "2025-07-06 18:09:00"
}
}
The updated client info will be returned.
clients/delete
Delete an existing client in your account.
Query Parameters
client_id (required) - ID of the clientRequest Body
{
"client_id": "0197e078-c984-7383-9c82-94b2b96bbe20"
}
Example Response
[]
The response will be empty
Devices API
Manage your connected devices and their configurations.
devices/list
Retrieve a list of all devices associated with a client.
Query Parameters
client_id (optional) - ID of the clientdevice_type (optional) - Type of the device. Printers have device type equal to 1. Other device types will be implemented in the future.name (optional) - Filter by device nameExample Response
{
"data": [
{
"id": "0197df47-87f1-73fa-aa41-bbb623b0babe",
"name": "Microsoft XPS Document Writer",
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"hardware_path": null,
"additional_info": null
},
{
"id": "0197df47-883a-7393-85dd-a123e0a9d120",
"name": "AnyDesk Printer",
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"hardware_path": null,
"additional_info": null
}
],
"links": {
"first": "http://cloudlinker/api/devices/list?page=1",
"last": "http://cloudlinker/api/devices/list?page=5",
"prev": null,
"next": "http://cloudlinker/api/devices/list?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "http://cloudlinker/api/devices/list?page=1",
"label": "1",
"active": true
},
{
"url": "http://cloudlinker/api/devices/list?page=2",
"label": "2",
"active": false
},
{
"url": "http://cloudlinker/api/devices/list?page=3",
"label": "3",
"active": false
},
{
"url": "http://cloudlinker/api/devices/list?page=4",
"label": "4",
"active": false
},
{
"url": "http://cloudlinker/api/devices/list?page=5",
"label": "5",
"active": false
},
{
"url": "http://cloudlinker/api/devices/list?page=2",
"label": "Next »",
"active": false
}
],
"path": "http://cloudlinker/api/devices/list",
"per_page": 2,
"to": 2,
"total": 9
}
}
devices/create
Add a new device to a client within your account. This process is automatically done by the cloudlinker client software.
Query Parameters
client_id (required) - ID of the clientname (required) - Name of the device (for printers the printer name of the operating system will be used)device_type (required) - Type of the device. Printers have device type equal to 1. Other device types will be implemented in the future.hardware_path (optional) - For future useadditional_info (optional) - Can be used to store json data specific to the device, will be available for future useRequest Body
{
"client_id": "0197e078-c984-7383-9c82-94b2b96bbe20"
"name": "Microsoft Print to PDF2",
"device_type": 1,
}
Example Response
{
"data": {
"id": "0197e09b-d974-7191-a978-9bf0daecef6b",
"name": "Microsoft Print to PDF2",
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"hardware_path": null,
"additional_info": null
}
}
devices/update
Update an existing device form a client within your account.
Query Parameters
client_id (required) - ID of the clientdevice_id (required) - ID of the devicename (optional) - Name of the device.hardware_path (optional) - For future useadditional_info (optional) - Can be used to store json data specific to the device, will be available for future useRequest Body
{
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"device_id: "0197e09b-d974-7191-a978-9bf0daecef6b",
"name": "Microsoft Print to PDF3",
}
Example Response
{
"data": {
"id": "0197e09b-d974-7191-a978-9bf0daecef6b",
"name": "Microsoft Print to PDF3",
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"hardware_path": null,
"additional_info": null
}
}
devices/delete
Remove a device from a client within your account.
Query Parameters
device_id (required) - ID of the deviceRequest Body
{
"device_id": "0197e09b-d974-7191-a978-9bf0daecef6b"
}
Example Response
[]
An empty response is returned
Jobs API
Create and manage your cloudlinker jobs for your clients and devices.
jobs/list
Retrieve a list of all jobs in your account.
Query Parameters
client_id (optional) - ID of the clientdevice_id (optional) - ID of the devicejob_type (optional) - Job Type ID (1 = PRINTJOB)status (optional) - Status of the job (1=JOB CREATED, 2=JOB LAUNCHED, 3=JOB PENDING, 4=JOB COMPLETED, 5=JOB FAILED)Example Response
{
"success": true,
"data": {
"jobs": [
{
"id": "job_98765",
"name": "Daily Backup",
"device_id": "dev_12345",
"status": "completed",
"schedule": "0 2 * * *",
"last_run": "2024-01-15T02:00:00Z",
"next_run": "2024-01-16T02:00:00Z",
"created_at": "2024-01-01T12:00:00Z"
}
],
"total": 15,
"limit": 50,
"offset": 0
}
}
jobs/create
Create a new cloudlinker job.
Query Parameters
client_id (required) - ID of the clientdevice_id (required) - ID of the devicejob_type (required) - Job Type ID (1 = PRINTJOB)payload (required)launch_immediately (optional) - true/falseRequest Body
{
"device_id": "0197df47-88ca-714f-bd34-372d53fb6fc5",
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"job_type" : 1,
"payload": "{
"document_type": "pdf",
"document_url": "http://cloudlinker/test.pdf",
"copies": "1"
}"
}
In order to perform a printjob you must specifiy a document type (PDF), document url and amount of copies in the payload of the job.
It's important to mention that the document url only needs to be reachable from the client that is running the cloudlinker software. So you can use internal network locations.
Example Response
{
"data": {
"id": "0197e0aa-e9f3-7168-8504-ccffa0052376",
"job_type": 1,
"device_id": "0197df47-88ca-714f-bd34-372d53fb6fc5",
"device_name": "Microsoft Print to PDF",
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"payload": "{\n \"document_type\": \"pdf\",\n \"document_url\": \"http://cloudlinker/storage/test.pdf\",\n \"copies\": \"1\"\n}",
"status": 1,
"created_at": "2025-07-06T16:56:26.000000Z"
}
jobs/update
Update an existing cloudlinker job.
Query Parameters
job_id (required) - ID of the jobdevice_id (optional) - ID of the device (you can switch to another device of the same client)payload (optional) - You can update the payload (document url, copies, ...)launch_immediately (optional) - true/falsestatus (optional) - Status of the job (1=JOB CREATED, 2=JOB LAUNCHED, 3=JOB PENDING, 4=JOB COMPLETED, 5=JOB FAILED)Request Body
{
"job_id": "0197e0aa-e9f3-7168-8504-ccffa0052376",
"payload": "{
"document_type": "pdf",
"document_url": "http://cloudlinker/test2.pdf",
"copies": "2"
}"
}
Use this function to update the job payload before it's launched.
Example Response
{
"data": {
"id": "0197e0aa-e9f3-7168-8504-ccffa0052376",
"job_type": 1,
"device_id": "0197df47-88ca-714f-bd34-372d53fb6fc5",
"device_name": "Microsoft Print to PDF",
"client_id": "0197df47-871f-72d1-95df-2bfb0c18529a",
"payload": "{\n \"document_type\": \"pdf\",\n \"document_url\": \"http://cloudlinker/storage/test2.pdf\",\n \"copies\": \"2\"\n}",
"status": 1,
"created_at": "2025-07-06T16:56:26.000000Z"
}
}
jobs/launch
Launch an existing cloudlinker job.
Query Parameters
job_id (required) - ID of the jobRequest Body
{
"job_id": "0197e0aa-e9f3-7168-8504-ccffa0052376",
}
Use this function to launch/relaunch an existing job. When creating new jobs you can specify the option 'launch_immediately' in order to launch just after creating the job
Example Response
[]
Empty response
jobs/delete
Delete an existing cloudlinker job.
Query Parameters
job_id (required) - ID of the jobRequest Body
{
"job_id": "0197e0aa-e9f3-7168-8504-ccffa0052376",
}
Use this function to delete an existing job.
Example Response
[]
Empty response
Error Codes
Common error responses you may encounter when using the API.
Invalid request parameters or malformed JSON.
Invalid or missing API key.
The requested resource does not exist.
Too many requests. Please slow down your API calls.
An unexpected error occurred on our servers.
Rate Limits
To ensure fair usage, our API enforces rate limits on all endpoints.
Standard Plan
- • 1,000 requests per hour
- • 100 requests per minute
- • Burst limit: 20 requests per 10 seconds
Pro Plan
- • 10,000 requests per hour
- • 500 requests per minute
- • Burst limit: 100 requests per 10 seconds
Need Help?
Can't find what you're looking for? Our developer support team is here to help you integrate with the Cloudlinker API.