API Reference for Jobs, Tasks, Payments, and User Management
All API endpoints require authentication using a Bearer token. Include the following header in your requests:
Authorization: Bearer <your_access_token>Manage job postings, retrieve applicants, and handle job-related operations.
Retrieves a list of job applicants for a specified job. Allows for sorting, pagination, and searching within job applicants.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| job_id | string | Yes | The ID of the job for which to retrieve applicants | - |
| task_id | string | No | The ID of the job task or planned task. Accepts either a job_task_id or planned_task_id - if a planned_task_id is provided, it will be resolved to its associated job_task_id. Used when only one task details is needed. If present, the task result list array will contain only one task or empty array if task not found. | - |
| sortby | string | No | Field by which to sort job applicants | - |
| order | string | No | Sort order. Can be 'asc' for ascending or 'desc' for descending | asc |
| page | integer | No | Page number for pagination | 1 |
| limit | integer | No | Number of applicants per page | 10 |
| hours_ago | integer | No | The day interval, specified as the number of days starting from the given hours_ago up to today | 10 |
| status | string | No | The status of the task ('processing', 'confirmed', 'notcomplete', 'declined', 'pending') | confirmed |
| search | string | No | Search term to filter applicants based on worker name, job proof, job title, comment, or worker IP | developer |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Successfully retrieved job applicants | Returns job details with applicant information including planned_task, job tasks, total tasks, job done count, pending tasks, satisfied tasks, declined tasks, and failed tasks |
| 400 | Invalid request data or planned task exists but has no associated job task | {"error": "Invalid task_id format"} or {"error": "Planned task {id} exists but has no associated job task (job_task_id is null)"} |
| 404 | Job not found, task_id is neither a valid job task ID nor a planned task ID | {"error": "Job with this Id not found"} or {"error": "task_id {id} is neither a valid job task ID nor a planned task ID"} |
Updates the status of specified job tasks. It supports changing the status, adding comments, and handles referral bonuses if the task is confirmed.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| JobTasks_Ids | array | Yes | An array of job task IDs or planned task IDs to be updated. Accepts a mix of job_task_ids and planned_task_ids - planned task IDs will be resolved to their associated job_task_ids. | ["60d21b4667d0d8992e610c85", "60d21b4667d0d8992e610c86"] |
| status | string | Yes | The new status to set for the job tasks | confirmed |
| job_id | string | Yes | The ID of the job to which the tasks belong | 60d21b4667d0d8992e610c85 |
| comment | string | No | Optional comment to add regarding the task update | Task successfully completed. |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Successfully updated job task statuses. | Returns the updated job task details |
| 400 | Bad request. Invalid input data, invalid status provided, or planned task exists but has no associated job task. | {"error": "Invalid status..."} or {"error": "Planned task {id} exists but has no associated job task (job_task_id is null)"} |
| 404 | Job or job tasks not found, or ID is neither a valid job task ID nor a planned task ID. | {"error": "Job Task with this Id not found"} or {"error": "ID {id} is neither a valid job task ID nor a planned task ID"} |
Returns job details for a specific job ID.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| job_id | string | No | Unique identifier for the job | 68910c4a5e1c7092a1fdc03a |
{
"_id": "68910c4a5e1c7092a1fdc03a",
"job_id": "68910c4a5e1c7092a1fdc03a",
"job_type": "job",
"payment_type": "action",
"title": "Create a Google account",
"category": ["Google"],
"description": "Create a Google account. ...",
"proof": "Google account email. ...",
"Target_Workers": ["worldwide"],
"few_times": true,
"premium": false,
"featured": false,
"duration": "3",
"positions": "3",
"job_price": 0.06,
"price": "0.30",
"status": "active",
"files": [...],
"added": "2025-08-04T19:38:50.204Z",
"user": {...},
"totla_tasks_count": 1,
"tasks_done_count": 0,
"tasks_confirmed_count": 0,
"tasks_running_count": 0,
"tasks_pending_count": 0
}This endpoint checks if a given search term exists in the job proofs. You can specify the search option to look for exact words or substrings.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| search | string | Yes | The term to search for in job proofs | developer |
| option | string | No | The search option to use. Can be "word" for exact word matching or "charactor" for substring matching | word |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Successfully checked for uniqueness | Returns a boolean indicating if the search term is unique |
| 400 | Bad request. Either the search term is missing, or an invalid search option is provided | Error message describing the validation error |
This endpoint allows a user to retrieve a paginated list of jobs associated with their account. The results can be filtered and sorted based on various parameters.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| page | integer | No | Page number for pagination | 1 |
| limit | integer | No | Number of items per page | 10 |
| job_id | string | No | Filter jobs by a specific job ID | - |
| status | string | No | Filter jobs by status (e.g., 'active', 'completed') | - |
| orientation | string | No | The orientation for the data sorting (e.g., 'asc' or 'desc') | asc |
| Query | string | No | Search query for job title or description | - |
| SortBY | string | No | Field to sort the results by | - |
Returns a paginated list of jobs matching the provided filters. Supports search, category, price, location, and other filters.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| page | string | No | Page number for pagination | 1 |
| limit | string | No | Number of jobs per page | 10 |
| searchTerm | string | No | Search term for job title or description | - |
| job_category | string | No | Filter by job category | - |
| min_price | string | No | Minimum job price | - |
| location | string | No | Filter by worker location | - |
| Featured | boolean | No | Filter for featured jobs | - |
| Premium | boolean | No | Filter for premium jobs | - |
| orientation | string | No | Sort orientation (asc, desc) | desc |
| SortBY | string | No | Field to sort by | added |
This endpoint allows users to create a new job posting. It requires specific details about the job, including title, description, category, number of positions, job price, and duration.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| title | string | Yes | The title of the job posting | Software Developer |
| category | string | Yes | Category of the job | Engineering |
| description | string | Yes | Detailed description of the job | We are looking for a skilled software developer... |
| proof | string | Yes | Proof or evidence related to the job posting | Sample proof text. |
| is_proof_file | boolean | No | Indicates if the proof is a file or text | false |
| auto_rate | boolean | No | Whether the job should be automatically rated | true |
| vcode | string | No | Verification code for the job posting | cdcdc |
| Target_Workers | array | No | List of target workers or countries | ["worldwide"] |
| few_times | boolean | No | Indicates if the job can be posted a few times | false |
| premium | boolean | No | Indicates if the job is premium | false |
| featured | boolean | No | Whether the job is featured or not | false |
| duration | integer | Yes | Duration for which the job is posted (in days) | 60 |
| positions | integer | Yes | Number of available positions for the job | 3 |
| daily_limit | integer | No | Daily limit for the job posting | 0 |
| job_price | number | Yes | Price for posting the job | 100 |
| Status Code | Description | Response Body |
|---|---|---|
| 201 | Job created successfully | Success message indicating job creation |
| 400 | Bad request. Invalid or missing required fields | List of validation error messages |
Updates the status of a specific job.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| job_id | string | Yes | The ID of the job | 60c72b2f9b1e8c001c8e4d8a |
| status | string | Yes | New status for the job (active, inactive) | active |
| Status Code | Description | Response Body |
|---|---|---|
| 204 | Job status updated successfully | - |
| 400 | Invalid request body or status | - |
| 401 | Unauthorized action | - |
| 404 | Job not found or invalid job_id | - |
Manage job tasks, apply for tasks, and submit task completions.
This API must be called before tasks/submit API for jobs that have job variables. This endpoint allows workers to apply to an active job. Job variables (if any) will be returned.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| job_id | string | Yes | Unique identifier for the job | 68868530c189957861cd698a |
{
"_id": "68910c4a5e1c7092a1fdc03c",
"var1": "Custom variable value 1",
"var2": "Custom variable value 2"
}Returns the list of recent tasks of the user. If task_id query param is provided, it will return details of a single task.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| task_id | string | No | The ID of the job task to fetch details for | 686f668db9c27eea026e60c7 |
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| page | integer | No | Page number for pagination (starts from 1) | 1 |
| limit | integer | No | Number of tasks to return per page | 10 |
{
"_id": "686f668db9c27eea026e60c7",
"job_task_id": "686f668db9c27eea026e60c7",
"worker_id": "676d3525e618d4ad99dae7ff",
"job_id": "686f44cf8abf68ace53ebc8f",
"job_title": "Create a Google account",
"job_price": 0.06,
"job_proof": "",
"comment": "",
"country_code": "IN",
"worker_ip": "192.168.249.223",
"status": "confirmed",
"failureReason": null,
"reviewed": null,
"device_owner_share": null,
"added": "2025-07-10T07:06:53.631Z",
"updated": "2025-07-10T07:06:53.631Z",
"proof_files_info": []
}This endpoint allows workers to submit a task to an active job.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| job_id | string | Yes | ID of the job | 68868530c189957861cd698a |
| job_proof | string | Yes | Proof of the task done | irjfoirf@gmail.com:iejowiedj:ehiuehwd@outlook.com:wuehuidhewd |
| custom_vars | object | No | Custom vars obtained from tasks/apply. Required for jobs with variables | {"_id": "68910c4a5e1c7092a1fdc03c", "var1": "value1"} |
| proof_files_base64 | array | No | Array of required and optional proof files in base64 format | [{"fieldName": "screenshot", "fileName": "image.jpg", "base64": "..."}] |
| Status Code | Description | Response Body |
|---|---|---|
| 201 | Job task submitted successfully | Success message indicating task submission, job task id and job id |
| 404 | Job not found | Error message indicating job not found |
This endpoint allows users to submit multiple planned tasks for a specific job. Planned tasks are pre-defined inputs that will be used when workers apply for the job.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| job_id | string | Yes | The ID of the job to submit planned tasks for | 60c72b2f9b1e8c001c8e4d8a |
| inputs | array | Yes | Array of input strings for planned tasks (usually JSON strings, minimum 1, maximum 10,000 characters per string) | ["{\"fname\":\"John\",\"lname\":\"Doe\",\"email\":\"john@example.com\"}", "{\"fname\":\"Jane\",\"lname\":\"Smith\",\"email\":\"jane@example.com\"}"] |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Planned tasks submitted successfully | {"success": true, "inserted_ids": [{"planned_task_id": "60c72b2f9b1e8c001c8e4d8a", "input": "{\"fname\":\"John\",\"email\":\"john@example.com\"}"}, ...]} |
| 400 | Bad request - Invalid input data, exceeds available positions, or validation errors | {"success": false, "error": "Invalid job id"} or {"success": false, "message": "No enough positions left. Received X tasks in excess."} |
| 404 | Job not found or user doesn't own the job | {"success": false, "error": "Job not found"} |
| 500 | Internal server error | {"success": false, "message": "Internal Server Error"} |
This endpoint allows employers to delete a job task. Accepts either a job_task_id or planned_task_id. Only tasks with certain statuses can be deleted to maintain data integrity (failed, declined). When deleting via a planned_task_id, the planned task is preserved (with job_task_id set to null) so it can be reused, while only the job task is deleted.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| task_id | string | Yes | The ID of the job task or planned task to delete. Accepts either a job_task_id or planned_task_id - if a planned_task_id is provided, it will be resolved to its associated job_task_id. When using a planned_task_id, the planned task is preserved (with job_task_id set to null) while the job task is deleted. | 60c72b2f9b1e8c001c8e4d8a |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Job task deleted successfully. If resolved from a planned_task_id, the planned task is preserved with job_task_id set to null. | {"success": true, "message": "Job task deleted successfully"} |
| 400 | Bad request - Invalid task ID, task cannot be deleted due to status restrictions, or planned task exists but has no associated job task | {"success": false, "error": "Invalid task id"} or {"success": false, "message": "Cannot delete job task with status 'confirmed'. Only tasks with status: failed, declined can be deleted."} or {"success": false, "error": "Planned task {id} exists but has no associated job task (job_task_id is null)"} |
| 403 | Forbidden - User doesn't have permission to delete this job task | {"success": false, "message": "You don't have permission to delete this job task"} |
| 404 | Job task not found, or task_id is neither a valid job task ID nor a planned task ID | {"success": false, "message": "Job task not found"} or {"success": false, "error": "task_id {id} is neither a valid job task ID nor a planned task ID"} |
| 500 | Internal server error | {"success": false, "message": "Internal Server Error"} |
This endpoint allows employers to re-initiate a single failed or declined task. This makes the planned task available again for workers to apply.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| task_id | string | Yes | The ID of the job task to re-initiate | 60c72b2f9b1e8c001c8e4d8a |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Task re-initiated successfully | {"success": true, "message": "Task successfully reinitiated"} |
| 400 | Bad request - Invalid task ID or task cannot be reinitiated due to status restrictions | {"success": false, "error": "Invalid task id"} or {"success": false, "message": "Cannot reinitiate task with status 'confirmed'. Only failed or declined tasks can be reinitiated."} |
| 403 | Forbidden - User doesn't have permission to reinitiate this task | {"success": false, "message": "You don't have permission to reinitiate this task"} |
| 404 | Job task not found or no planned task associated with this job task | {"success": false, "message": "Job task not found"} |
| 500 | Internal server error | {"success": false, "message": "Internal Server Error"} |
Handle payment operations including withdrawals.
Initiate a withdrawal to a wallet address.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| amount | number | Yes | Amount to withdraw | 10 |
| wallet_address | string | Yes | Wallet address to receive the withdrawal | 0x1234567890abcdef |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Withdrawal successful | {"msg": "withdraw done"} |
| 400 | Insufficient balance, below minimum payout, or invalid request | Error message with specific reason |
| 401 | Unauthorized or missing token | - |
| 500 | Server error | - |
Returns the list & details of recent withdrawals made by the user.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| page | integer | No | Page number for pagination (starts from 1) | 1 |
| limit | integer | No | Number of withdrawals to return per page | 10 |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Details of the withdrawals made by the user | - |
| 401 | Unauthorized or missing token | - |
| 404 | No transactions found | - |
| 500 | Server error | - |
{
"total_count": 3,
"transactions": [
{
"_id": "67d9f0b57131be1625d301c4",
"reference_id": "26795145",
"user_id": "676d3619e618d4ad99dae899",
"recipient_id": null,
"crypto_uuid": null,
"payment_type": "Withdrawal",
"payment_method": "cryptomus",
"payment_details": "",
"transaction_fee": "0",
"currency": "USD",
"amount": "-10",
"wallet_address": "2w",
"status": "paid",
"reason": null,
"created": "2025-03-18T22:16:21.895Z",
"updated": "2025-03-18T22:16:21.895Z",
"process_date": "2025-03-18T22:16:21.895Z",
"transaction_id": "67d9f0b57131be1625d301c4",
"transaction_proof": "2ca560b36dcdd7c8",
"__v": 0
}
],
"page": 1,
"balance": 3.54,
"total_withdraw": -30,
"total_deposit": 0
}User account management and balance information.
Returns the user's current balance, active balance and pending earnings.
| Status Code | Description | Response Body |
|---|---|---|
| 200 | User balance information retrieved successfully | - |
| 401 | Unauthorized or missing token | - |
| 500 | Server error | - |
{
"balance": 4.434,
"active_balance": 4.434,
"pending_earnings": 1.25
}Device management and information retrieval endpoints.
Retrieves a list of devices that are either owned by the user or rented with live payment type.
| Status Code | Description | Response Body |
|---|---|---|
| 200 | Successfully retrieved devices list | - |
| 401 | Unauthorized or missing token | - |
| 500 | Server error | - |
[
{
"remote_device_id": "device_123456",
"added": "2025-08-19T10:00:00Z",
"automations": [],
"brand": "Samsung",
"country": "US",
"isEmulator": false,
"model": "Galaxy S21",
"name": "Galaxy S21 Ultra",
"networkType": "wifi",
"numberOfCores": 8,
"online": true,
"processor": "Snapdragon 888",
"ramMb": 8192,
"sdkVersion": "31",
"version": "12"
}
]File upload and temporary file access endpoints.
Uploads a file to temporary storage. Files are automatically deleted after 15 minutes. Maximum file size is 50 MB. Use multipart/form-data with 'file' field name.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| file | file | Yes | File to upload (multipart/form-data) | Binary file data |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | File uploaded successfully | { "success": true, "message": "File uploaded successfully", "data": { "filename": "1234567890_example.pdf", "originalName": "example.pdf", "size": 1024000, "url": "https://api.example.com/temp/1234567890_example.pdf", "expiresAt": "2025-10-08T12:15:00.000Z" } } |
| 400 | No file uploaded | { "success": false, "message": "No file uploaded" } |
| 401 | Unauthorized or missing token | Authentication error message |
| 500 | Server error during upload | { "success": false, "message": "Error uploading file", "error": "Error details" } |
{
"success": true,
"message": "File uploaded successfully",
"data": {
"filename": "1234567890_example.pdf",
"originalName": "example.pdf",
"size": 1024000,
"url": "https://api.example.com/temp/1234567890_example.pdf",
"expiresAt": "2025-10-08T12:15:00.000Z"
}
}Retrieves a previously uploaded temporary file. Files expire after 15 minutes from upload time.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| filename | string | Yes | Filename returned from the upload endpoint (path parameter) | 1234567890_example.pdf |
| Status Code | Description | Response Body |
|---|---|---|
| 200 | File retrieved successfully | Binary file data |
| 400 | Filename is required | { "success": false, "message": "Filename is required" } |
| 404 | File not found or expired | { "success": false, "message": "File not found or expired" } |
| 401 | Unauthorized or missing token | Authentication error message |
| 500 | Server error during retrieval | { "success": false, "message": "Error retrieving file", "error": "Error details" } |