meatspace-run Requests API
The Requests API from meatspace-run — 3 operation(s) for requests.
The Requests API from meatspace-run — 3 operation(s) for requests.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/meatspace-run:meatspace-run-requests-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: MeatSpace Requests API
version: 0.1.0
description: Flesh-in-the-loop service. AI agents submit content plus 2-4 choices, humans choose, and agents receive a structured result. Browser SDK available at /sdk/meatspace.js. MCP endpoint supports unauthenticated discovery and key provisioning.
contact:
url: https://meatspace.run
servers:
- url: https://meatspace.run
tags:
- name: Requests
paths:
/api/requests:
post:
operationId: createRequest
summary: Create a human decision request
description: Submit content and 2-4 choices for human review. Requires Bearer token.
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRequestBody'
responses:
'201':
description: Request created
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/CreateRequestResponse'
required:
- success
- data
'400':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Missing or invalid Bearer token
tags:
- Requests
get:
operationId: listRequests
summary: List requests (admin)
description: List all requests. Requires a valid admin session cookie.
security:
- adminSession: []
parameters:
- name: status
in: query
schema:
type: string
enum:
- pending
- completed
- expired
- all
default: pending
- name: limit
in: query
schema:
type: integer
default: 50
maximum: 100
- name: offset
in: query
schema:
type: integer
default: 0
responses:
'200':
description: Request list
'401':
description: Missing or invalid admin session
tags:
- Requests
/api/requests/{id}:
get:
operationId: pollRequest
summary: Poll request status
description: Check whether the human has responded. Requires Bearer token or x-review-token header.
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Request status
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/PollResponse'
required:
- success
- data
'401':
description: Missing or invalid Bearer token / review token
'404':
description: Request not found
tags:
- Requests
patch:
operationId: submitResponse
summary: Submit human response
description: Called from the review page when a human selects a choice. Requires x-review-token.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubmitResponseBody'
responses:
'200':
description: Response submitted
'400':
description: Invalid choice
'404':
description: Request not found or review token invalid
'409':
description: Already completed
'410':
description: Request expired
tags:
- Requests
/api/requests/{id}/wait:
get:
operationId: waitForResponse
summary: Long-poll for response
description: Block until the human responds or timeout. Requires Bearer token or x-review-token. Returns 202 if still pending.
security:
- bearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: timeout
in: query
schema:
type: integer
default: 25000
maximum: 25000
responses:
'200':
description: Request completed or expired
'202':
description: Still pending, retry
'401':
description: Missing or invalid Bearer token / review token
'404':
description: Request not found
tags:
- Requests
components:
schemas:
CreateRequestResponse:
type: object
required:
- id
- status
- review_url
- poll_url
- expires_at
properties:
id:
type: string
format: uuid
status:
type: string
enum:
- pending
review_url:
type: string
format: uri
description: Opaque human review URL that already includes the review token query parameter
poll_url:
type: string
expires_at:
type: string
format: date-time
SubmitResponseBody:
type: object
required:
- selected_option
properties:
selected_option:
type: string
description: Must match a choice id
Choice:
type: object
required:
- id
- label
properties:
id:
type: string
maxLength: 50
label:
type: string
maxLength: 100
PollResponse:
type: object
required:
- id
- status
- selected
- selected_label
- responded_at
- expires_at
properties:
id:
type: string
format: uuid
status:
type: string
enum:
- pending
- completed
- expired
selected:
type:
- string
- 'null'
selected_label:
type:
- string
- 'null'
responded_at:
type:
- string
- 'null'
format: date-time
expires_at:
type:
- string
- 'null'
format: date-time
ErrorResponse:
type: object
required:
- success
- error
- code
properties:
success:
type: boolean
const: false
error:
type: string
code:
type: string
CreateRequestBody:
type: object
required:
- agent_name
- title
- choices
properties:
agent_name:
type: string
maxLength: 100
title:
type: string
maxLength: 200
content:
type: string
description: Content for human review (max 50KB)
content_type:
type: string
enum:
- text
- markdown
- html
- image
default: text
choices:
type: array
items:
$ref: '#/components/schemas/Choice'
minItems: 2
maxItems: 4
callback_url:
type: string
format: uri
description: HTTPS webhook URL whose hostname is explicitly allowlisted by the operator
metadata:
type: object
description: Passed through to webhook (max 10KB)
decision_reason:
type: string
maxLength: 500
confidence:
type: number
minimum: 0
maximum: 1
consequence_of_wrong_choice:
type: string
maxLength: 500
recommended_option:
type: string
description: Must match one of the choice ids
run_id:
type: string
trace_id:
type: string
timeout_seconds:
type: integer
default: 3600
maximum: 86400
securitySchemes:
bearerAuth:
type: http
scheme: bearer
adminSession:
type: apiKey
in: cookie
name: hitl_admin_session