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

# Create a Report Schedule

export const ParamList = ({items = [], is_child = false}) => {
  return items.map(item => {
    const field_props = {
      id: Math.random().toString(),
      body: item.name,
      name: item.name,
      type: item.type,
      required: item.required
    };
    const enums = item.enums || [];
    const items = item.items || [];
    const has_items = items?.length > 0;
    const has_enums = enums?.length > 0;
    const should_default_open = item.defaultOpen || false;
    const render_child_item = () => {
      const child_props = {
        title: has_enums ? "Possible enum values" : "properties"
      };
      if (should_default_open) child_props.defaultOpen = true;
      const has_inline_enums = has_enums && enums.every(enum_item => typeof enum_item === 'string') && enums.map((enum_item, idx) => {
        const is_last = idx === enums.length - 1;
        const is_2nd_to_last = idx === enums.length - 2;
        return <>
            <code>{enum_item}</code>
            {is_last && ''}
            {is_2nd_to_last && ' or '}
            {!is_last && !is_2nd_to_last && ', '}
          </>;
      });
      const enum_list = has_enums && !has_inline_enums && <Accordion {...child_props}>
          {enums.map((enum_item, index) => <div key={`enum-${index}`}>
              <code>{enum_item.name}</code>
              <br />
              <p>{enum_item.description}</p>
            </div>)}
        </Accordion>;
      const item_list = has_items && <Expandable {...child_props}>
          <ParamList items={items || []} is_child />
        </Expandable>;
      return <>
          <p>
            {item.description}
            {has_inline_enums && [has_inline_enums.length > 1 ? ' One of ' : ' Must be ', ...has_inline_enums]}
          </p>

          {enum_list}
          {item_list}
        </>;
    };
    return is_child ? <ResponseField {...field_props}>{render_child_item()}</ResponseField> : <ParamField {...field_props}>{render_child_item()}</ParamField>;
  });
};

Creates a new Report Schedule. Once created, the first run is queued
immediately for the next scheduled date, and reports will continue to
be generated and delivered on the cadence defined by the `cron` expression.

## Body

<ParamList
  items={[
{
name: 'types',
type: 'string[]',
required: true,
description: (
  <>
    The types of Report to generate on this schedule.
    See <a href="/2026-03-30/reference/reports/overview#report-types">Report Types.</a>
  </>
),
},
{
name: 'delivery_methods',
type: 'string[]',
required: true,
description: (
  <>
    How scheduled reports are delivered. Can be <code>email</code>, <code>webhook</code>, or both.
  </>
),
},
{
name: 'recipients',
type: 'string[]',
required: false,
description: (
  <>
    The email addresses that emailed reports should be sent to. <strong>Required if <code>delivery_methods</code> includes <code>email</code></strong>.
  </>
),
},
{
name: 'cron',
type: 'string',
required: false,
description: (
  <>
    The cadence at which the schedule should run, provided as a <a href="https://docs.gitlab.com/topics/cron/">Cron string</a>.
    Defaults to <code>0 8 * * 1-5</code> (weekdays at 8:00am CST).
  </>
),
},
]}
/>

## Returns

Returns the newly created Report Schedule object.

<RequestExample>
  ```bash cURL theme={null}
  curl https://production.methodfi.com/report_schedules \
    -X POST \
    -H "Method-Version: 2026-03-30" \
    -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
    -H "Content-Type: application/json" \
    -d '{
      "types": ["ach.pull.nightly"],
      "delivery_methods": ["webhook", "email"],
      "recipients": ["example@methodfi.com"],
      "cron": "0 8 * * *"
    }'
  ```

  ```javascript Node.js theme={null}
  const reportSchedule = await method.reportSchedules.create({
    types: ['ach.pull.nightly'],
    delivery_methods: ['webhook', 'email'],
    recipients: ['example@methodfi.com'],
    cron: '0 8 * * *',
  });
  ```

  ```python Python theme={null}
  report_schedule = method.report_schedules.create({
    'types': ['ach.pull.nightly'],
    'delivery_methods': ['webhook', 'email'],
    'recipients': ['example@methodfi.com'],
    'cron': '0 8 * * *'
  })
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "id": "rpt_sch_Gqjh8pzeUfzH6",
    "types": [
      "ach.pull.nightly"
    ],
    "delivery_methods": [
      "webhook",
      "email"
    ],
    "recipients": [
      "example@methodfi.com"
    ],
    "cron": "0 8 * * *",
    "status": "active",
    "created_at": "2026-06-01T13:21:10.386Z",
    "updated_at": "2026-06-01T13:21:10.386Z"
  }
  ```
</ResponseExample>
