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 |
JSON Schema
{
"$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.
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.