SimplQ Documentation
Quick Start Examples API Reference
Quick Start
Three Easy Steps
1
Create a free or paid account and get your API key
Login to SimplQ. If you don't already have an account, create your account. After logging in, visit the API Keys page in your account to retrieve your key.
2
Create your first queue

Using CURL:

curl --request POST --header 'x-api-key: <YOUR_API_KEY_HERE>' --url 'https://api.simplq.dev/v1/queues'

Result:

{
  "success": "true",
  "message": "Success",
  "status": "200",
  "queues": [
    {
      "id": "<NEW_QUEUE_ID>",
      "name": "Untitled Queue",
      "type": false,
      "status": "active",
      "pending": 0,
      "processing": 0
    }
  ]
}

Use the "id" property in the "queues" object to reference the new queue in future calls. You can also view your current queues on the SimplQ dashboard any time you're logged in to this site.

3
Push a message onto your queue

Using CURL:

curl --request POST --header 'x-api-key: <YOUR_API_KEY_HERE>' --url 'https://api.simplq.dev/v1/queues/<NEW_QUEUE_ID_HERE>/entries' --data '{"value": "label"}'

Looking for an SDK to use instead of Curl? Following are contributed SDKs in various languages. Please test thoroughly before relying on these SDKs in production:

Examples
API Key:
Queue ID:
Video Processing Queue
1
Queue a Video Processing Task
A user of your web application uploads a video that needs to be transcoded. After the upload completes, your web application queues the information describing the transcoding task for your dedicated transcoding server to complete:

API Call:

curl --request POST --header 'x-api-key: <VALID_API_KEY_HERE>' --url 'https://api.simplq.dev/v1/queues/<YOUR_QUEUE_ID_HERE>/entries' --data '{"video-file": "video_01.mp4", "task-type": "transcode", "sizes": "1080p,720p,480p", "notify": "[email protected]"}'

Result:

{
  "success": "true",
  "message": "Successfully added entry to queue id <YOUR_QUEUE_ID_HERE>",
  "status": "200",
  "entries": [
    {
      "id": "<NEW_MESSAGE_ID_HERE>",
      "status": "active",
      "status-when": false,
      "status-message": false,
      "added": "01/17/2025 4:33 pm",
      "scheduled": "01/17/2025 4:33 pm",
      "progress-percent": false,
      "progress-message": false,
      "queue": "<YOUR_QUEUE_ID_HERE>",
      "payload": "{\"video-file\": \"video_01.mp4\", 
      		\"task-type\": \"transcode\", \"sizes\": \"1080p,720p,480p\",
      		\"notify\": \"[email protected]\"}"
    }
  ]
}
2
Transcoding Server Gets Next Video To Process
When the transcoding server is ready to process the next video, it requests the next item from the queue:

API Call:

curl --request GET --header 'x-api-key: <VALID_API_KEY_HERE>' --url 'https://api.simplq.dev/v1/queues/<YOUR_QUEUE_ID_HERE>/entries/next'

Result:

{
  "success": "true",
  "message": "Next entry for queue id <YOUR_QUEUE_ID_HERE>",
  "status": 200,
  "entries": [
    {
      "id": "<MESSAGE_ID_HERE>",
      "status": "processing",
      "status-when": "0/17/2025 4:49 pm",
      "status-message": false,
      "added": "01/17/2025 4:33 pm",
      "scheduled": "01/17/2025 4:33 pm",
      "progress-percent": "0",
      "progress-message": false,
      "queue": "<YOUR_QUEUE_ID_HERE>",
      "payload": "{\"video-file\": \"video_01.mp4\", 
      		\"task-type\": \"transcode\", \"sizes\": \"1080p,720p,480p\",
      		\"notify\": \"[email protected]\"}"
    }
  ]
}

The message returned is marked as "processing" so it will not be returned to any other requester. The transcoding server uses the JSON-encoded information in the payload to perform the task.

3
Transcoding Server Completes Task
When the transcoding successfully completes the task, it marks the message in the queue as "completed":

API Call:

curl --request PATCH --header 'x-api-key: <VALID_API_KEY_HERE>' --url 'https://api.simplq.dev/v1/queues/<YOUR_QUEUE_ID_HERE>/entries/<NEW_MESSAGE_ID_HERE>/completed'

Result:

{
  "success": "true",
  "message": "Entry id <MESSAGE_ID_HERE> status changed to completed.",
  "status": "200",
  "entries": [
    {
      "id": "<MESSAGE_ID_HERE>",
      "status": "completed",
      "status-when": "01/17/2025 5:00 pm",
      "status-message": "",
      "added": "01/17/2025 4:33 pm",
      "scheduled": "01/17/2025 4:33 pm",
      "progress-percent": "0",
      "progress-message": false,
      "queue": "<YOUR_QUEUE_ID_HERE>",
      "payload": "{\"video-file\": \"video_01.mp4\", 
      		\"task-type\": \"transcode\", \"sizes\": \"1080p,720p,480p\",
      		\"notify\": \"[email protected]\"}"
    }
  ]
}

The transcoding server is now ready to request the next task from the queue.

SimplQ API Reference