---
title: "Create a Multi FileFeed"
method: POST
path: "/v0/multi-file-feeds"
tags: ["Multi FileFeeds"]
---

# Create a Multi FileFeed

`POST /v0/multi-file-feeds`

Creates a new Multi FileFeed with the specified templates.
At least one template must be provided. Template keys must be unique
within the request.

Optional parameters allow configuring a source (SFTP or S3), destination (SFTP or S3),
event webhook, post-validation transform, and custom metadata at creation time.

If `folder_id` is not provided, the Multi FileFeed is placed in the
organization's default Multi FileFeed folder.

## Request body

- object
  - `name` string, required — The name for the new Multi FileFeed. Must be unique within the organization.
  - `folder_id` integer — ID of the folder to place this Multi FileFeed in. If not provided, the default Multi FileFeed folder is used.
  - `workflow_templates` WorkflowTemplateInput[], required — List of templates to associate with the Multi FileFeed. At least one is required. Template keys must be unique.
    - union — A template to associate with a Multi FileFeed. At least one of `template_key` or `template_id` must be provided. If both are provided, they must refer to the same template; otherwise the request is rejected with a validation error.
      - object
        - `template_key` string, required — The unique key of the template to associate
        - `template_id` integer — The numeric ID of the template to associate
        - `is_required` boolean, required — Whether this template is required for the Multi FileFeed
      - object
        - `template_key` string — The unique key of the template to associate
        - `template_id` integer, required — The numeric ID of the template to associate
        - `is_required` boolean, required — Whether this template is required for the Multi FileFeed
  - `source` union — Configuration for the source connection (e.g. SFTP or S3). S3 sources must be enabled for the organization.
    - SourceSftp
      - `type` 'sftp'
      - `data` object
        - `sftp_account_id` integer, required
        - `path` string, path, required
        - `options` object
          - `schedule` object
            - `frequency` 'hourly' | 'daily'
            - `hour_utc` integer — Hour in UTC for daily frequency
            - `minute_utc` integer — Minute offset within the hour (must be a multiple of 5, 0-55). Defaults to 0 (top of the hour).
    - SourceS3
      - `type` 's3'
      - `data` object
        - `s3_account_id` integer, required
        - `bucket` string, required
        - `prefix` string, nullable — Key prefix within the bucket to scope listing/pulling to. Defaults to empty (whole bucket).
        - `file_filter` string, nullable — Optional regular expression applied to object keys. When set, only matching keys are ingested. Note: changing `file_filter` does not retroactively re-ingest objects that already passed the cursor watermark; only newly listed objects are evaluated against the new pattern. Changing `bucket` or `prefix`, by contrast, resets the cursor and dedupe ledger because they reference a different object namespace.
        - `options` object
          - `schedule` object
            - `frequency` 'hourly' | 'daily'
            - `hour_utc` integer — Hour in UTC for daily frequency
            - `minute_utc` integer — Minute offset within the hour (must be a multiple of 5, 0-55). Defaults to 0 (top of the hour).
  - `destination` union — Configuration for the destination connection (e.g. SFTP or S3). S3 destinations must be enabled for the organization.
    - DestinationSftp
      - `type` 'sftp'
      - `data` object
        - `sftp_account_id` integer, required
        - `path` string, path, required
    - DestinationS3
      - `type` 's3'
      - `data` object
        - `s3_account_id` integer, required
        - `bucket` string, required
        - `prefix` string, nullable — Key prefix within the bucket. Output files are written to `{prefix}/{file_name}`. Defaults to empty (write to bucket root).
  - `multi_filefeed_event_webhook_key` string — Key of an existing event webhook to attach to this Multi FileFeed
  - `post_validation_transform_key` string, nullable — Key of an existing post-validation transform to apply
  - `custom_metadata` object, nullable — JSON object with custom metadata to associate with the Multi FileFeed

## Response `200`

Successful response

- MultiFileFeed
  - `id` integer
  - `name` string
  - `folder_id` integer — ID of the folder containing this Multi FileFeed
  - `custom_metadata` object
  - `templates` MultiFileFeedTemplate[]
    - `name` string
    - `description` string
    - `key` string
    - `is_required` boolean — Whether this template is required for the Multi FileFeed
  - `source` union[]
    - union
      - SourceSftp
        - `type` 'sftp'
        - `data` object
          - `sftp_account_id` integer, required
          - `path` string, path, required
          - `options` object
            - `schedule` object
              - …
      - SourceS3
        - `type` 's3'
        - `data` object
          - `s3_account_id` integer, required
          - `bucket` string, required
          - `prefix` string, nullable — Key prefix within the bucket to scope listing/pulling to. Defaults to empty (whole bucket).
          - `file_filter` string, nullable — Optional regular expression applied to object keys. When set, only matching keys are ingested. Note: changing `file_filter` does not retroactively re-ingest objects that already passed the cursor watermark; only newly listed objects are evaluated against the new pattern. Changing `bucket` or `prefix`, by contrast, resets the cursor and dedupe ledger because they reference a different object namespace.
          - `options` object
            - `schedule` object
              - …
  - `destination` union[]
    - union
      - DestinationSftp
        - `type` 'sftp'
        - `data` object
          - `sftp_account_id` integer, required
          - `path` string, path, required
      - DestinationS3
        - `type` 's3'
        - `data` object
          - `s3_account_id` integer, required
          - `bucket` string, required
          - `prefix` string, nullable — Key prefix within the bucket. Output files are written to `{prefix}/{file_name}`. Defaults to empty (write to bucket root).
  - `event_webhooks` EventWebhook[]
    - `webhook_key` string — Unique key identifying the webhook
    - `events` string[] — List of event types the webhook is subscribed to
  - `post_validation_transform_key` string, nullable — Key of the post-validation transform applied to this Multi FileFeed

## Other responses

- `400` — Bad request (e.g. missing name, empty templates, duplicate template keys, invalid webhook key)
- `403` — Forbidden (the required feature is not enabled for this organization)

---

[API](https://skmtc.net/oneschema/apis/templates.md) · [All operations](https://skmtc.net/oneschema/apis/templates/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneschema/templates/revisions/40674aa6d4d9/schema)
