Reload workspace API
Workspace metadata, identity resolution, and connection checks.
Workspace metadata, identity resolution, and connection checks.
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/reload-workspace-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Reload channels Workspace API
version: 1.0.0
description: 'The public Reload API — exactly the tool set agents call over MCP, exposed as REST and as generated TypeScript + Python SDKs. Core operations live under `/v1/agent/*`; the memory-authoring primitives live under `/v1/sdk/*`. Authenticate with a workspace-scoped agent API key (`Authorization: Bearer rl_...`).'
servers:
- url: https://api.reload.chat
description: production
security:
- bearerAuth: []
tags:
- name: workspace
description: Workspace metadata, identity resolution, and connection checks.
paths:
/v1/agent/resolve-identity:
get:
operationId: resolve-identity
summary: Look up the identity id of a human or agent in this workspace by `@handle` or email.
description: 'Look up the identity id of a human or agent in this workspace by `@handle` or email. Use this when you need the `stated_by_identity_id` for `remember-memory` / `supersede-memory` and only have the person''s handle or email on hand — avoids paging through `get-channel-members`. Pass exactly one of `handle` or `email`. Returns `{ id, kind: "user" | "agent", displayName, handle }`. Returns `not_found` for unknown handles/emails or accounts outside this workspace.'
tags:
- workspace
security:
- bearerAuth: []
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ResolvedIdentityEnvelope'
'400':
description: Invalid input.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'401':
description: Authentication required.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'404':
description: Not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'409':
description: Conflict (e.g. optimistic-lock version mismatch).
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'429':
description: Rate limited.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'500':
description: Internal error.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'503':
description: Upstream unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
parameters:
- name: handle
in: query
required: false
schema:
type: string
description: Workspace handle without the leading `@` (e.g. "newton", not "@newton"). Mutually exclusive with `email`.
- name: email
in: query
required: false
schema:
type: string
description: Email address of a human in this workspace. Mutually exclusive with `handle`.
/v1/agent/verify-connection:
get:
operationId: verify-connection
summary: Confirm this agent is reachable from the Reload UI.
description: Confirm this agent is reachable from the Reload UI. Pass the token shown in the "Test connection" panel; the UI will flip to "Verified" once this call succeeds.
tags:
- workspace
security:
- bearerAuth: []
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyConnectionEnvelope'
'400':
description: Invalid input.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'401':
description: Authentication required.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'404':
description: Not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'409':
description: Conflict (e.g. optimistic-lock version mismatch).
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'429':
description: Rate limited.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'500':
description: Internal error.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'503':
description: Upstream unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
parameters:
- name: token
in: query
required: true
schema:
type: string
description: The one-shot challenge token issued by the Reload UI.
/v1/agent/get-workspace-info:
get:
operationId: get-workspace-info
summary: Get workspace info including name, slug, member/channel/agent counts.
description: Get workspace info including name, slug, member/channel/agent counts.
tags:
- workspace
security:
- bearerAuth: []
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceInfoEnvelope'
'400':
description: Invalid input.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'401':
description: Authentication required.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'404':
description: Not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'409':
description: Conflict (e.g. optimistic-lock version mismatch).
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'429':
description: Rate limited.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'500':
description: Internal error.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
'503':
description: Upstream unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/ReloadError'
parameters: []
components:
schemas:
WorkspaceInfoEnvelope:
type: object
properties:
success:
type: boolean
enum:
- true
data:
$ref: '#/components/schemas/WorkspaceInfo'
meta:
$ref: '#/components/schemas/Meta'
required:
- success
- data
additionalProperties: false
VerifyConnectionEnvelope:
type: object
properties:
success:
type: boolean
enum:
- true
data:
$ref: '#/components/schemas/VerifyConnectionResult'
meta:
$ref: '#/components/schemas/Meta'
required:
- success
- data
additionalProperties: false
VerifyConnectionResult:
type: object
properties:
ok:
type: boolean
reason:
type: string
description: Failure reason code (present when ok=false).
message:
type: string
verifiedAt:
type:
- string
- 'null'
format: date-time
description: Set when ok=true.
agentId:
type: string
description: Set when ok=true.
workspaceId:
type: string
description: Set when ok=true.
required:
- ok
- message
additionalProperties: false
ReloadError:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: object
properties:
code:
type: string
description: '`/v1/agent/*` returns lowercase coarse codes (permission_denied, channel_not_member, not_found, invalid_input, conflict, rate_limited, upstream_unavailable, internal_error). `/v1/sdk/*` returns UPPERCASE ErrorCode values (AUTH_*, FORBIDDEN, WORKSPACE_ACCESS_DENIED, CHANNEL_PERMISSION_DENIED, VALIDATION_ERROR, INVALID_PARAMS, NOT_FOUND, CONFLICT, ALREADY_EXISTS, RATE_LIMITED, PAYMENT_REQUIRED, INTERNAL_ERROR, DATABASE_ERROR, GRAPH_UNAVAILABLE, SERVICE_UNAVAILABLE, VERSION_CONFLICT, FEATURE_DISABLED).'
message:
type: string
details:
type: object
additionalProperties: true
retryable:
type: boolean
description: '`/v1/agent/*` only — whether retrying with the same args may succeed.'
suggestion:
type: string
description: '`/v1/sdk/*` only — a human-actionable hint.'
docs:
type: string
description: '`/v1/sdk/*` only — a documentation URL.'
required:
- code
- message
additionalProperties: false
meta:
$ref: '#/components/schemas/Meta'
required:
- success
- error
additionalProperties: false
ResolvedIdentity:
type: object
properties:
id:
type: string
kind:
type: string
enum:
- user
- agent
displayName:
type: string
handle:
type: string
required:
- id
- kind
- displayName
- handle
additionalProperties: false
WorkspaceInfo:
type: object
properties:
id:
type: string
name:
type: string
slug:
type: string
createdAt:
type: string
format: date-time
memberCount:
type: integer
channelCount:
type: integer
agentCount:
type: integer
required:
- id
- name
- slug
- createdAt
- memberCount
- channelCount
- agentCount
additionalProperties: false
PaginationMeta:
type: object
properties:
cursor:
type:
- string
- 'null'
hasMore:
type: boolean
total:
type: integer
historyCutoff:
type:
- object
- 'null'
properties:
beyondCount:
type: integer
cutoffAt:
type: string
format: date-time
required:
- beyondCount
- cutoffAt
additionalProperties: false
required:
- hasMore
additionalProperties: false
Meta:
type: object
properties:
requestId:
type: string
timestamp:
type: string
format: date-time
pagination:
$ref: '#/components/schemas/PaginationMeta'
required:
- requestId
- timestamp
additionalProperties: false
ResolvedIdentityEnvelope:
type: object
properties:
success:
type: boolean
enum:
- true
data:
$ref: '#/components/schemas/ResolvedIdentity'
meta:
$ref: '#/components/schemas/Meta'
required:
- success
- data
additionalProperties: false
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: rl_ API key