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

# Batch Request

> Fallback for Meta Ads changes no dedicated operation supports: sends raw Graph API calls (POST, DELETE, PUT, or GET for many reads at once) through Meta's batch API, 50 per request

Fallback for Meta Ads changes no dedicated operation supports: sends raw Graph API calls (POST, DELETE, PUT, or GET for many reads at once) through Meta's batch API, 50 per request. Use this only when no dedicated operation supports the change. For a single read, use meta\_ads\_get\_graph\_data. If a focused operation exists, such as meta\_ads\_update\_ad\_status or meta\_ads\_update\_adset\_budget, always use that dedicated operation instead.

| | |
| - | - |
| **App** | Meta Ads |
| **Operation ID** | `meta_ads_batch_request` |
| **Type** | Action |
| **Connection** | `meta_ads` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |
| **Requires approval** | Yes (write operation) |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `account` | DynamicAccount | Yes | - | The Meta Ads account these calls are for. Calls are not limited to it; Meta checks the connection's permissions on every object. |
| `requests` | array of MetaBatchCall or string | Yes | - | Graph API calls to run, as a list or JSON array text (up to 1000 per run). They are sent through Meta's batch API in groups of 50, one group after another, and each call's result is returned. Meta runs the calls within a group in parallel, so a read in the same group as a write may return the value from before the write; Meta also allows only one write per object about every 30 seconds, so put repeat changes to the same object in a later run. Example: \[\{"method": "POST", "relative\_url": "120249701623300208", "body": \{"name": "New ad name"}}] |
| `return_detailed_results` | boolean | No | `False` | If true, returns every call's result and does NOT raise an error when some calls fail. If false (default), raises an error when any call fails. |

### MetaBatchCall

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `method` | enum (`GET`, `POST`, `DELETE`, `PUT`) | Yes | - | HTTP method: GET, POST, DELETE or PUT. DELETE is permanent for most objects; use the status operations to pause or delete ads normally. |
| `relative_url` | string | Yes | - | Graph API path (Graph API v26.0, added for you) without the version or a leading slash, e.g. '120249701623300208' to update an ad, '120249701623300208?fields=name,tracking\_specs' to read one, or 'act\_123/ads' to create. |
| `body` | object or string | No | - | POST/PUT parameters, as an object (nested objects and lists are JSON-encoded for you) or a URL-encoded string, e.g. \{"tracking\_specs": \[\{"action.type": \["offsite\_conversion"], "fb\_pixel": \["705510069587299"]}]}. Updates that replace a list, like tracking\_specs, must include the existing entries to keep. |
| `page_id` | string | No | - | Facebook Page ID whose Page access token to send for this call instead of the user token. Set it when Meta answers that the call needs a Page access token (e.g. Page canvases, lead forms, Page posts). |
| `name` | string | No | - | Optional call name, so a later call can reference its result (e.g. \{result=create-ad:\$.id}). References only work within the same group of 50 calls. |

## Output

**Type**: `Dict`

Returns total\_count, success\_count, failed\_count and results: one entry per call with index, method, relative\_url, status (success, error, not\_executed, not\_sent or unknown), http\_code, Meta's response or error.

**Fields**: `total_count`, `success_count`, `failed_count`, `results`


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