Microworker · Schema

Task

MarketplaceData EntryTestingSurveysSocial Media Engagement

Properties

Name Type Description
id integer
title string
instructions string
status string
moderation_status string
reward_minor integer
slots_total integer
slots_filled integer
slots_taken integer
budget_minor integer
fee_minor integer
escrow_minor integer
auto_approve_hours integernull
target_countries array
proofs array
media array
target_devices array
audience string
hiring boolean
project_id integernull
project_name stringnull
backup_hours integernull
open_to_all_at stringnull When a team-first task opens to everyone (set at funding).
max_per_country integernull At most this many workers from any one country; null = no limit.
target_profile object
x_check boolean Each worker's X work is checked automatically.
x_check_fee_minor integer What the X checks add to `fee_minor` for the task's places (0 without them).
x_check_price_micro integernull The X-check price per worker place in micro-dollars, frozen when the task was funded; null on a draft or without X checks.
created_at string
funded_at stringnull
expires_at stringnull
notes array Your notes to the people working on it that are still up, newest first.
pace object The brake set with POST /tasks/{id}/pace; null = as fast as workers come.
edited_at stringnull When its words were last changed while it was live (POST /tasks/{id}/edit); null when never.
reports array GET /tasks/{id}: what workers reported about it that is still open, newest first (at most 10) — the reason and their words (links, addresses and names taken out, at most 300 characters), never who sen
View JSON Schema on GitHub

JSON Schema

microworker-task-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/microworker/main/json-schema/microworker-task-schema.json",
  "title": "Task",
  "x-generated": "2026-10-22",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/microworker-v1-openapi.json#/components/schemas/Task",
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "id": {
      "type": "integer"
    },
    "title": {
      "type": "string"
    },
    "instructions": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "moderation_status": {
      "type": "string"
    },
    "reward_minor": {
      "type": "integer"
    },
    "slots_total": {
      "type": "integer"
    },
    "slots_filled": {
      "type": "integer"
    },
    "slots_taken": {
      "type": "integer"
    },
    "budget_minor": {
      "type": "integer"
    },
    "fee_minor": {
      "type": "integer"
    },
    "escrow_minor": {
      "type": "integer"
    },
    "auto_approve_hours": {
      "type": [
        "integer",
        "null"
      ]
    },
    "target_countries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "proofs": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ProofRequirement"
      }
    },
    "media": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Media"
      }
    },
    "target_devices": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "audience": {
      "type": "string",
      "enum": [
        "everyone",
        "my_workers",
        "project"
      ]
    },
    "hiring": {
      "type": "boolean"
    },
    "project_id": {
      "type": [
        "integer",
        "null"
      ]
    },
    "project_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "backup_hours": {
      "type": [
        "integer",
        "null"
      ]
    },
    "open_to_all_at": {
      "type": [
        "string",
        "null"
      ],
      "description": "When a team-first task opens to everyone (set at funding)."
    },
    "max_per_country": {
      "type": [
        "integer",
        "null"
      ],
      "description": "At most this many workers from any one country; null = no limit."
    },
    "target_profile": {
      "$ref": "#/$defs/TargetProfile"
    },
    "x_check": {
      "type": "boolean",
      "description": "Each worker's X work is checked automatically."
    },
    "x_check_fee_minor": {
      "type": "integer",
      "description": "What the X checks add to `fee_minor` for the task's places (0 without them)."
    },
    "x_check_price_micro": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The X-check price per worker place in micro-dollars, frozen when the task was funded; null on a draft or without X checks."
    },
    "created_at": {
      "type": "string"
    },
    "funded_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "notes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/TaskNote"
      },
      "description": "Your notes to the people working on it that are still up, newest first."
    },
    "pace": {
      "oneOf": [
        {
          "$ref": "#/$defs/TaskPace"
        },
        {
          "type": "null"
        }
      ],
      "description": "The brake set with POST /tasks/{id}/pace; null = as fast as workers come."
    },
    "edited_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When its words were last changed while it was live (POST /tasks/{id}/edit); null when never."
    },
    "reports": {
      "type": "array",
      "description": "GET /tasks/{id}: what workers reported about it that is still open, newest first (at most 10) — the reason and their words (links, addresses and names taken out, at most 300 characters), never who sent it.",
      "items": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "not_working",
              "scam_or_fraud",
              "pay_to_get_paid",
              "credential_or_account_sale",
              "illegal_or_harmful",
              "spam_or_fake_engagement",
              "other"
            ]
          },
          "details": {
            "type": [
              "string",
              "null"
            ]
          },
          "at": {
            "type": "string",
            "format": "date-time"
          }
        }
      }
    }
  },
  "$defs": {
    "Media": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "id": {
          "type": "integer"
        },
        "kind": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "step_index": {
          "type": [
            "integer",
            "null"
          ]
        }
      }
    },
    "ProofRequirement": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "must_show": {
          "type": "string",
          "maxLength": 100,
          "description": "Screenshot rows only: text the screenshot must show (a group or channel name, a username). We read each screenshot on our own server and hold a submission that does not show it."
        },
        "type": {
          "type": "string",
          "enum": [
            "screenshot",
            "text",
            "url",
            "file",
            "code"
          ],
          "description": "`code`: a completion code you show at the end of your own flow; a matching code pays on the spot. At most one per task."
        },
        "note": {
          "type": "string",
          "maxLength": 500,
          "description": "What the proof must show. Workers are judged against it."
        },
        "answer": {
          "type": "string",
          "maxLength": 200,
          "writeOnly": true,
          "description": "For `code` only: the code (5–64 letters or digits). Stored hashed and never returned; on an edit, omit it to keep the stored one."
        }
      }
    },
    "TargetProfile": {
      "type": [
        "object",
        "null"
      ],
      "description": "Who can do this (2026-10-07): only workers whose Skills & assets match see the task and can claim it (others get 403 `profile_not_matching`). Within a part ANY choice will do; every part given must be met. null or every part empty = anybody. Each part given raises the price guide ×1.2, at most ×2.",
      "properties": {
        "languages": {
          "type": "array",
          "maxItems": 5,
          "items": {
            "type": "object",
            "required": [
              "code"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "en",
                  "ar",
                  "arq",
                  "arz",
                  "ary",
                  "kab",
                  "tzm",
                  "fr",
                  "es",
                  "pt",
                  "de",
                  "it",
                  "nl",
                  "pl",
                  "ro",
                  "ru",
                  "uk",
                  "tr",
                  "fa",
                  "ps",
                  "ur",
                  "sd",
                  "pa",
                  "hi",
                  "bn",
                  "ne",
                  "si",
                  "ta",
                  "te",
                  "mr",
                  "gu",
                  "ml",
                  "kn",
                  "id",
                  "ms",
                  "fil",
                  "vi",
                  "th",
                  "my",
                  "zh",
                  "ja",
                  "ko",
                  "sw",
                  "ha",
                  "yo",
                  "ig",
                  "pcm",
                  "am",
                  "so",
                  "om",
                  "zu",
                  "xh",
                  "af",
                  "tw"
                ]
              },
              "min": {
                "type": "string",
                "enum": [
                  "basic",
                  "good",
                  "fluent",
                  "native"
                ],
                "default": "good",
                "description": "This level or better."
              }
            }
          }
        },
        "skills": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "video_editing",
              "graphic_design",
              "writing",
              "translation",
              "transcription",
              "voice",
              "photos",
              "data_entry",
              "research",
              "social_media",
              "app_testing",
              "ai_rating",
              "coding"
            ]
          }
        },
        "wants": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "games",
              "surveys",
              "social",
              "signups",
              "testing",
              "videos",
              "clipping",
              "ai_data",
              "writing",
              "research"
            ]
          },
          "description": "The kinds of work they asked for."
        },
        "game_platforms": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "android",
              "ios",
              "pc",
              "console"
            ]
          }
        },
        "apps": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "tiktok",
              "instagram",
              "youtube",
              "facebook",
              "x",
              "telegram",
              "whatsapp",
              "snapchat",
              "discord",
              "reddit",
              "linkedin",
              "pinterest",
              "threads",
              "twitch"
            ]
          }
        },
        "channel": {
          "type": [
            "object",
            "null"
          ],
          "description": "Runs a page or channel of at least `min_followers` (a band), on one of `platforms` (empty = any).",
          "properties": {
            "platforms": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "youtube",
                  "tiktok",
                  "instagram",
                  "facebook",
                  "x",
                  "telegram",
                  "twitch",
                  "snapchat",
                  "other"
                ]
              }
            },
            "min_followers": {
              "type": "string",
              "enum": [
                "under_1k",
                "1k_10k",
                "10k_100k",
                "100k_1m",
                "over_1m"
              ],
              "default": "under_1k"
            }
          }
        }
      }
    },
    "TaskNote": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "body": {
          "type": "string",
          "description": "As stored: e-mail addresses and phone numbers replaced by •••."
        },
        "created_at": {
          "type": "string",
          "format": "date-time"
        },
        "masked": {
          "type": "boolean",
          "description": "Contact details were hidden before it was stored."
        }
      }
    },
    "TaskPace": {
      "type": "object",
      "description": "Slow down: at most `limit` new workers per `window`. Every claim made inside the window counts, whatever became of it. While the window is full the task is off the board for anyone not already on it, and a worker who tries to start is refused with 409 `task_paced` and `opens_at`.",
      "properties": {
        "limit": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 1,
          "maximum": 1000,
          "description": "null = as fast as workers come."
        },
        "window": {
          "type": "string",
          "enum": [
            "hour",
            "day"
          ]
        },
        "used": {
          "type": "integer",
          "description": "Workers who started inside the current window."
        },
        "opens_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "While the window is full: when the next place opens. null otherwise."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/microworker-task"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.