フォーム ID

サーバーから送信する

シークレット API キーを使って、バックエンド、スクリプト、連携サービスから送信データを作成します。

バックエンド、cron ジョブ、連携サービスも、ブラウザーと同じエンドポイントに送信できます。シークレット API キーを付けると、Ikiform はその送信があなたのものだとわかります。

シークレットキーを作成する

  1. ダッシュボードで API keys を開き、secret キーを作成します。
  2. submissions:write スコープを付与します。同じキーで REST API からデータを読み取る場合にのみ、submissions:read と forms:read を追加してください。
  3. キーをコピーします。ik_sk_ で始まり、表示されるのは 1 回だけです。Ikiform はハッシュしか保存しません。

送信データを送る

const response = await fetch("https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${process.env.IKIFORM_SECRET_KEY}`,
    "Idempotency-Key": order.id,
  },
  body: JSON.stringify({ email: order.email, plan: order.plan }),
});

const result = await response.json();
if (!result.ok) throw new Error(`${result.error.code}: ${result.error.message} (${result.request_id})`);

シークレットキーで変わること

チェックキーなしシークレットキーあり
許可ドメインOrigin または Referer と照合スキップ
Ikiform の人間確認オンの場合は必須スキップ
独自の Turnstile キートークンが必要引き続きトークンが必要
レート制限訪問者の IP とフォームごと引き続き適用。サーバーの IP ごと
フィールドのバリデーションとスパムスコア実行実行

別のワークスペースのキー、無効化されたキー、submissions:write のないシークレットキーには 403 forbidden が返ります。不正な形式の Authorization ヘッダーも無視されずに拒否されるので、タイプミスで知らないうちに匿名の送信に格下げされることはありません。

サーバーから送られる送信はすべてサーバーの IP アドレスから届くため、Ikiform の訪問者ごとのレート制限は全訪問者をまとめてカウントします。標準のプリセットは IP とフォームごとに 1 分あたり 5 件までなので、アクセスの多いサイトでは上限に達することがあります。可能ならブラウザーから送信するか、サーバーを経由するフォームでは緩めまたはカスタムのレート制限を選んでください。

公開可能キー

公開可能キー(ik_pub_)はブラウザー用です。送信しかできず、キーに登録したドメインからしか使えません。それ以外のサイトから公開可能キーで送信すると 403 origin_not_allowed になります。人間確認やフォーム自体の許可ドメインはスキップしません。

シークレットキーをブラウザーのコード、モバイルアプリ、公開リポジトリに含めないでください。漏れた場合はダッシュボードで無効化してください。

リトライ

サーバーはリトライするものです。注文 ID など、送信する対象ごとに一定の Idempotency-Key を送ると、リトライしても重複は作られず、最初の応答が再送されます。冪等性を参照してください。