Skip to content

Deploy Endpoints

Create Deployment

POST /deploy

Deploy a site to a live URL. Supports single HTML file or multi-file site.

Authentication: Optional. Omit the Authorization header for an anonymous deploy (expires in 24h, returns claim_token).

Request body:

FieldTypeRequiredDescription
htmlstringNo*Full HTML content for single-file deploys
filesarrayNo*Files for multi-file deploys
slugstringNoCustom URL slug (lowercase, hyphens only). Auto-generated if omitted.
titlestringNoPage title
descriptionstringNoMeta description
faviconstringNoFavicon emoji
is_spabooleanNoEnable 404→index.html fallback for SPA routing

*Either html or files is required.

files array format

json
[
  {
    "path": "index.html",
    "content": "<html>...</html>",
    "contentType": "text/html"
  },
  {
    "path": "css/style.css",
    "content": "body { ... }",
    "contentType": "text/css"
  },
  {
    "path": "images/logo.png",
    "content": "iVBORw0KGgo...",
    "contentType": "image/png",
    "encoding": "base64"
  }
]

Single-file example:

bash
curl -X POST https://api.invoker.page/deploy \
  -H "Authorization: Bearer inv_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"html": "<h1>Hello World</h1>", "slug": "my-page", "title": "Hello"}'

Response (200) — authenticated:

json
{
  "id": "dep_abc123",
  "slug": "my-page",
  "url": "https://my-page.invoker.page"
}

Response (200) — anonymous:

json
{
  "id": "dep_abc123",
  "slug": "my-page",
  "url": "https://my-page.invoker.page",
  "claim_token": "tok_xyz789",
  "claim_url": "https://invoker.page/claim/my-page?token=tok_xyz789",
  "expires_at": "2026-03-02T10:30:00Z"
}

Errors: 400 (missing/invalid fields), 401 (invalid API key), 409 (slug conflict), 403 (deployment limit reached)


Get Status

GET /deploy/:id

Retrieve deployment metadata.

Authentication: Required.

Example:

bash
curl https://api.invoker.page/deploy/dep_abc123 \
  -H "Authorization: Bearer inv_your_api_key"

Response (200):

json
{
  "id": "dep_abc123",
  "slug": "my-page",
  "url": "https://my-page.invoker.page",
  "status": "active",
  "storage_type": "html",
  "is_spa": false,
  "title": "My Page",
  "description": null,
  "favicon": "⚡",
  "created_at": "2026-03-01T10:30:00Z",
  "updated_at": "2026-03-01T14:22:00Z"
}

Errors: 401 (unauthorized), 404 (not found)


Update Deployment

PUT /deploy/:id

Replace the content of an existing deployment. The URL and slug remain unchanged.

Authentication: Required.

Request body:

Same fields as POST /deploy, except slug cannot be changed. Pass html or files (but not both). Metadata fields (title, description, favicon, is_spa) are optional — omit to keep existing values.

Example:

bash
curl -X PUT https://api.invoker.page/deploy/dep_abc123 \
  -H "Authorization: Bearer inv_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"html": "<h1>Updated Content</h1>"}'

Response (200):

json
{
  "id": "dep_abc123",
  "slug": "my-page",
  "url": "https://my-page.invoker.page"
}

Errors: 400 (missing/invalid fields), 401 (unauthorized), 404 (not found)


Delete Deployment

DELETE /deploy/:id

Delete a deployment. The page goes offline immediately and the slug is freed.

Authentication: Required.

Example:

bash
curl -X DELETE https://api.invoker.page/deploy/dep_abc123 \
  -H "Authorization: Bearer inv_your_api_key"

Response (200):

json
{
  "id": "dep_abc123",
  "message": "Deployment deleted successfully."
}

Errors: 401 (unauthorized), 404 (not found)


Claim Anonymous Deployment

POST /deploy/claim

Associate an anonymous deployment with an authenticated account. After claiming, the deploy no longer expires.

Authentication: Required.

Request body:

FieldTypeRequiredDescription
slugstringYesThe slug of the anonymous deployment
claim_tokenstringYesThe claim_token returned at deploy time

Example:

bash
curl -X POST https://api.invoker.page/deploy/claim \
  -H "Authorization: Bearer inv_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"slug": "my-page", "claim_token": "tok_xyz789"}'

Response (200):

json
{
  "id": "dep_abc123",
  "slug": "my-page",
  "url": "https://my-page.invoker.page"
}

Errors: 400 (missing fields or invalid token), 401 (unauthorized), 404 (slug not found or token expired)


List Deployments

GET /deploys

List all active deployments for the authenticated user.

Authentication: Required.

Response (200):

json
{
  "deployments": [
    {
      "id": "dep_abc123",
      "slug": "my-page",
      "url": "https://my-page.invoker.page",
      "title": "My Page",
      "updated_at": "2026-03-01T14:22:00Z"
    }
  ]
}

Errors: 401 (unauthorized)


Notes

  • Slug rules: lowercase, hyphens only, globally unique.
  • Deletion frees up a slot against your plan limit.
  • Multi-file updates via PUT replace all existing files with the new set.
  • Anonymous deploys expire after 24 hours. Claim them with POST /deploy/claim before expiry.

Deploy apps from conversation. Vercel for AI agents.