Errand API

Errand API as documented publicly: 9 operations. Contract generated from the documentation by API Evangelist (2026-11-07); not the provider's own document.

GitHub OpenAPI

Operations 9

POST /api/mcp For AI Agents MCP 또는 REST로 사람을 호출하세요. #
GET /api/public/coverage GET /api/public/coverage #
GET /api/v1/capabilities errand_list_capabilities GET /api/v1/capabilities #
GET /api/v1/coverage errand_check_coverage GET /api/v1/coverage #
POST /api/v1/dispatches errand_dispatch POST /api/v1/dispatches #
GET /api/v1/dispatches/{id} errand_get_status GET /api/v1/dispatches/{id} #
POST /api/v1/dispatches/{id}/cancel errand_cancel POST /api/v1/dispatches/{id}/cancel #
GET /api/v1/dispatches/{id}/result errand_get_result GET /api/v1/dispatches/{id}/result #
POST /api/v1/quote POST /api/v1/quote #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/errand-be:errand-be-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.

OpenAPI Specification

errand-be-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Errand API
  version: '2026-11-07'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-07: 9 operation(s) read from 2 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; Errand has published no machine-readable contract that the pipeline
    could find. Engine: local.'
  x-evidence-tiers:
    code-example: 2
    documentation: 7
    pages-with-code: 1
    pages-read: 2
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-07'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://errand.be/docs
  - https://errand.be/clawhub
paths:
  /api/mcp:
    post:
      operationId: post_api_mcp
      tags:
      - Api
      summary: For AI Agents MCP 또는 REST로 사람을 호출하세요.
      x-source: https://errand.be/clawhub
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/public/coverage:
    get:
      operationId: get_api_public_coverage
      tags:
      - Api
      summary: GET /api/public/coverage
      x-source: https://errand.be/docs
      parameters:
      - name: lat
        in: query
        required: false
        schema:
          type: string
      - name: lng
        in: query
        required: false
        schema:
          type: string
      - name: radius_m
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -s "https://errand.be/api/public/coverage?lat=37.4979&lng=127.0276&radius_m=3000"

          {"online_workers":0,"reachable_workers":3,"dispatchable":true,"radius_m":3000} //AUTHENTICATION REST와 개발자용 MCP 연결은 errand.be에서 이메일 인증
          후 발급한 er_live_ API 키를 Authorization 헤더로 보냅니다. OAuth를 지원하는 MCP 클라이언트는 정적 키 없이 https://errand.be/api/mcp에 연결할 수 있고, 서버가 OAuth 2.1 인가 서버를
          자동으로 알려줍니다. 어떤 방식이든 계정의 건당 보상, 일일 예산, 허용 작업 '
  /api/v1/capabilities:
    get:
      operationId: get_api_v1_capabilities
      tags:
      - Api
      summary: errand_list_capabilities GET /api/v1/capabilities
      x-source: https://errand.be/docs
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1CapabilitiesResponse'
      x-evidence:
        kind: documentation
  /api/v1/coverage:
    get:
      operationId: get_api_v1_coverage
      tags:
      - Api
      summary: errand_check_coverage GET /api/v1/coverage
      x-source: https://errand.be/docs
      parameters:
      - name: lat
        in: query
        required: true
        schema:
          type: number
        description: latitude of the point to check
      - name: lng
        in: query
        required: true
        schema:
          type: number
        description: longitude of the point to check
      - name: radius_m
        in: query
        required: true
        schema:
          type: integer
        description: radius in meters
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1CoverageResponse'
      x-evidence:
        kind: documentation
  /api/v1/dispatches:
    post:
      operationId: post_api_v1_dispatches
      tags:
      - Api
      summary: errand_dispatch POST /api/v1/dispatches
      x-source: https://errand.be/docs
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: Content-Type
        in: header
        required: true
        schema:
          type: string
        description: application/json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1DispatchesRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1DispatchesResponse'
      x-evidence:
        kind: documentation
  /api/v1/dispatches/{id}:
    get:
      operationId: get_api_v1_dispatches_id
      tags:
      - Api
      summary: errand_get_status GET /api/v1/dispatches/{id}
      x-source: https://errand.be/docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1DispatchesIdResponse'
      x-evidence:
        kind: documentation
  /api/v1/dispatches/{id}/cancel:
    post:
      operationId: post_api_v1_dispatches_id_cancel
      tags:
      - Api
      summary: errand_cancel POST /api/v1/dispatches/{id}/cancel
      x-source: https://errand.be/docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1DispatchesIdCancelResponse'
      x-evidence:
        kind: documentation
  /api/v1/dispatches/{id}/result:
    get:
      operationId: get_api_v1_dispatches_id_result
      tags:
      - Api
      summary: errand_get_result GET /api/v1/dispatches/{id}/result
      x-source: https://errand.be/docs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1DispatchesIdResultResponse'
      x-evidence:
        kind: documentation
  /api/v1/quote:
    post:
      operationId: post_api_v1_quote
      tags:
      - Api
      summary: POST /api/v1/quote
      x-source: https://errand.be/docs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1QuoteRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1QuoteResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s -X POST https://errand.be/api/v1/quote  -H \"Authorization: Bearer $ERRAND_API_KEY\"  -H \"Content-Type: application/json\"\
          \  -d '{\"task_type\":\"check\",\"lat\":37.4979,\"lng\":127.0276,\"reward_krw\":5000}'\n{\"task_type\":\"check\",\"reward_krw\":5000,\"\
          platform_fee_krw\":1000,\n \"total_charge_krw\":6000,\"balance_krw\":75900,\"balance_sufficient\":true,\n \"coverage\":{\"online_workers\"\
          :0,\"reachable_workers\":1,\"dispat"
components:
  schemas:
    GetApiV1CapabilitiesResponse:
      type: object
      properties:
        balance_krw:
          type: integer
        balance_sufficient:
          type: boolean
        cap_max_reward:
          type: integer
        cap_daily_budget:
          type: integer
        allowed_task_types:
          type: array
        fee_rate:
          type: number
    GetApiV1CoverageResponse:
      type: object
      properties:
        online_workers:
          type: integer
        reachable_workers:
          type: integer
        dispatchable:
          type: boolean
        radius_m:
          type: integer
    PostApiV1DispatchesRequest:
      type: object
      properties:
        task_type:
          type: string
        title:
          type: string
        instructions:
          type: string
        validation_criteria:
          type: string
        lat:
          type: number
        lng:
          type: number
        address_hint:
          type: string
        radius_m:
          type: integer
        reward_krw:
          type: integer
        expires_in_minutes:
          type: integer
        report_fields:
          type: array
        webhook_url:
          type: string
      required:
      - task_type
      - title
      - instructions
      - validation_criteria
      - lat
      - lng
      - radius_m
      - reward_krw
      - expires_in_minutes
    PostApiV1DispatchesResponse:
      type: object
      properties:
        dispatch_id:
          type: string
        status:
          type: string
        reward_krw:
          type: integer
        fee_krw:
          type: integer
        escrowed_krw:
          type: integer
        workers_notified:
          type: integer
        expires_in_minutes:
          type: integer
    GetApiV1DispatchesIdResponse:
      type: object
      properties:
        status:
          type: string
        timeline:
          type: array
    PostApiV1DispatchesIdCancelResponse:
      type: object
      properties:
        dispatch_id:
          type: string
        status:
          type: string
        refunded_krw:
          type: integer
    GetApiV1DispatchesIdResultResponse:
      type: object
      properties:
        status:
          type: string
        share_url:
          type: string
        verdict:
          type: object
        answers:
          type: object
        evidence:
          type: object
    PostApiV1QuoteRequest:
      type: object
      properties:
        task_type:
          type: string
        lat:
          type: number
        lng:
          type: number
        reward_krw:
          type: integer
    PostApiV1QuoteResponse:
      type: object
      properties:
        status:
          type: string
        share_url:
          type: string
        verdict:
          type: object
          properties:
            passed:
              type: boolean
            score:
              type: number
            feedback:
              type: string
        answers:
          type: object
          properties:
            wait_count:
              type: integer
        evidence:
          type: object
          properties:
            photo_urls:
              type: array
              items:
                type: string
            gps:
              type: object
              properties:
                lat:
                  type: number
                lng:
                  type: number
                accuracy_m:
                  type: integer
            distance_from_task_m:
              type: integer
            captured_at:
              type: string
              format: date-time
            checks:
              type: object
              properties:
                distance_m:
                  type: integer
                capture_age_min:
                  type: number
                exif_gps_present:
                  type: boolean
                failures:
                  type: array
                  items: {}
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api