Edge Network Assist API
AI answers widget for any website, grounded in its own content.
AI answers widget for any website, grounded in its own content.
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/edge-network:edge-network-assist-api"
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.
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: Edge Network Agent Assist API
version: 1.1.0
description: 'REST API built for AI agents: provision and manage CDN, compute VMs, S3-compatible object storage, DNS, Shield bot protection, and Assist AI site answers on the Edge Network decentralised cloud. Every response includes a tell_user field with a human-readable summary. Every mutating operation supports X-Dry-Run: true (preview without changes) and Idempotency-Key (safe retries). Agents without credentials can sign themselves up autonomously via /agent/signup (Ed25519 keypair + proof-of-work — no card, no human) and immediately deploy free-tier resources. Also available as an MCP server: https://edge.network/mcp (streamable HTTP) or npx @edge-network/mcp (stdio).
Versioning: the current major version is 1, signalled by the X-API-Version response header on every response. Additive changes (new endpoints, new optional fields) ship without a version bump and never break existing integrations. Breaking changes ship under a new URL prefix (e.g. /agent/v2/) with at least 6 months of overlap; during the migration window the old surface returns Deprecation and Sunset headers (RFC 8594). Full policy: https://edge.network/docs/api/versioning.
Rate limits: responses carry IETF RateLimit-Limit / RateLimit-Remaining / RateLimit-Reset headers (plus RateLimit-Policy); 429 responses include Retry-After.'
contact:
name: Edge Network support
email: support@edge.network
url: https://edge.network/support
termsOfService: https://edge.network/terms
servers:
- url: https://edge.network
description: Production
security:
- agentCode: []
tags:
- name: Assist
description: AI answers widget for any website, grounded in its own content.
paths:
/agent/assist/sites:
get:
operationId: listAssistSites
summary: List Assist sites
description: All Edge Assist sites with month usage, caps, and index status.
tags:
- Assist
responses:
'200':
description: Success.
headers:
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
type: object
properties:
sites:
type: array
items:
$ref: '#/components/schemas/AssistSite'
tell_user:
type: string
description: Human-readable summary of what happened, for the agent to relay to its operator.
required:
- sites
'400':
description: Validation error — the response body explains what to fix.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid agent access code. The body includes self-signup pointers.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limited. Honour Retry-After and the RateLimit-* headers before retrying.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- agentCode: []
post:
operationId: createAssistSite
summary: Create an Assist site
description: 'AI answers for a website, grounded in its own content. Returns the sitekey and a one-line embed snippet. Free tier: 250 answered questions/month. After creating, host a content index and trigger reingestAssistSite.'
tags:
- Assist
responses:
'201':
description: Success.
headers:
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
type: object
properties:
site:
$ref: '#/components/schemas/AssistSite'
tell_user:
type: string
description: Human-readable summary of what happened, for the agent to relay to its operator.
required:
- site
'400':
description: Validation error — the response body explains what to fix.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid agent access code. The body includes self-signup pointers.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limited. Honour Retry-After and the RateLimit-* headers before retrying.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: X-Dry-Run
in: header
required: false
description: Set to "true" to preview the operation (validation, cost, plan) without making changes.
schema:
type: string
enum:
- 'true'
- 'false'
- name: Idempotency-Key
in: header
required: false
description: Unique key for safe retries. Repeating a request with the same key returns the original response instead of re-executing.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Friendly name, e.g. "Docs site".
hostname:
type: string
description: 'Hostname the widget runs on. Origin-enforced: the sitekey only works there.'
index_url:
type: string
format: uri
description: 'Public URL of the content index JSON: { "pages": [{ "url", "title", "text" }] }. Can be set later.'
site_prompt:
type: string
description: Optional instructions steering answers (tone, priorities, things to avoid).
required:
- name
- hostname
security:
- agentCode: []
/agent/assist/sites/{id}:
patch:
operationId: updateAssistSite
summary: Update an Assist site
description: Change name, hostname, index_url, or site_prompt.
tags:
- Assist
responses:
'200':
description: Success.
headers:
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
type: object
properties:
site:
$ref: '#/components/schemas/AssistSite'
tell_user:
type: string
description: Human-readable summary of what happened, for the agent to relay to its operator.
required:
- site
'400':
description: Validation error — the response body explains what to fix.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid agent access code. The body includes self-signup pointers.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limited. Honour Retry-After and the RateLimit-* headers before retrying.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: id
in: path
required: true
description: Assist site id.
schema:
type: string
- name: X-Dry-Run
in: header
required: false
description: Set to "true" to preview the operation (validation, cost, plan) without making changes.
schema:
type: string
enum:
- 'true'
- 'false'
- name: Idempotency-Key
in: header
required: false
description: Unique key for safe retries. Repeating a request with the same key returns the original response instead of re-executing.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
hostname:
type: string
index_url:
type: string
format: uri
site_prompt:
type: string
security:
- agentCode: []
delete:
operationId: deleteAssistSite
summary: Delete an Assist site
description: The site's sitekey stops working immediately.
tags:
- Assist
responses:
'200':
description: Success.
headers:
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/TellUserEnvelope'
'400':
description: Validation error — the response body explains what to fix.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid agent access code. The body includes self-signup pointers.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limited. Honour Retry-After and the RateLimit-* headers before retrying.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: id
in: path
required: true
description: Assist site id.
schema:
type: string
- name: X-Dry-Run
in: header
required: false
description: Set to "true" to preview the operation (validation, cost, plan) without making changes.
schema:
type: string
enum:
- 'true'
- 'false'
- name: Idempotency-Key
in: header
required: false
description: Unique key for safe retries. Repeating a request with the same key returns the original response instead of re-executing.
schema:
type: string
security:
- agentCode: []
/agent/assist/sites/{id}/reingest:
post:
operationId: reingestAssistSite
summary: Reingest an Assist site
description: Fetch and index the site's content from its index_url now (also runs on an automatic refresh cycle). Returns page/chunk counts. Any reingest invalidates the answer cache.
tags:
- Assist
responses:
'200':
description: Success.
headers:
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/TellUserEnvelope'
'400':
description: Validation error — the response body explains what to fix.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid agent access code. The body includes self-signup pointers.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limited. Honour Retry-After and the RateLimit-* headers before retrying.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: id
in: path
required: true
description: Assist site id.
schema:
type: string
- name: X-Dry-Run
in: header
required: false
description: Set to "true" to preview the operation (validation, cost, plan) without making changes.
schema:
type: string
enum:
- 'true'
- 'false'
- name: Idempotency-Key
in: header
required: false
description: Unique key for safe retries. Repeating a request with the same key returns the original response instead of re-executing.
schema:
type: string
security:
- agentCode: []
/agent/assist/sites/{id}/overview:
get:
operationId: getAssistSiteOverview
summary: Assist site usage and health
description: Questions today/7d/30d, answer rate, cache hits, index freshness, cap consumption.
tags:
- Assist
responses:
'200':
description: Success.
headers:
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/TellUserEnvelope'
'400':
description: Validation error — the response body explains what to fix.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid agent access code. The body includes self-signup pointers.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limited. Honour Retry-After and the RateLimit-* headers before retrying.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: id
in: path
required: true
description: Assist site id.
schema:
type: string
security:
- agentCode: []
/agent/assist/sites/{id}/questions:
get:
operationId: listAssistQuestions
summary: Assist question log
description: What visitors actually asked. Filter with answered=false to find content gaps.
tags:
- Assist
responses:
'200':
description: Success.
headers:
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/TellUserEnvelope'
'400':
description: Validation error — the response body explains what to fix.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid agent access code. The body includes self-signup pointers.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limited. Honour Retry-After and the RateLimit-* headers before retrying.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
X-API-Version:
$ref: '#/components/headers/XApiVersion'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: id
in: path
required: true
description: Assist site id.
schema:
type: string
- name: limit
in: query
required: false
description: Max entries to return.
schema:
type: integer
minimum: 1
maximum: 500
default: 50
- name: answered
in: query
required: false
description: Filter by answered state. "false" surfaces unanswered questions.
schema:
type: string
enum:
- 'true'
- 'false'
security:
- agentCode: []
components:
headers:
XApiVersion:
description: Current API major version. Breaking changes ship under a new URL prefix with Deprecation/Sunset headers on the old surface. See https://edge.network/docs/api/versioning.
schema:
type: string
example: '1'
RateLimitPolicy:
description: 'Quota policy: "<limit>;w=<window-seconds>", e.g. "600;w=60".'
schema:
type: string
example: 600;w=60
RateLimitLimit:
description: Request quota for the current window (IETF draft-ietf-httpapi-ratelimit-headers).
schema:
type: integer
RateLimitRemaining:
description: Requests remaining in the current window.
schema:
type: integer
RateLimitReset:
description: Seconds until the quota resets.
schema:
type: integer
RetryAfter:
description: Seconds to wait before retrying (sent with 429 responses).
schema:
type: integer
schemas:
TellUserEnvelope:
type: object
description: Standard success envelope. Endpoint-specific fields ride alongside tell_user.
properties:
tell_user:
type: string
description: Human-readable summary of what happened, for the agent to relay to its operator.
additionalProperties: true
required:
- tell_user
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Machine-readable error code, e.g. VALIDATION_ERROR.
message:
type: string
description: What went wrong.
suggestions:
type: array
items:
type: string
description: Concrete next steps for the agent.
tell_user:
type: string
description: Plain-English summary to relay to the operator.
required:
- code
- message
required:
- error
AssistSite:
type: object
properties:
id:
type: string
name:
type: string
hostname:
type: string
description: Hostname the widget is origin-locked to.
sitekey:
type: string
index_url:
type:
- string
- 'null'
questions_this_month:
type: number
monthly_cap:
type:
- number
- 'null'
required:
- id
- name
- hostname
securitySchemes:
agentCode:
type: http
scheme: bearer
bearerFormat: ea_live_...
description: Agent access code. Get one from the Edge console (Account → Agent Access) or autonomously via GET /agent/signup. Public endpoints (discovery, prompt, signup) need no credentials.
externalDocs:
description: Agent API documentation
url: https://edge.network/docs/agent