REST API

POST /api/publish にJSONを送るだけでサイトを公開できます。

最小の例(匿名公開)

curl -X POST https://publee.app/api/publish \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Page",
    "visibility": "public",
    "html": "<!doctype html><html><head><title>My Page</title></head><body>Hello</body></html>"
  }'

レスポンス(201):

{
  "site": {
    "id": "site_xxxx",
    "slug": "my-page-a1b2c3",
    "url": "https://my-page-a1b2c3.publee.site/",
    "visibility": "public",
    "fileCount": 1
  },
  "claimToken": "...",
  "claimUrl": "https://publee.app/claim?token=..."
}

claimToken / claimUrl匿名公開のときだけ 含まれます。ログイン後に claimUrl を開くと、そのサイトをアカウントに引き継いで保持期間を延長できます(認証済みの公開ではこのフィールドはなく、site のみ返ります)。

認証(APIトークン)

トークンページで発行した publee_live_ トークンを Authorization ヘッダに載せると、アカウントに紐づいた公開になります。

curl -X POST https://publee.app/api/publish \
  -H "Authorization: Bearer publee_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d @payload.json

リクエストボディ

フィールド 説明
title string サイト名(省略時はHTMLの<title>または"Untitled site")
description string サイトの説明(省略可、最大500文字。管理画面に表示)
slug string 公開URLのサブドメイン(https://<slug>.publee.site)。3〜63文字の英小文字・数字・ハイフン。Pro プラン以上(登録なし・Free は自動発行)
html string 単一HTMLのショートカット。filesと排他
files array {path, content または contentBase64, mimeType?} の配列。index.htmlが無くてもルート直下にHTMLが1つなら自動でトップページになります
visibility string password(デフォルト) / public / private / members / workspace。登録なしは password / public のみ。private は Pro 以上、members / workspace は Team
password string visibility=password のとき必須(6文字以上)
spaMode boolean 未マッチのパスをindex.htmlにフォールバック
noindex boolean 検索エンジン除外(デフォルト true)。false にできるのは Pro プラン以上
showBranding boolean false でPubleeフッターを非表示(Pro プラン以上)
memberEmails string[] visibility=members のときの許可リスト(最大100件)
overwrite boolean true にすると slug で指定した自分の既存サイトのファイルを差し替えます(URLは変わりません。要Bearerトークン)

複数ファイルの例

curl -X POST https://publee.app/api/publish \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Docs Site",
    "visibility": "password",
    "password": "s3cret-pass",
    "files": [
      {"path": "index.html", "content": "<!doctype html>..."},
      {"path": "style.css", "content": "body { ... }"},
      {"path": "img/logo.png", "contentBase64": "iVBORw0KGgo..."}
    ]
  }'

既存サイトの更新(同じURLで差し替え)

curl -X POST https://publee.app/api/publish \
  -H "Authorization: Bearer publee_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "my-page",
    "overwrite": true,
    "html": "<!doctype html><html>...更新後のHTML...</html>"
  }'

公開範囲やパスワードなどの設定は変わりません(サイト管理画面の共有設定から変更できます)。

エラー

ステータス 意味
400 入力エラー(error フィールドに日本語の理由。プラン外の機能指定もここ)
401 APIトークンが無効
415 Content-Type: application/json がない
429 レート制限。時間を置いて再試行してください