{
  "openapi": "3.1.0",
  "info": {
    "title": "The Cost of Work Index API",
    "version": "2026.3",
    "summary": "Per-unit cost of 13 recurring back-office tasks, done by a person versus by software, in three markets.",
    "description": "The Cost of Work Index is an open dataset: what one unit of a recurring back-office task costs when a person does it, and when software does it, in the United States, Greece and Ukraine.\n\nEvery figure carries its provenance. Hourly labour costs are official statistics with a named publisher and a resolvable URL; minutes-per-task figures are our own estimates and are labelled as such. Every response carries a `caveats` array stating the qualifications that apply — including that the hourly costs are not like-for-like across markets, and that for some tasks in some markets a person is cheaper than the software.\n\nNo authentication. CORS is open. All responses are static and served from a CDN.\n\nThe same data is available as an MCP server (`npx -y nika-cost-of-work-mcp`), as [JSON](https://hirenika.com/cost-of-work.json) and as [CSV](https://hirenika.com/cost-of-work.csv).",
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    },
    "contact": {
      "name": "Nika",
      "url": "https://hirenika.com/mcp"
    },
    "termsOfService": "https://hirenika.com/terms"
  },
  "servers": [
    {
      "url": "https://hirenika.com/api/v1",
      "description": "Production"
    }
  ],
  "externalDocs": {
    "description": "The Cost of Work Index",
    "url": "https://hirenika.com/cost-of-work"
  },
  "tags": [
    {
      "name": "index",
      "description": "The dataset"
    },
    {
      "name": "provenance",
      "description": "Where the numbers come from"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": [
          "index"
        ],
        "operationId": "getApiRoot",
        "summary": "API root — endpoints, markets and task ids",
        "responses": {
          "200": {
            "description": "The endpoint map, covered markets and available task ids.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/cost-of-work": {
      "get": {
        "tags": [
          "index"
        ],
        "operationId": "getIndex",
        "summary": "The whole Index, every market",
        "responses": {
          "200": {
            "description": "Every task with per-market figures, plus sources and caveats.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/cost-of-work/{market}": {
      "get": {
        "tags": [
          "index"
        ],
        "operationId": "getIndexByMarket",
        "summary": "The Index narrowed to one market",
        "parameters": [
          {
            "name": "market",
            "in": "path",
            "required": true,
            "description": "Market identifier. `uk` is Ukraine, not the United Kingdom — `ua` is the unambiguous alias. The United Kingdom is not covered.",
            "schema": {
              "type": "string",
              "enum": [
                "en",
                "us",
                "usa",
                "el",
                "gr",
                "uk",
                "ua"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Every task, with that market’s figures flattened onto each row.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "No such market or task.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "documentation": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "error",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{taskId}": {
      "get": {
        "tags": [
          "index"
        ],
        "operationId": "getTask",
        "summary": "One task across all markets",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "invoice-entry",
                "lead-callback",
                "appointment-rescue",
                "review-reply",
                "receivables-chase",
                "returns-case",
                "cod-confirmation",
                "customer-winback",
                "supplier-price-check",
                "quote-build",
                "shift-schedule",
                "candidate-screening",
                "service-followup"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The task, its method and unit, and its figures in every market.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "No such market or task.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "documentation": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "error",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/sources": {
      "get": {
        "tags": [
          "provenance"
        ],
        "operationId": "getSources",
        "summary": "The official statistics behind the human-cost figures",
        "responses": {
          "200": {
            "description": "Publisher, release title, URL, reference period and derivation for each source.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "x-markets": [
    {
      "id": "en",
      "country": "United States",
      "currency": "USD"
    },
    {
      "id": "el",
      "country": "Greece",
      "currency": "EUR"
    },
    {
      "id": "uk",
      "country": "Ukraine",
      "currency": "UAH"
    }
  ],
  "x-mcp-server": {
    "npm": "nika-cost-of-work-mcp",
    "command": "npx -y nika-cost-of-work-mcp"
  }
}