Edge Network Projects API
Group resources, check health, scale, tear down.
Group resources, check health, scale, tear down.
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-projects-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 Projects 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: Projects
description: Group resources, check health, scale, tear down.
paths:
/agent/projects:
get:
operationId: listProjects
summary: List projects
description: All projects (groupings of resources) on the account.
tags:
- Projects
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:
projects:
type: array
items:
$ref: '#/components/schemas/Project'
tell_user:
type: string
description: Human-readable summary of what happened, for the agent to relay to its operator.
required:
- projects
'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: createProject
summary: Create a project
description: Create an empty project to group resources under.
tags:
- Projects
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:
project:
$ref: '#/components/schemas/Project'
tell_user:
type: string
description: Human-readable summary of what happened, for the agent to relay to its operator.
required:
- project
'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:
type: string
required:
- name
security:
- agentCode: []
/agent/projects/{id}:
get:
operationId: getProject
summary: Get a project
description: One project with its resources.
tags:
- Projects
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:
project:
$ref: '#/components/schemas/Project'
tell_user:
type: string
description: Human-readable summary of what happened, for the agent to relay to its operator.
required:
- project
'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: Project id.
schema:
type: string
security:
- agentCode: []
delete:
operationId: deleteProject
summary: Teardown a project
description: 'Deletes the project and ALL resources in it. Requires the X-Confirm: teardown header as an explicit confirmation.'
tags:
- Projects
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: Project id.
schema:
type: string
- name: X-Confirm
in: header
required: true
description: Must be the literal string "teardown".
schema:
type: string
enum:
- teardown
- 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/projects/{id}/health:
get:
operationId: getProjectHealth
summary: Project health check
description: 'Health of every resource in the project: status, key metrics, and suggested fixes.'
tags:
- Projects
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: Project id.
schema:
type: string
security:
- agentCode: []
/agent/projects/{id}/scale:
post:
operationId: scaleProject
summary: Scale project compute
description: Resize compute resources in a project (within account limits). Include a reason for the audit log.
tags:
- Projects
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: Project 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:
compute:
type: object
properties:
size:
type: string
enum:
- nano
- small
- medium
- large
- xlarge
reason:
type: string
description: Why this scaling action is being taken.
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
Project:
type: object
properties:
id:
type: string
description: Project id, e.g. proj_ab12cd34.
name:
type: string
description:
type:
- string
- 'null'
resources:
type: array
description: Resources grouped under this project.
items:
type: object
properties:
type:
type: string
description: Resource type, e.g. vm, bucket, cdn, dns_zone.
id:
type: string
name:
type: string
required:
- type
- id
created_at:
type: string
format: date-time
required:
- id
- name
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