openapi: 3.0.3 info: title: Clickworker MP-API v2 (API Documentation) version: 2.0.42 description: "# Clickworker Marketplace API v2\n\nThis collection provides the complete Clickworker Marketplace API v2 reference.\ \ Use it to connect to clickworker's crowdsourced services and manage orders, submit tasks to the crowd, handle buyoff/review\ \ flows, manage clickworker teams, and monitor your account.\n\n## Authentication\n\nThe API endpoints use **HTTP Basic\ \ Auth** with your customer login (your customer email) and password (your customer password).\n\n## Environments\n\n\ We provide sandbox and production environments to facilitate development, testing and productive use of the clickworker\ \ Marketplace API. Each environment has an API endpoint through which your application communicates with the clickworker\ \ platform, as well as a web-portal for customers and a web-portal intended for clickworkers working on projects and completing\ \ tasks submitted via the API.\n\n#### Production Environment\n\nProduction environment uses the latest released version\ \ of the Marketplace API and is operating on production level data. It fully interacts with external systems, like email\ \ servers or partner gateways.\n\n#### Sandbox Environment\n\nThe sandbox environment is intended for development purposes\ \ and integration testing. It uses the latest released version of the Marketplace API, and operates on dedicated test\ \ data. This environment has limited interaction with external systems, like email servers or partner gateways. You may\ \ use this environment to test your integration. Note, that no clickworkers are active on the sandbox environment. In\ \ order to test your integration, you can act as a clickworker using the Clickworker Workplace by either registering there\ \ as a clickworker account or contacting our marketplace support to create accounts for you.\n\n| Environment | API Endpoint\ \ | Customer Portal | Clickworker Workplace |\n| --- | --- | --- | --- |\n| **Sandbox** | `https://api-sandbox.clickworker.com`\ \ | `https://sandbox-clickworkermanagement.clickworker.com` | `https://sandbox-core5.clickworker.com` |\n| **Production**\ \ | `https://api-production.clickworker.com` | `https://marketplace.clickworker.com` | `https://workplace.clickworker.com`\ \ |\n\nIn order to access the Clickworker Workplace (Sandbox), contact our customer support at [helpdesk@clickworker.com](https://mailto:helpdesk@clickworker.com)\n\ \n\n## Common Query Parameters\n\n| Param | Description |\n| --- | --- |\n| `_page_size` | Results per page (default 50,\ \ max 50) |\n| `_page_number` | Page number (1-based) |\n| `_suppress_http_status=1` | If set, always return HTTP 200;\ \ check `request_status` in the response body for the real status |\n| `_method` | Override HTTP method (`PUT` or `DELETE`)\ \ when using POST |\n\n## Request Headers\n\nFor requests sent to the API, ensure that the following HTTP headers are\ \ set correctly:\n\n- Content-Type = application/json\n \n- Accept = application/json\n \n\n## Response Format\n\ \nAll responses include a `request_status` object with `status_code`, `valid`, `messages`, and pagination info (`total_count`,\ \ `page_size`, `page_num`).\n\n## Getting Support\n\nIf you have questions about our products or need assistance during\ \ integration, please contact our Self Service / Marketplace Support team at [https://www.clickworker.com/contact-for-customers/](https://www.clickworker.com/contact-for-customers/)." contact: name: Clickworker Marketplace Support url: https://www.clickworker.com/contact-for-customers/ email: helpdesk@clickworker.com license: name: Proprietary url: https://www.clickworker.com/terms/ servers: - url: https://api-sandbox.clickworker.com description: Sandbox Environment - url: https://api-production.clickworker.com description: Production Environment security: - basicAuth: [] tags: - name: Getting Started description: |- Verify your connection to the Clickworker MP-API and explore your account details. Start with the **Echo** endpoints to confirm connectivity, then check your **Customer Balance**. - name: Products description: "Each service available through the Marketplace API is backed by a defined production workflow, including built-in\ \ quality assurance mechanisms, pricing structures, and configurable options tailored to your use case.\n\nWe currently\ \ offer the following core products:\n\n- **Survey** – Invite a targeted group of clickworkers to participate in your\ \ survey and collect high-quality primary data at scale.\n \n- **Sentiment** – Leverage crowd-based majority voting\ \ to evaluate opinions, classifications, or subjective judgments on your content.\n \n- **iFrame** – Enable clickworkers\ \ to operate directly within your own system or interface via embedded workflows.\n \n\nIn addition to these standard\ \ offerings, our Operations team can configure custom products designed to meet specific client requirements, workflows,\ \ or quality criteria." - name: Task Templates description: "# Task Templates\n\nTask Templates define the **blueprint** for the work to be delivered - the tasks. They\ \ specify:\n\n- Which **product** (task type) to use\n \n- The **form** workers will fill out\n \n- Targeting attributes\ \ (country, language, age range, gender, etc.)\n \n- Titles and descriptions shown to clickworkers\n \n\nA template\ \ must be created before tasks can be submitted. The `code` field is your unique identifier for the template — choose\ \ something meaningful like `image_classification_v1`.\n\n> **Important:** Once a template is created, its `product` and\ \ `form` cannot be modified. Create a new template if you need to change the task structure." - name: Tasks description: "# Tasks\n\nTasks are individual work items submitted to the crowd. Each task is based on a **task template**\ \ and carries the input data for one specific unit of work.\n\n## Task lifecycle\n\nA **Task** represents the full unit\ \ of work you submit to the platform (e.g., creating an article based on a briefing). Each Task is automatically broken\ \ down into one or more **Jobs**, where each Job corresponds to a specific step in the workflow.\n\nThe sequence and number\ \ of Jobs depend on the selected product and the configured quality assurance (QA) level. For example, a Task may include\ \ separate Jobs for content creation, review, and final approval.\n\n### How it works\n\nOnce a Task is submitted, it\ \ progresses through the following lifecycle:\n\n- The Task is distributed to the crowd, and clickworkers begin working\ \ on the first Job (e.g., content creation).\n \n- Depending on your QA configuration, additional Jobs may follow,\ \ such as peer review or expert review (e.g., via a lecturer service).\n \n- After all preceding Jobs are completed,\ \ the Task reaches the final step: the **buyoff Job**, where the result is sent to you for approval or rejection.\n \ \ \n\n```\ncreated → queued → running → finished\n ↘ timedout\n ↘ cancelled\n\ \ ↘ feedback (buyoff)\n\n ```\n\n#### **Task States:**\n\n- **created** – Task is created and\ \ automatically confirmed via the API\n \n- **queued** – Task is waiting to be picked up by the crowd\n \n- **running**\ \ – At least one Job is actively being worked on\n \n- **finished** – All Jobs are completed successfully\n \n-\ \ **timedout** – A Job was not completed within the allowed time\n \n- **cancelled** – Task was stopped before completion\n\ \ \n- **feedback (buyoff)** – Task is awaiting your final approval decision\n \n\nUse the `state` filter in the\ \ index to monitor progress: `running`, `finished`, `timedout`, `cancelled`, `feedback`.\n\n### Quality Assurance / BuyOff\n\ \nDepending on the product, results are reviewed by trusted validators. In addition, you have the option to perform a\ \ final review and explicitly accept or reject a result via the API.\n\nThe final approval step—referred to as the “buyoff\ \ job”—is part of a multi-stage workflow. Each task is divided into several jobs, with each job representing a specific\ \ step in the overall process. For example, if quality assurance is enabled, at least three jobs are involved:\n\n1. **Content\ \ creation** – generating the initial result\n \n2. **Content review** – validating the generated result\n \n3.\ \ **Buyoff job** – making the final approval or rejection decision\n \n\nIn the testing environment (“sandbox”), the\ \ customer must complete the first two jobs through the clickworker workplace before the task reaches the buyoff stage.\ \ The buyoff job then presents the final results and requests your approval decision.\n\nTo approve or reject a result,\ \ you must submit the corresponding decision via the API. This approval data is essential, as it directly impacts clickworker\ \ ratings and plays a crucial role in maintaining high-quality outcomes across your projects.\n\n- For buyoff flows, tasks\ \ emit a `CUSTOMER_INPUT_REQUIRED` notification and wait for your `accept` or `reject` call.\n \n- Use `payload=extended`\ \ on the index to retrieve full results inline without individual show calls.\n \n\n### Results\n\nCompleting your\ \ tasks by the crowd will take some time, depending on the complextity of the work and availability of workers taking\ \ on your task. At any time you may have multiple tasks submitted and ongoing. The order of completion may be different\ \ than the order of submitting tasks.\n\nThere are two options to get an overview of your active and completed tasks:\n\ \n- **Option 1 - Polling / Pull approach**: You may check regularly which of your tasks have been completed\n \n- **Option\ \ 2 - Push notification / Notification approach:** When submitting a new task, you may add a Notification URL which will\ \ be called when the task has been completed or needs your feedback, in case BuyOff has been enabled. Push notifications\ \ are highly recommended as it is superior in terms of performance and load on your client system.\n \n\n## Notifications\n\ \nSet `notifications` on task creation to receive webhook callbacks on events like\n\n- `TASK_COMPLETED - when results\ \ are final`\n \n- `TASK_TIMEDOUT - when the task could not be completed in time`\n \n- `CUSTOMER_INPUT_REQUIRED\ \ - if your approval/rejection of results is required`\n \n\nAdd `\"payload\": \"extended\"` to include full task data\ \ in the callback." - name: Teams description: |- # Teams Teams allow you to group specific clickworkers and target tasks exclusively to that group. This is useful for: - Building a **trusted panel** of pre-vetted workers - Running **internal quality assurance** workflows - Targeting tasks to workers with specific qualifications Workers are referenced by their numeric `user_id`. Use `Teams.update` to add or remove members. - name: Jobs description: |- # Jobs Jobs represent the **unit of work assigned to an individual clickworker** within a task. A single task may spawn multiple jobs (e.g. when multiple participants are required, or when a job is rejected and reassigned). In **buyoff flows**, jobs enter a customer-review state where you can inspect the worker's input and submit your approval decision via `Job.update`. Use `Jobs.index` to monitor pending review jobs across all tasks, or `Jobs.index (by task)` to scope to a specific task. - name: Notifications description: |- # Notifications Notifications let you register **webhook callbacks** that the API will call when specific task events occur. This eliminates the need to poll for task status changes. ## Supported events | Event | Triggered when | |---|---| | `TASK_COMPLETED` | All workers have submitted results | | `TASK_TIMEDOUT` | Task expired before completion | | `CUSTOMER_INPUT_REQUIRED` | Buyoff task awaiting your review | ## Callback payload The API will `POST` to your `callback_url` with a JSON body containing the event type and task details. Respond with HTTP 200 to acknowledge receipt. Use `NotificationListener.log` as a test endpoint to see what payloads look like. - name: Clickworkers description: |- # Clickworkers Query information about the clickworker population — useful for estimating task availability and understanding the demographic composition of your target group before submitting tasks. ## Geographic queries Use the `count_in_range` and `count_in_bounding_box` methods to see how many workers are active in a given area. This helps validate geographic targeting before launching location-based tasks. ## Demographics Query demographic data (gender, age, location) for specific clickworkers. Useful for reporting and quality analysis. - name: Orders description: |- # Orders Orders group related tasks together for billing and reporting. Tasks submitted together are typically part of the same order. - name: Allow/Block List Copy description: Allow and Block Lists permit you to exclude or unconditionally allow clickworkers from your order. - name: Customer Account Management description: |- # Customer Account Management Endpoints for managing customer accounts — registration, authentication, password management, and utility lookups. Most endpoints in this folder use **no authentication** as they are part of the account creation and recovery flow. Exceptions are noted per request. - name: Product Survey description: Use the Survey tool for polls and surveys targeted to a group of clickworkers matching a profile. Clickworker results are not quality assured, to provide you the unfiltered feedback. - name: Product Sentiment description: Invite a targeted group of clickworkers to participate in your survey and collect high-quality primary data at scale. - name: Product iFrame description: Step-by-step example workflow for the ExternalForm (iFrame) product — from template creation through task submission, external postback, buyoff review, and task monitoring. x-tagGroups: - name: API Reference tags: - Getting Started - Products - Task Templates - Tasks - Teams - Jobs - Notifications - Clickworkers - Orders - Allow/Block List Copy - Customer Account Management - name: Examples tags: - Product Survey - Product Sentiment - Product iFrame paths: /api/marketplace/v2/echo/simple_echo: post: tags: - Getting Started - Product Survey - Product Sentiment - Product iFrame summary: Echo (no auth) description: |- ## Echo (no auth) A simple connectivity test that requires **no authentication**. The API will echo back the message you send. Use this to verify: - The API base URL (`{{baseUrlEndpoint}}`) is correct - Your network can reach the API - The API is responding **No credentials required.** operationId: echoNoAuth requestBody: required: true content: application/json: schema: type: object examples: Echo__no_auth: summary: Echo (no auth) value: echo: message: Hello World 01___Echo__wo_auth: summary: 01 - Echo (wo auth) value: echo: message: Hello world now 01___Echo__wo_auth_2: summary: 01 - Echo (wo auth) value: echo: message: Hello world now security: [] x-codeSamples: - lang: curl label: cURL source: |- curl -X POST \ 'https://api-sandbox.clickworker.com/api/marketplace/v2/echo/simple_echo' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"echo": {"message": "Hello World"}}' - lang: Python source: |- import requests url = "https://api-sandbox.clickworker.com/api/marketplace/v2/echo/simple_echo" headers = { "Content-Type": "application/json", "Accept": "application/json", } payload = { "echo": { "message": "Hello World" } } response = requests.post( url, headers=headers, json=payload ) print(response.status_code) print(response.json()) - lang: JavaScript source: |- const response = await fetch("https://api-sandbox.clickworker.com/api/marketplace/v2/echo/simple_echo", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json", }, body: JSON.stringify({ "echo": { "message": "Hello World" } }), }); const data = await response.json(); console.log(data); - lang: PHP source: |- Visit the website and search for the keyword:

en:

Visit the website and search for the keyword:

form: elements: - is_output: false is_mandatory: true titles: en: Website URL de: Website Adresse type: hidden item_code: iframe_url sort_order: 10 05_TaskTemplate_Create__iFrame_withBuyoff: summary: 05 TaskTemplate Create (iFrame withBuyoff) value: task_template: code: api_iframe_test_25_09_with_review titles: de: External Form Test api_iframe_test_25_09_with_review en: External Form Test api_iframe_test_25_09_with_review is_draft: false name: External Form Test product: attributes: - value: DE code: external_form_country - value: 10 code: external_form_payment - value: '18' code: external_form_age_from - value: '99' code: external_form_age_to - value: f code: external_form_gender - value: 'yes' code: external_form_with_buyoff - value: 3600 code: external_form_timeout - value: 2 code: external_form_max_jobs - value: 'no' code: external_form_multiple_jobs link: - href: '{{baseUrlEndpoint}}/api/marketplace/v2/products/ExternalForm' type: application/json rel: product descriptions: de:

Visit the website and search for the keyword:

en:

Visit the website and search for the keyword:

form: elements: - is_output: false is_mandatory: true titles: en: Website URL de: Website Adresse type: hidden item_code: iframe_url sort_order: 10 x-codeSamples: - lang: curl label: cURL source: |- curl -X POST \ 'https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates' \ -u 'YOUR_EMAIL:YOUR_PASSWORD' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d ' { "task_template": { "code": "survey_template_002", "name": "My Survey Template", "titles": { "en": "Survey Title", "de": "Umfrage Titel" }, "descriptions": { "en": "Survey description", "de": "Beschreibung" }, "is_draft": false, "product": { "link": { "href": "{{baseUrlEndpoint}}/api/marketplace/v2/products/Survey", "rel": "product", "type": "application/json" }, "attributes": [ { "code": "mp_df_survey_country", "value": [ "US", "DE" ] }, { "code": "mp_df_survey_payment", "value": 40 }, { "code": "mp_df_survey_participants", "value": 3 }, { "code": "mp_df_survey_age_from", "value": "18" }, { "code": "mp_df_survey_age_to", "value": "99" }, { "code": "mp_df_survey_gender", "value": "m" }, { "code": "mp_df_survey_expiration", "value": "2026-12-31" }, { "code": "mp_df_survey_language", "value": [ "en", "de" ] } ] }, "form": { "elements": [ { "type": "text_field", "item_code": "image_url", "titles": { "en": "Image URL", "de": "Bild URL" }, "is_output": false, "is_mandatory": false }, { "type": "check_box", "item_code": "rating", "titles": { "en": "How would you rate this?", "de": "Wie w\u00fcrden Sie das bewerten?" }, "is_output": true, "is_mandatory": true, "options": [ { "code": "alternatives", "value": [ { "value": "good", "titles": { "en": "Good", "de": "Gut" } }, { "value": "bad", "titles": { "en": "Bad", "de": "Schlecht" } } ] } ] } ] } } } ' - lang: Python source: |- import requests url = "https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates" headers = { "Content-Type": "application/json", "Accept": "application/json", } auth = ("YOUR_EMAIL", "YOUR_PASSWORD") payload = { "task_template": { "code": "survey_template_002", "name": "My Survey Template", "titles": { "en": "Survey Title", "de": "Umfrage Titel" }, "descriptions": { "en": "Survey description", "de": "Beschreibung" }, "is_draft": false, "product": { "link": { "href": "{{baseUrlEndpoint}}/api/marketplace/v2/products/Survey", "rel": "product", "type": "application/json" }, "attributes": [ { "code": "mp_df_survey_country", "value": [ "US", "DE" ] }, { "code": "mp_df_survey_payment", "value": 40 }, { "code": "mp_df_survey_participants", "value": 3 }, { "code": "mp_df_survey_age_from", "value": "18" }, { "code": "mp_df_survey_age_to", "value": "99" }, { "code": "mp_df_survey_gender", "value": "m" }, { "code": "mp_df_survey_expiration", "value": "2026-12-31" }, { "code": "mp_df_survey_language", "value": [ "en", "de" ] } ] }, "form": { "elements": [ { "type": "text_field", "item_code": "image_url", "titles": { "en": "Image URL", "de": "Bild URL" }, "is_output": false, "is_mandatory": false }, { "type": "check_box", "item_code": "rating", "titles": { "en": "How would you rate this?", "de": "Wie w\u00fcrden Sie das bewerten?" }, "is_output": true, "is_mandatory": true, "options": [ { "code": "alternatives", "value": [ { "value": "good", "titles": { "en": "Good", "de": "Gut" } }, { "value": "bad", "titles": { "en": "Bad", "de": "Schlecht" } } ] } ] } ] } } } response = requests.post( url, headers=headers, auth=auth, json=payload ) print(response.status_code) print(response.json()) - lang: JavaScript source: |- const credentials = btoa('YOUR_EMAIL:YOUR_PASSWORD'); const response = await fetch("https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": `Basic ${credentials}`, }, body: JSON.stringify({ "task_template": { "code": "survey_template_002", "name": "My Survey Template", "titles": { "en": "Survey Title", "de": "Umfrage Titel" }, "descriptions": { "en": "Survey description", "de": "Beschreibung" }, "is_draft": false, "product": { "link": { "href": "{{baseUrlEndpoint}}/api/marketplace/v2/products/Survey", "rel": "product", "type": "application/json" }, "attributes": [ { "code": "mp_df_survey_country", "value": [ "US", "DE" ] }, { "code": "mp_df_survey_payment", "value": 40 }, { "code": "mp_df_survey_participants", "value": 3 }, { "code": "mp_df_survey_age_from", "value": "18" }, { "code": "mp_df_survey_age_to", "value": "99" }, { "code": "mp_df_survey_gender", "value": "m" }, { "code": "mp_df_survey_expiration", "value": "2026-12-31" }, { "code": "mp_df_survey_language", "value": [ "en", "de" ] } ] }, "form": { "elements": [ { "type": "text_field", "item_code": "image_url", "titles": { "en": "Image URL", "de": "Bild URL" }, "is_output": false, "is_mandatory": false }, { "type": "check_box", "item_code": "rating", "titles": { "en": "How would you rate this?", "de": "Wie w\u00fcrden Sie das bewerten?" }, "is_output": true, "is_mandatory": true, "options": [ { "code": "alternatives", "value": [ { "value": "good", "titles": { "en": "Good", "de": "Gut" } }, { "value": "bad", "titles": { "en": "Bad", "de": "Schlecht" } } ] } ] } ] } } }), }); const data = await response.json(); console.log(data); - lang: PHP source: |- **Note:** The `product` configuration and `form` structure **cannot be changed** after a template is created. If you need to alter the task structure, create a new template with a different code. operationId: tasktemplateupdate parameters: - name: templateCode in: path required: true description: Your template code string schema: type: string requestBody: required: true content: application/json: schema: type: object properties: task_template: type: object properties: name: type: string titles: type: object properties: en: type: string de: type: string descriptions: type: object properties: en: type: string example: task_template: name: Updated Name titles: en: Updated Title de: Aktualisierter Titel descriptions: en: Updated description x-codeSamples: - lang: curl label: cURL source: |- curl -X PUT \ 'https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates/{templateCode}' \ -u 'YOUR_EMAIL:YOUR_PASSWORD' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d ' { "task_template": { "name": "Updated Name", "titles": { "en": "Updated Title", "de": "Aktualisierter Titel" }, "descriptions": { "en": "Updated description" } } } ' - lang: Python source: |- import requests url = "https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates/{templateCode}" headers = { "Content-Type": "application/json", "Accept": "application/json", } auth = ("YOUR_EMAIL", "YOUR_PASSWORD") payload = { "task_template": { "name": "Updated Name", "titles": { "en": "Updated Title", "de": "Aktualisierter Titel" }, "descriptions": { "en": "Updated description" } } } response = requests.put( url, headers=headers, auth=auth, json=payload ) print(response.status_code) print(response.json()) - lang: JavaScript source: |- const credentials = btoa('YOUR_EMAIL:YOUR_PASSWORD'); const response = await fetch("https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates/{templateCode}", { method: "PUT", headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": `Basic ${credentials}`, }, body: JSON.stringify({ "task_template": { "name": "Updated Name", "titles": { "en": "Updated Title", "de": "Aktualisierter Titel" }, "descriptions": { "en": "Updated description" } } }), }); const data = await response.json(); console.log(data); - lang: PHP source: |- **Important:** Deletion is only possible if **no tasks are currently using this template**. Archive or complete all associated tasks first. operationId: tasktemplatedestroy parameters: - name: templateCode in: path required: true description: Your template code string schema: type: string x-codeSamples: - lang: curl label: cURL source: |- curl -X DELETE \ 'https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates/{templateCode}' \ -u 'YOUR_EMAIL:YOUR_PASSWORD' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' - lang: Python source: |- import requests url = "https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates/{templateCode}" headers = { "Content-Type": "application/json", "Accept": "application/json", } auth = ("YOUR_EMAIL", "YOUR_PASSWORD") response = requests.delete( url, headers=headers, auth=auth ) print(response.status_code) print(response.json()) - lang: JavaScript source: |- const credentials = btoa('YOUR_EMAIL:YOUR_PASSWORD'); const response = await fetch("https://api-sandbox.clickworker.com/api/marketplace/v2/customer/task_templates/{templateCode}", { method: "DELETE", headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": `Basic ${credentials}`, }, }); const data = await response.json(); console.log(data); - lang: PHP source: |- **Tip:** Add `_suppress_http_status=1` as a query param to always receive HTTP 200, and check the `request_status` field in the response body to determine success or failure. --- ### Task.expire ## Task.expire Force-expires a task, setting it to a timed-out state. Use this to cancel active tasks that are no longer needed. operationId: taskupdateConfirm parameters: - name: taskId in: path required: true description: Numeric task ID schema: type: string - name: _suppress_http_status in: query required: false description: 'Optional: always return HTTP 200; check request_status in body instead' schema: type: string example: '1' - name: state in: query required: false schema: type: string example: expired requestBody: required: true content: application/json: schema: type: object examples: Task_update__confirm: summary: Task.update (confirm) value: task: state: confirmed Task_expire: summary: Task.expire value: task: state: expired 12_Tasks_Expire: summary: 12 Tasks Expire value: task: state: expired 12_Tasks_Expire_2: summary: 12 Tasks Expire value: task: state: expired x-codeSamples: - lang: curl label: cURL source: |- curl -X PUT \ 'https://api-sandbox.clickworker.com/api/marketplace/v2/customer/tasks/{taskId}?_suppress_http_status=1&state=expired' \ -u 'YOUR_EMAIL:YOUR_PASSWORD' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"task": {"state": "confirmed"}}' - lang: Python source: |- import requests url = "https://api-sandbox.clickworker.com/api/marketplace/v2/customer/tasks/{taskId}" params = { "_suppress_http_status": "1", "state": "expired", } headers = { "Content-Type": "application/json", "Accept": "application/json", } auth = ("YOUR_EMAIL", "YOUR_PASSWORD") payload = { "task": { "state": "confirmed" } } response = requests.put( url, params=params, headers=headers, auth=auth, json=payload ) print(response.status_code) print(response.json()) - lang: JavaScript source: |- const credentials = btoa('YOUR_EMAIL:YOUR_PASSWORD'); const response = await fetch("https://api-sandbox.clickworker.com/api/marketplace/v2/customer/tasks/{taskId}?_suppress_http_status=1&state=expired", { method: "PUT", headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": `Basic ${credentials}`, }, body: JSON.stringify({ "task": { "state": "confirmed" } }), }); const data = await response.json(); console.log(data); - lang: PHP source: |- **Note:** Typically, a **40% surcharge** is added to the bonus amount on top of the basic payment surcharge. operationId: taskgrant_bonus parameters: - name: taskId in: path required: true description: Numeric task ID schema: type: string - name: state in: query required: false schema: type: string example: expired requestBody: required: true content: application/json: schema: type: object examples: Task_grant_bonus: summary: Task.grant_bonus value: bonus: amount: 0.5 clickworker_id: 12345 comment: Great work! 13_Task_Grant_Bonus: summary: 13 Task Grant Bonus value: bonus: amount: 0.1 clickworker_id: 14381263 comment: Good job! 13_Tasks_Grant_Bonus: summary: 13 Tasks Grant Bonus value: bonus: amount: 0.1 clickworker_id: 14381263 comment: Good job! x-codeSamples: - lang: curl label: cURL source: |- curl -X POST \ 'https://api-sandbox.clickworker.com/api/marketplace/v2/customer/tasks/{taskId}/grant_bonus?state=expired' \ -u 'YOUR_EMAIL:YOUR_PASSWORD' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{"bonus": {"amount": 0.5, "clickworker_id": 12345, "comment": "Great work!"}}' - lang: Python source: |- import requests url = "https://api-sandbox.clickworker.com/api/marketplace/v2/customer/tasks/{taskId}/grant_bonus" params = { "state": "expired", } headers = { "Content-Type": "application/json", "Accept": "application/json", } auth = ("YOUR_EMAIL", "YOUR_PASSWORD") payload = { "bonus": { "amount": 0.5, "clickworker_id": 12345, "comment": "Great work!" } } response = requests.post( url, params=params, headers=headers, auth=auth, json=payload ) print(response.status_code) print(response.json()) - lang: JavaScript source: |- const credentials = btoa('YOUR_EMAIL:YOUR_PASSWORD'); const response = await fetch("https://api-sandbox.clickworker.com/api/marketplace/v2/customer/tasks/{taskId}/grant_bonus?state=expired", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": `Basic ${credentials}`, }, body: JSON.stringify({ "bonus": { "amount": 0.5, "clickworker_id": 12345, "comment": "Great work!" } }), }); const data = await response.json(); console.log(data); - lang: PHP source: |- **Warning:** This action cannot be undone. Ensure no active task templates are targeting this team before deleting. operationId: teamsdestroy parameters: - name: teamId in: path required: true description: Numeric team ID schema: type: string x-codeSamples: - lang: curl label: cURL source: |- curl -X DELETE \ 'https://api-sandbox.clickworker.com/api/marketplace/v2/customer/teams/{teamId}' \ -u 'YOUR_EMAIL:YOUR_PASSWORD' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' - lang: Python source: |- import requests url = "https://api-sandbox.clickworker.com/api/marketplace/v2/customer/teams/{teamId}" headers = { "Content-Type": "application/json", "Accept": "application/json", } auth = ("YOUR_EMAIL", "YOUR_PASSWORD") response = requests.delete( url, headers=headers, auth=auth ) print(response.status_code) print(response.json()) - lang: JavaScript source: |- const credentials = btoa('YOUR_EMAIL:YOUR_PASSWORD'); const response = await fetch("https://api-sandbox.clickworker.com/api/marketplace/v2/customer/teams/{teamId}", { method: "DELETE", headers: { "Content-Type": "application/json", "Accept": "application/json", "Authorization": `Basic ${credentials}`, }, }); const data = await response.json(); console.log(data); - lang: PHP source: |-