Knowing a block exists is not enough to fill it in. You need the field names, and for anything nested you need the shape underneath them.
blocks/get-acf-block-fields returns the fields behind one ACF block: name, key, type, label, whether it is required and its default — with repeaters and groups nesting their sub-fields, and flexible-content fields nesting one entry per layout.
At a glance
| Ability | blocks/get-acf-block-fields |
| Toolset | Advanced Custom Fields — toolset/acf |
| Group | ACF Blocks |
| Requires | Advanced Custom Fields Pro |
| Capability | manage_options |
| Safety | Read-only — changes nothing |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
The whole shape comes back in one call, which matters because a block’s data payload has to match it exactly. A nested field guessed one level wrong is written as a stray key and then ignored by the block.
Required flags and defaults are included, so a payload can be assembled without a trial insert to discover what the block will reject.
Call this before blocks/insert-acf-block or blocks/update-acf-block-data.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
name | string | Yes | Block name, with or without the acf/ prefix. |
What comes back
| Name | Type | What it is |
|---|---|---|
name | string | The block, as registered. |
fields | array | The field tree: name, key, type, label, required and default, with sub-fields nested. |
count | integer | How many top-level fields the block has. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
What fields does the acf/testimonial block take?
It resolves to one call:
{
"ability": "blocks/get-acf-block-fields",
"parameters": {
"name": "testimonial"
}
}Worth knowing
- Field names, not labels, are what a data payload uses. The label is for humans.
- For flexible-content fields the entries are per layout — the layout name is part of the path to its sub-fields.
- Requires ACF Pro.
Related abilities
- List ACF Blocks — find the block name first
- Insert ACF Block — use the shape you just read
- Update ACF Block Data — patch a block already in a post
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category