> ## Documentation Index
> Fetch the complete documentation index at: https://docs.utage-system.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 会員サイト作成

> 会員サイトを作成します。作成時に指定できるのはサイト名だけで、その他の設定は既定値で作成されます（アカウント自動発行時仮パスワードは自動で発行、ログインなしでの閲覧は「不可」、検索エンジンに非表示、コースページの検索欄とカテゴリ選択欄は表示、検索する範囲は「レッスン内容含め全て」、トップページ説明文はサイト名の見出し）。設定の変更は会員サイト更新で行います。
作成したサイトは一覧の末尾に追加されます。応答は会員サイト取得と同じ全項目です。

契約内容による会員サイトの件数上限に達している場合は 400（`bad_request`）を返します。


`POST`

```
https://api.utage-system.com/v1/members
```


## OpenAPI

````yaml POST /members
openapi: 3.0.3
info:
  title: UTAGE API
  description: >
    UTAGEのパブリックAPIです。ファネル、メール・LINE配信、会員サイト、イベント・予約、決済、メディアなどのリソースをプログラムから操作できます。


    ## 認証

    すべてのリクエストにAPIキーによるBearer認証が必要です（要素タイプ・LINEメッセージタイプ・配信条件タイプの参照エンドポイントを除く）。


    ```

    Authorization: Bearer {api_key}

    ```


    APIキーはUTAGE管理画面から発行できます。APIキーが未指定・無効・無効化済みの場合、またはアカウントが利用停止中の場合は `401
    Unauthorized`（`error.code` は `unauthorized`）が返されます。


    ## レート制限

    リクエスト数には以下の制限があります。表の値は既定値で、契約内容により異なる場合があります。


    | 分間上限 | 日間上限 |

    |----------|----------|

    | 60リクエスト/分（APIキー単位・暦の1分ごと） | 10,000リクエスト/日（アカウント単位・暦日ごと） |


    レスポンスヘッダーで分間上限の窓が終わる時刻を確認できます（分間の残数と日間の残数はヘッダーに含まれません）。


    | ヘッダー | 説明 |

    |----------|------|

    | X-RateLimit-Limit | 接続元IP単位でAPI全体に掛かる制限の上限値（APIキー単位の分間上限ではありません） |

    | X-RateLimit-Remaining | 接続元IP単位の制限の残りリクエスト数（分間上限の残数ではありません） |

    | X-RateLimit-Reset | APIキー単位の分間上限で、現在の1分間の窓が終わる（次の分が始まる）UNIXタイムスタンプ |


    上限を超えた場合は `429 Too Many Requests`（`error.code` は
    `rate_limit_exceeded`）が返されます。日間上限の超過時は `X-RateLimit-Reset`
    が翌日0:00になります（`X-RateLimit-Limit` / `X-RateLimit-Remaining`
    は超過時も接続元IP単位の値です）。認証不要のエンドポイントと読者作成（`POST
    /accounts/{account_id}/scenarios/{scenario_id}/readers`、`POST
    /accounts/{account_id}/line/friends/{friend_id}/readers`）はレート制限の対象外で、`X-RateLimit-Reset`
    ヘッダーは付きません。


    データを作成するAPIには、これとは別にAPI経由の作成件数の上限があります。超過時は `429` で `total_limit_exceeded` /
    `hourly_limit_exceeded` / `monthly_limit_exceeded`
    が返され、`details.resource_type` に対象のリソース種別が含まれます。


    ## エラーレスポンス

    エラー時は以下の形式で返されます。


    ```json

    {
      "error": {
        "code": "error_code",
        "message": "エラーメッセージ"
      }
    }

    ```


    エラーの種類によっては `error.details`
    に補足情報（バリデーションの項目別エラー、`retry_after`、`resource_type` など）が含まれます。
  version: '1.0'
  contact:
    name: UTAGE サポート
servers:
  - url: https://api.utage-system.com/v1
    description: UTAGE API
security:
  - BearerAuth: []
tags:
  - name: ファネル
    description: ファネルの作成・更新・一覧取得
  - name: ステップ
    description: ファネル内のステップの作成・更新・並び替え・一覧取得
  - name: ページ
    description: ステップ内のページの作成・更新・取得・削除・一覧取得
  - name: 配信アカウント
    description: 配信アカウントの作成・一覧取得
  - name: シナリオ
    description: シナリオの作成・一覧取得
  - name: メディア
    description: 動画・音声・通常メディアの一覧取得・アップロード・名称変更
  - name: 要素タイプ
    description: ファネルページ・レッスン・HTMLメールの要素タイプ定義、LINEメッセージタイプ・配信条件タイプの取得（認証不要）
  - name: ファネル統計
    description: ファネルの集計データ・登録者・登録経路の取得
  - name: 配信メッセージ
    description: 配信メッセージの作成・更新・テスト送信・配信統計、置き換え文字の取得
  - name: 読者
    description: 読者の作成・更新・取得、ラベル・配信履歴・開封/クリック履歴の取得
  - name: LINE
    description: LINE友だち・カスタム送信者・1対1チャット・テンプレート・テンプレートグループ・リッチメニュー・自動応答の操作
  - name: ラベル・共通読者・登録経路
    description: ラベル・共通読者・アクション・登録経路の操作
  - name: 登録経路
    description: ファネルの登録経路・登録経路グループの作成・取得・更新・削除
  - name: ファネルアクション
    description: ファネルアクション（管理画面「アクション設定」）の作成・取得・更新・削除とアクショングループの一覧取得
  - name: 登録フォーム・読者項目
    description: 読者項目と登録フォーム項目の作成・更新・取得・削除・並び替え
  - name: 連携
    description: Googleスプレッドシート連携アカウント・広告連携設定の一覧取得
  - name: 会員サイト
    description: 会員サイトの一覧取得・作成・取得・更新・削除・並び替え
  - name: コース
    description: 会員サイト配下のコースの一覧取得・作成・取得・更新・削除・並び替え
  - name: コースグループ
    description: コースグループの一覧取得・作成・取得・更新・削除
  - name: バンドル
    description: バンドル（受講生に開放するコース・コミュニティグループのセット）の一覧取得・作成・取得・更新・削除・並び替え
  - name: レッスン
    description: 会員サイトのレッスン・レッスングループの操作と、レッスンごと受講状況・受講完了者の取得
  - name: 受講生
    description: 会員サイトの受講生の作成・更新・取得・削除、受講状況・操作履歴の取得、コース・バンドルの登録受講生一覧
  - name: 登録コース・コミュニティ
    description: 受講生のバンドル・単一コース・コミュニティグループへの登録の追加・更新・解除・一覧取得
  - name: コミュニティグループ
    description: 会員サイトのコミュニティグループの一覧取得
  - name: イベント
    description: イベント（セミナー・説明会、個別相談・個別予約）の一覧取得・作成・取得・更新・削除
  - name: 日程
    description: イベントの日程の一覧取得・作成・取得・更新・削除
  - name: 日程設定
    description: 個別相談・個別予約タイプのイベントの日程設定（開催する曜日・時間帯・特定日の開催設定・担当者・日程の表示期間）の取得・更新
  - name: 申込フォーム・申込者項目
    description: イベントの申込フォームの基本項目・申込者項目の取得・更新
  - name: 申込者
    description: イベントの申込者の一覧取得・詳細取得・更新
  - name: イベントグループ
    description: イベントグループ（イベント一覧の「グループ管理」）の作成・更新・一覧取得・削除
  - name: 担当者
    description: 担当者（個別相談・個別予約の「担当者設定」）の作成・更新・一覧取得・削除と連携用リンクの発行・削除
  - name: 商品
    description: 商品の一覧取得・作成・取得・更新・削除・並び替え
  - name: 商品グループ
    description: 商品グループの一覧取得・作成・取得・更新・削除
  - name: 商品詳細
    description: 商品配下の商品詳細（価格・支払方法・決済代行会社・支払回数・購入後の動作・通知設定）の作成・更新・並び替え・取得・削除
  - name: 売上
    description: 売上の一覧・詳細取得、領収書・請求書設定の更新、銀行振込の入金反映、削除、月別・日別売上集計
paths:
  /members:
    post:
      tags:
        - 会員サイト
      summary: 会員サイト作成
      description: >
        会員サイトを作成します。作成時に指定できるのはサイト名だけで、その他の設定は既定値で作成されます（アカウント自動発行時仮パスワードは自動で発行、ログインなしでの閲覧は「不可」、検索エンジンに非表示、コースページの検索欄とカテゴリ選択欄は表示、検索する範囲は「レッスン内容含め全て」、トップページ説明文はサイト名の見出し）。設定の変更は会員サイト更新で行います。

        作成したサイトは一覧の末尾に追加されます。応答は会員サイト取得と同じ全項目です。


        契約内容による会員サイトの件数上限に達している場合は 400（`bad_request`）を返します。
      operationId: createMemberSite
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  maxLength: 255
                  description: サイト名
      responses:
        '201':
          description: 作成された会員サイト
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/MemberSite'
        '400':
          description: 契約内容による件数上限に達している（`bad_request`）
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: bad_request
                  message: これ以上サイトを追加することができません
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/ResourceLimitExceeded'
components:
  schemas:
    MemberSite:
      type: object
      description: 会員サイト（設定を含む全項目）
      properties:
        id:
          type: string
          description: 会員サイトID
        name:
          type: string
          description: サイト名
        memo:
          type: string
          nullable: true
          description: メモ（管理画面でのみ表示）
        copyright:
          type: string
          nullable: true
          description: Copyright表記（フッター）
        temporary_password:
          type: string
          description: アカウント自動発行時仮パスワード
        days_to_password_change:
          type: integer
          nullable: true
          description: >-
            新規ユーザーへのパスワード変更の強制（初めてログインしてから何日後にパスワード変更を強制するか。0 は初回ログイン直後）。null
            は強制しない
        js_head:
          type: string
          nullable: true
          description: headタグの最後に挿入するJavaScript（サイト共通）
        js_body_top:
          type: string
          nullable: true
          description: bodyタグの最初に挿入するJavaScript（サイト共通）
        js_body:
          type: string
          nullable: true
          description: bodyタグの最後に挿入するJavaScript（サイト共通）
        login_type:
          type: string
          enum:
            - require
            - optional
            - none
          description: >-
            ログインなしでの閲覧。require: 不可（全てのコンテンツでログインが必須）/ optional:
            可（指定したコンテンツのみ閲覧可能）/ none: 可（全てのコンテンツが閲覧可能）。コース・レッスンの開放日・締め切りに
            `reader_date` を指定できるのは optional / none のときだけです
        use_bookmark:
          type: boolean
          description: ブックマーク機能を利用するか
        is_no_index:
          type: boolean
          description: 検索エンジンへの表示（true は検索エンジンに非表示）
        show_link_to_community:
          type: boolean
          description: コミュニティへのリンクを表示するか
        login_background:
          type: string
          nullable: true
          description: ログインページ全体の背景色（`#RRGGBB`）
        login_background_center:
          type: string
          nullable: true
          description: ログインページ中央枠内の背景色（`#RRGGBB`）
        login_use_logo:
          type: boolean
          description: ログインページでサイトロゴ画像を利用するか
        login_logo_url:
          type: string
          nullable: true
          description: ログインページのロゴ画像URL
        login_footer_use_menu:
          type: boolean
          description: ログインページのフッターメニューを利用するか
        login_footer_menu_items:
          type: array
          description: ログインページのフッターメニュー項目（表示順）
          items:
            $ref: '#/components/schemas/MemberSiteMenuItem'
        use_description:
          type: boolean
          description: コースページにトップページ説明文を表示するか
        description:
          type: string
          nullable: true
          description: トップページ説明文（HTML）
        use_news:
          type: boolean
          description: コースページにお知らせを表示するか
        show_course_search:
          type: boolean
          description: コースページに検索欄を表示するか
        show_course_category:
          type: boolean
          description: コースページにカテゴリ選択欄を表示するか
        search_type:
          type: string
          enum:
            - all
            - course_name
          description: '検索する範囲。all: レッスン内容含め全て / course_name: コース名のみ'
        course_display_type:
          type: string
          enum:
            - all
            - group
            - only_group
          description: >-
            コースの表示形式。all: すべてのコースを一覧で表示 / group: グループごとにコースを表示 / only_group:
            グループを選択後コースを表示
        course_name_font_size:
          type: string
          nullable: true
          description: コース名の文字サイズ（`16px`〜`26px`。null はデフォルト）
        course_background:
          type: string
          nullable: true
          description: コースページの背景色（`#RRGGBB`）
        course_header_background:
          type: string
          nullable: true
          description: ヘッダー色（`#RRGGBB`）
        course_header_color:
          type: string
          nullable: true
          description: ヘッダー文字色（`#RRGGBB`）
        course_header_use_logo:
          type: boolean
          description: ヘッダーにサイトロゴ画像を利用するか
        course_header_logo_url:
          type: string
          nullable: true
          description: ヘッダーのロゴ画像URL
        course_header_use_menu:
          type: boolean
          description: ヘッダーメニューを利用するか
        course_header_menu_items:
          type: array
          description: ヘッダーメニュー項目（表示順）
          items:
            $ref: '#/components/schemas/MemberSiteMenuItem'
        course_footer_background:
          type: string
          nullable: true
          description: フッター色（`#RRGGBB`）
        course_footer_color:
          type: string
          nullable: true
          description: フッター文字色（`#RRGGBB`）
        course_footer_use_menu:
          type: boolean
          description: フッターメニューを利用するか
        course_footer_menu_items:
          type: array
          description: フッターメニュー項目（表示順）
          items:
            $ref: '#/components/schemas/MemberSiteMenuItem'
        lesson_complete_type:
          type: string
          enum:
            - stay
            - go_next
          description: '完了ボタンを押した後の動作。stay: 何もしない / go_next: 次のレッスンページへ遷移'
        lesson_show_all_lessons:
          type: boolean
          description: 'レッスン一覧の表示形式。false: 同一グループのレッスンのみ表示 / true: 全てのレッスンを表示'
        show_lesson_search:
          type: boolean
          description: レッスンページに検索欄を表示するか
        order:
          type: integer
          description: 表示順（0 始まり）
        created_at:
          type: string
          nullable: true
          description: 作成日時（Y-m-d H:i:s）
        updated_at:
          type: string
          nullable: true
          description: 更新日時（Y-m-d H:i:s）
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: エラーコード
            message:
              type: string
              description: エラーメッセージ
            details:
              type: object
              nullable: true
              description: >-
                エラーの補足情報（`retry_after` /
                `resource_type`、項目別のエラーメッセージ等）。エラー種別により含まれる場合があります。`422`
                の項目別エラーの値は通常はメッセージの配列ですが、会員サイト更新・コース更新の変更時だけ行う検証では文字列です。
    MemberSiteMenuItem:
      type: object
      description: メニュー項目（ログインページのフッターメニュー、コースページのヘッダーメニュー・フッターメニュー）
      properties:
        type:
          type: string
          enum:
            - page
            - url
            - news
          description: '種類。page: 固定ページ / url: URL / news: お知らせ一覧'
        page_id:
          type: string
          nullable: true
          description: >-
            固定ページID（`type` が `page` のとき。リンク先の固定ページが削除されている場合は null）。それ以外の種類では
            null
        url:
          type: string
          nullable: true
          description: リンク先URL（`type` が `url` のとき）。それ以外の種類では null
        text:
          type: string
          description: メニュー表記
  responses:
    Unauthorized:
      description: 認証エラー。APIキーが未指定・無効・無効化済み、またはアカウントが利用停止中。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: unauthorized
              message: APIキーが無効です
    ValidationError:
      description: >-
        バリデーションエラー（`error.code` は `validation_error`）。`details`
        に項目ごとのエラーメッセージが入ります（項目に紐づかない検証では `details` なし）。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: validation_error
              message: 入力内容に誤りがあります
              details:
                name:
                  - 管理用タイトルは必須です
    ResourceLimitExceeded:
      description: >-
        作成上限超過。`error.code` は `total_limit_exceeded`（累計）/
        `monthly_limit_exceeded`（月間）のいずれかで、`hourly_limit_exceeded`（1時間）は読者作成（`reader`）と受講生作成（`members_user`）だけで返ります。`details.resource_type`
        に対象リソース、月間上限のときは `details.retry_after` に上限判定が再計算される日時（Y-m-d
        H:i:s）を含みます。同じ `429`
        で、分間・日間のレート制限超過（`rate_limit_exceeded`。`X-RateLimit-Reset`
        の時刻以降に再試行）も返ります。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: monthly_limit_exceeded
              message: 月間の作成上限に達しました
              details:
                resource_type: message
                retry_after: '2026-11-01 00:05:00'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: APIキーをBearerトークンとして指定

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.