コンテンツへスキップ
Flixy API · v1

APIドキュメント

FlixyのAIをあなたの製品に追加するために必要なすべて。ベースURL:https://flixy.studio/v1

REST · JSONBearerキー非同期ジョブ署名付きWebhook18言語

はじめに

Flixy APIを使えば、あなたのソフトウェアからFlixy Studioの機能を利用できます。説明から完全なサイトを作成し、編集・翻訳する、サイトのコンテンツを作成する、メニュー・カタログ・PDFを読み取る、画像やロゴを作成する、といったことが可能です。料金は成功した呼び出しの分だけ、前払い残高から支払います。

時間のかかるタスク(サイトの作成、編集、翻訳)はジョブとして実行されます。APIはすぐに応答し、ジョブの状態を確認するかWebhookを受け取ります。コンテンツ、ドキュメントの読み取り、画像は直接応答し、通常は数秒で完了します。

まずは 開発者スペースから始めましょう。開くとすぐに無料のテストキーが作成されます。

開発者コンソール

キー、残高、チャージ、Webhook、呼び出しログは、dev.flixy.studioの開発者コンソールで管理します。

  • 独立した開発者アカウント。他のAIプラットフォームと同様に、開発者アカウントはFlixy Studioのアカウントとは別のもので、独自の登録、サインイン、セッションを備えています。一方からサインアウトしても、もう一方からサインアウトされることはありません。両方に同じメールアドレスを使用できます。
  • 連携済みの組織。Flixy Studioもご利用の場合は、組織を開発者アカウントに連携して、APIがその組織のウェブサイトを操作できるようにできます。連携済みの組織をご覧ください。
  • アカウントのセキュリティ。2段階認証、アクティブなセッション、データのエクスポートは、コンソールの「アカウント」から利用できます。

認証

すべてのリクエストのAuthorizationヘッダーでキーを送信してください。キーはfx_live_またはfx_test_で始まります。

Authorization: Bearer fx_live_8sJ2…
キーは秘密情報です。APIはサーバーからのみ呼び出してください。Webブラウザーから送信されたリクエストは拒否されるため、キーがWebページやモバイルアプリに含まれることはありません。

各キーには権限(スコープ)があります。適切なスコープがない呼び出しは403 missing_scopeを返します。

パラメーター種類説明
sites:readscopeサイトとそのHTMLを読み取る。
sites:writescopeサイトを作成・編集・翻訳する。
content:writescopeサイトのコンテンツを作成する。
extract:writescope画像とPDFドキュメントを読み取る。
images:writescope画像とロゴを作成する。
account:readscope残高と利用状況を読み取る。

テストキーとライブキー

  • テストキー(fx_test_…)は無料です。AIを使わずに現実的なサンプルレスポンスを返すため、連携全体を構築・テストできます。サイトのジョブは数秒後にサンプルサイトで完了します。
  • ライブキー(fx_live_…)は実際の結果を返し、残高から請求されます。

すべてのレスポンスにはFlixy-Mode: testまたはFlixy-Mode: liveヘッダーが含まれます。

リクエストとレスポンス

JSONボディはContent-Type: application/jsonで送信してください(最大16 MB)。レスポンスはJSONです。日付はUTCのISO 8601形式です。すべてのレスポンスにはX-Request-Idヘッダーがあります。呼び出しについてサポートが必要な場合は、この値をサポートにお伝えください。

Accept-Languageを設定すると、エラーメッセージをご希望の言語で受け取れます(fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja。デフォルトは英語)。

エラー

エラーには標準のHTTPステータスコードが使われ、常に同じ形式です:

{
  "error": {
    "type": "billing_error",
    "code": "insufficient_balance",
    "message": "Insufficient balance: top up your developer account…",
    "request_id": "req_5c1f0a9e2b7d4c11"
  }
}
ステータス種類意味
400invalid_request_errorJSONまたはヘッダーが無効です。
401authentication_errorキーがない、無効、または削除されています。
402billing_error残高不足、または月間上限かキーの1日の上限に達しています。
403permission_errorスコープ不足、許可されていないIPアドレス、アカウントの停止、またはブラウザーからの呼び出しです。
404not_found_error不明なサイト、ジョブ、またはエンドポイントです。
409conflict_errorこのサイトではすでにジョブが実行中です。
422invalid_request_error無効なパラメーター、または利用ポリシーにより拒否されたリクエスト(off_topic、content_policy)。請求されません。
429rate_limit_errorリクエストまたは同時実行ジョブが多すぎます。Retry-Afterの時間だけ待ってください。
5xxapi_error当社側の一時的な問題です。同じ冪等キーで再試行してください。請求されません。

レート制限

  • キーごとに1分あたり60リクエスト(X-RateLimit-Limitヘッダー)。
  • アカウントごとにサイトのジョブは同時に3件まで。コンテンツ、ドキュメント、画像の呼び出しはこの制限の対象外です。
  • 制限に達すると、APIは秒数を示すRetry-Afterヘッダーとともに429を返します。

さらに必要ですか? ユースケースを添えてcontact@flixy.studioまでご連絡ください。

冪等性

ネットワークエラーは起こり得ます。あらゆるPOSTにIdempotency-Keyヘッダー(8~100文字、例:自社の注文ID)を追加してください。24時間以内に同じリクエストを再送すると、APIは最初のレスポンスをIdempotent-Replayed: trueヘッダー付きで返し、処理の実行や請求が二重に行われることはありません。

ジョブ

サイトの作成、編集、翻訳には約30秒から3分かかります。これらのエンドポイントはジョブとともに202 Acceptedを返します。5秒ごとに状態を確認するか、job.succeeded / job.failedのWebhookを待ってください。

GET/v1/jobs/{id}
GET/v1/jobs?limit=20
{
  "id": "job_69023cfbb08a8130d8f6",
  "object": "job",
  "type": "site",
  "status": "succeeded",
  "mode": "live",
  "site_id": "691589621",
  "price": 0.72,
  "currency": "EUR",
  "created_at": "2026-11-11T09:45:01Z",
  "finished_at": "2026-11-11T09:46:35Z",
  "result": { "id": "691589621", "object": "site", "status": "ready", "pages": ["index.html", "menu.html"] }
}

statusはqueued、running、succeeded、failedのいずれかです。失敗したジョブは請求されず、そのerrorで理由が説明されます。

サイトを作成

POST/v1/sites

説明から完全なサイトを作成します。スコープ:sites:write。

パラメーター種類説明
prompt必須stringビジネスとサイトの説明(12~4000文字)。詳しいほど良い結果になります。
languagestringサイトの言語:fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja。
structurestringonepageまたはmultipage。デフォルトではプロンプトから判定されます。
qualitystringfast、standard(デフォルト)、complete。
featuresstring[]含めるセクション:contact_form, testimonials, faq, map, whatsapp, shop, booking, gallery, newsletter, blog, pricing。
businessobject既知の情報:name, slogan, phone, email, address, city, hours。AIが創作することはありません。
destinationstringdeveloper(デフォルト):ウェブサイトは開発者アカウントに属します。organization:ウェブサイトは連携済みのFlixy Studioの組織内に直接作成されます。
curl https://flixy.studio/v1/sites \
  -H "Authorization: Bearer $FLIXY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1042" \
  -d '{
    "prompt": "Website for an artisan bakery in Lyon: sourdough breads, pastries, online pre-orders",
    "language": "fr",
    "structure": "multipage",
    "features": ["contact_form", "map", "shop"],
    "business": { "name": "Boulangerie du Parc", "city": "Lyon", "phone": "+33 4 00 00 00 00" }
  }'

サイトを取得

GET/v1/sites/{id}?include=html
GET/v1/sites?limit=20

サイト、そのステータス、ページを返します。include=htmlを追加すると、各ページの完全なHTMLを受け取れます(画像はFlixyがホスティングします)。スコープ:sites:read。

{
  "id": "691589621",
  "object": "site",
  "name": "Boulangerie du Parc",
  "status": "ready",
  "language": "fr",
  "pages": ["index.html", "menu.html", "contact.html"],
  "owner": "developer",
  "html": { "index.html": "<!doctype html>…" }
}

所有者で絞り込むには、一覧にowner=developerまたはowner=organizationを追加します。連携済みの組織のウェブサイトでは、Flixy Studioで開くためのdashboard_urlとeditor_urlも返されます。

サイトを編集

POST/v1/sites/{id}/edits

Flixyエディターと同様に、普段の言葉で説明された変更を適用します。変更のたびに新しいバージョンが作成されます。スコープ:sites:write。

パラメーター種類説明
instruction必須string行う変更(4~3000文字)。例:「3つのプランを掲載した料金ページを追加して」「濃い緑のテーマにして」。
curl https://flixy.studio/v1/sites/691589621/edits \
  -H "Authorization: Bearer $FLIXY_API_KEY" -H "Content-Type: application/json" \
  -d '{"instruction": "Add an opening hours section: Tuesday to Saturday, 7am to 7pm"}'

サイトを翻訳

POST/v1/sites/{id}/translations

デザイン、画像、リンク、価格、連絡先情報を保ったまま、サイトのすべてのページ(ナビゲーション、ボタン、フォーム、画像の説明、検索エンジン向けのタイトルと説明)を翻訳します。スコープ:sites:write。

パラメーター種類説明
language必須string翻訳先の言語:fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja。

Webコンテンツを作成

POST/v1/content

サイトに掲載するコンテンツや、ビジネスが顧客に送るコンテンツを作成します。直接応答します。スコープ:content:write。

パラメーター種類説明
type必須stringpage_text, blog_article, product_description, service_description, about_us, seo_meta, faq, review_reply, newsletter, social_post.
topic必須stringテキストのテーマ(最大1500文字)。
languagestring言語:fr, en, es, de, it, pt, nl, ca, el, sv, no, da, fi, is, et, lv, lt, ja(デフォルトはen)。
factsstring使用する情報:価格、特徴、材料、営業時間など(最大4000文字)。AIが情報を創作することはありません。
businessstringビジネスの簡単な説明。
tonestring例:warm、premium、playful。
lengthstringshort、medium(デフォルト)、long。
keywordsstring自然に含めるキーワード。
curl https://flixy.studio/v1/content \
  -H "Authorization: Bearer $FLIXY_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "type": "product_description",
    "language": "it",
    "topic": "Pizza Margherita cooked in a wood-fired oven",
    "facts": "San Marzano tomatoes, fior di latte mozzarella, fresh basil, 48-hour dough",
    "length": "short"
  }'

htmlフィールドには安全なテキストタグ(見出し、段落、リスト、リンク)のみが含まれ、スクリプトやスタイルは含まれません。

ドキュメントを読み取る

POST/v1/extract

メニュー、カタログ、価格表、名刺、チラシ、パンフレットを読み取り、サイトにすぐ使える構造化コンテンツを返します。実際に書かれている内容だけが返されます。スコープ:extract:write。

パラメーター種類説明
filestringbase64でエンコードしたファイル(JPEG、PNG、WebP、GIF、PDF、最大10 MB)。
urlstringまたはファイルの公開httpsアドレス。
kindstringauto(デフォルト)、menu, catalog, business_card, brochure, price_list, flyer。
{
  "object": "extract",
  "kind": "menu",
  "business": { "name": "Trattoria Sole", "phone": "…", "hours": "…" },
  "language": "es",
  "sections": [
    { "title": "Pizzas", "items": [ { "name": "Margherita", "description": "…", "price": "11.50" } ] }
  ],
  "colors": ["#b5121b"],
  "usage": { "price": 0.03, "currency": "EUR", "mode": "live" }
}
テキストを含まないスキャンPDFは読み取れません。代わりに各ページの画像を送信してください。

画像を作成

POST/v1/images

サイト用の写真、イラスト、ロゴを作成します。画像はFlixyがホスティングし、ファイル内にAI生成メディアを示す標準のIPTCマーキングが付きます。スコープ:images:write。

パラメーター種類説明
prompt必須string画像の説明(4~800文字)。
kindstringphoto(デフォルト)、illustration、logo。
aspectstring16:9(デフォルト)、1:1, 4:3, 3:4, 9:16。
businessstringスタイルを合わせるためのビジネスの背景情報。
brandstringロゴ用のブランド名。

残高とアカウント

GET/v1/account

残高、実行中のジョブのために確保された金額、利用可能額、月間支出、使用中のキーを返します。スコープ:account:read。

{
  "object": "account",
  "balance": 48.92,
  "available": 45.92,
  "reserved": 3.00,
  "currency": "EUR",
  "spent_this_month": 12.40,
  "key": { "name": "Production server", "mode": "live", "scopes": ["sites:write", "sites:read"] },
  "limits": { "requests_per_minute": 60, "concurrent_site_jobs": 3 }
}

利用状況と料金

GET/v1/usage?from=2026-11-01&to=2026-11-30
GET/v1/pricing

/v1/usageは期間内の呼び出しと操作ごとの金額を返します。/v1/pricingはお客様の通貨での現在の標準料金と最低料金を返します。

成功した呼び出しごとに、必要としたAI処理の実費にFlixyのマージンを掛けた金額(操作ごとの最低料金あり)がかかります。サイトのジョブが始まる前に見積額が残高から確保され、終了時に正確な料金が請求されて残りは解放されます。失敗した呼び出しや拒否された呼び出しが請求されることはありません。

Webhook

開発者スペースでサーバーのhttpsアドレスを追加し、イベントを選択します:job.succeeded、job.failed、balance.low、topup.succeeded。FlixyはJSONイベントを含むPOSTを送信します。10秒以内に2xxステータスで応答してください。配信に失敗した場合は再試行され、失敗が続くアドレスは一時停止されます。

POST /your/webhook
Flixy-Signature: t=1762854395,v1=8f0c3b…

{
  "id": "evt_2b0a…",
  "object": "event",
  "type": "job.succeeded",
  "created_at": "2026-11-11T09:46:35Z",
  "data": { "id": "job_6902…", "type": "site", "status": "succeeded", "site_id": "691589621", "price": 0.72 }
}

署名を検証する

Flixy-Signatureヘッダーにはタイムスタンプtと、Webhookシークレットで計算したv1(t + "." + raw bodyのHMAC-SHA256)が含まれます。5分より古いメッセージは拒否してください。

import crypto from 'node:crypto';

export function verifyFlixy(rawBody, header, secret) {
  const p = Object.fromEntries(header.split(',').map((x) => x.split('=')));
  const sig = crypto.createHmac('sha256', secret).update(`${p.t}.${rawBody}`).digest('hex');
  return Math.abs(Date.now() / 1000 - Number(p.t)) < 300
    && crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(p.v1));
}

請求

  • 開発者スペースで、カードにより10 €から残高をチャージできます。国に応じてVATが加算され、チャージごとに請求書が送付されます。
  • 自動チャージを有効にすると、残高がしきい値を下回ったときに選択した金額が補充されます。
  • アカウントに月間支出上限を、キーごとに1日の上限を設定します。
  • 残高が少なくなると、メールとbalance.low Webhookが届きます。

規約の全文:Flixy API利用規約および利用ポリシー。

セキュリティチェックリスト

  • キーはサーバー上の環境変数またはシークレットマネージャーに保管し、Webページ、モバイルアプリ、コードリポジトリには絶対に含めないでください。
  • アプリケーションごとに1つのキーを作成し、必要なスコープだけを付与してください。
  • ライブキーはサーバーのIPアドレスに制限し、1日の上限を設定してください。
  • すべてのWebhookの署名とタイムスタンプを検証してください。
  • すべてのPOSTで冪等キーを使用してください。
  • 漏えいした可能性があるキーは直ちに削除し、新しいキーを作成してください。
  • AI生成コンテンツは公開前に確認し、法律で求められる場合は、コンテンツがAIによって生成されたことをユーザーに伝えてください。

利用ポリシー

Flixy APIはサイトとそのコンテンツのためのものです。サイトに関係のない一般的な質問、他のソフトウェア向けのコード、Flixyの指示を変更しようとする試み、当社ポリシーに違反するコンテンツ(違法なもの、憎悪的なもの、未成年者が関わる性的コンテンツ、フィッシングやなりすましのページ、スパム、偽のレビュー)は、請求なしで拒否されます。API利用規約および利用ポリシーの全文をお読みください。

連携済みの組織

POST/v1/sites/{id}/transfer

コンソール(「組織」)からFlixy Studioの組織を連携します。Flixy Studioアカウントの所有者がFlixy Studioにサインインした状態で連携を承認し、どちらの側からもいつでも連携を解除できます。連携後は次のようになります。

  • APIは組織のウェブサイトの一覧表示、読み取り、編集、翻訳ができます(sites:read、sites:write)。
  • "destination": "organization"を指定して組織内にウェブサイトを直接作成するか、APIで作成したウェブサイトをPOST /v1/sites/{id}/transfer(無料)で移動して、Flixy Studioからドメインで公開できます。
  • APIによる作業はすべてAPI残高に請求され、組織のクレジットが使われることはありません。
curl "https://flixy.studio/v1/sites?owner=organization" \
  -H "Authorization: Bearer $FLIXY_API_KEY"

curl -X POST https://flixy.studio/v1/sites/691589621/transfer \
  -H "Authorization: Bearer $FLIXY_API_KEY"

組織が連携されていない場合、これらの呼び出しは409 organization_not_linkedを返します。

変更履歴

  • v1 — 2026年11月。最初のバージョン:サイト、編集、翻訳、コンテンツ、ドキュメントの読み取り、画像、ジョブ、Webhook、前払い残高。

連携に影響する可能性のある変更は、少なくとも90日前にメールでお知らせします。