Skip to content
AdCrunch
Esc
↑↓navigate↵open⌘Jpreview
On this page

meta_update_schedule

Change the start time or the end time of a Meta ad set, or remove its end, with a check of the end time.

Ask to move the start time or the end time of an ad set on Meta, or to let it run with no end. AdCrunch refuses an end time that is not in the future, and no end on an ad set with a lifetime budget, before the change reaches Meta. It also checks that the ad set is in the ad account of the advertiser, and it keeps the start time and the end time that the change replaces.

Make the FR BE 25-54 ad set run until the end of December.

The agent calls meta_update_schedule, then get_mutation_status, and you see whether Meta applied the new end time. A later end time adds days of spend. An active ad set that has ended delivers again when it gets a new end time, and the result says so. Change what runs on Meta lists each guardrail.

Reference

Available on: Meta

Change when a Meta ad set delivers on a live ad account: its start time, its end time, or both. An ad set only: a campaign has no schedule that this tool can change. Times are ISO 8601 timestamps, for example 2026-12-31T23:59:00+01:00. The end time must be in the future. Send endTime: null for no end. An ad set with a lifetime budget must keep an end time. Meta gets startTime as you send it, also on an ad set that has started. A later end time adds days of spend, so the total spend of a daily budget increases. With no end, the ad set spends until you pause it, up to 7 times its daily budget in one week. With a lifetime budget, the total spend stays within the lifetime budget. An ACTIVE ad set that has ended delivers again when it gets a new end time or no end, with no status change. To change a daily budget to a lifetime budget, first set an end time with meta_update_schedule, then set the lifetime budget. To change a lifetime budget to a daily budget, first set the daily budget, then remove the end time with meta_update_schedule. Meta refuses a lifetime budget with no end time. Runs asynchronously: returns a workflowId immediately — call get_mutation_status with it to see whether the change succeeded, and to get the start time and the end time that it replaced as priorValue. When an ACTIVE ad set that had ended delivers again, the result carries deliveryStartsAgain: true. Rejected if the ad set is not in this ad account.

Input

Argument Type Required Description
advertiserId string yes Advertiser account ID (acc_<id>). Must belong to the active organization.
endTime string or null no When delivery stops, as an ISO 8601 timestamp in the future. Send null for no end. Omit it to keep the end time.
id string yes The Meta object ID of the ad set, digits only.
startTime string no When delivery starts, as an ISO 8601 timestamp. Omit it to keep the start time.

Output

A successful call returns this object in structuredContent.

Field Type Always present Description
workflowId string yes The id of the change. The change has not reached Meta yet. Give this id to get_mutation_status to find out how the change ended.

Failure codes

A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.

  • not_found
  • provider_not_connected
  • missing_write_access
  • forbidden
  • invalid_request
  • internal_error

Scope

The token must hold mutation:write. Auth & scopes lists each scope.

Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

  • Writes. The tool can change data.
  • Destructive. The tool can make a change that you cannot undo. A client can ask you to confirm before it calls the tool.
  • Not idempotent. A second call with the same arguments can change more.
  • Open world. The tool reaches a system outside AdCrunch, such as an ad platform.

Example

The arguments:

{
  "advertiserId": "acc_1485443900032333",
  "endTime": "2026-12-31T23:59:00+01:00",
  "id": "120215678901234890"
}

The result, in structuredContent:

{
  "workflowId": "3f9c2b7e-8a41-4d6e-9b05-c1e7a2d4f860"
}

Was this page helpful?