events/create-venue creates a venue. Only a name is required; the address fields are all optional, and it defaults to draft.
It goes through the calendar’s own creation path, so the address fields land in the meta keys the calendar actually reads.
At a glance
| Ability | events/create-venue |
| Toolset | The Events Calendar — toolset/events-calendar |
| Group | The Events Calendar › Venues |
| Requires | The Events Calendar, active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Not idempotent — each call changes the row set, so re-running is not a no-op |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
Venue fields are stored under prefixed meta keys the calendar defines, not under the plain names they are given in the admin form. Writing city as post meta does nothing useful; the calendar is looking somewhere else entirely.
Using tribe_venues() sidesteps the question. The same function the admin screen calls, the same keys written, the same hooks fired — so anything else on the site that reacts to a new venue reacts to this one.
Draft by default, for the same reason as events: a venue created by an assistant is usually one half of a task, and it should be looked at before it is linked to a public event.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
title | string | Yes | The venue name. |
status | string | No — defaults to draft | Post status: draft, publish, pending or private. |
address | string | No | Street address. |
city | string | No | City. |
state | string | No | State or province. |
zip | string | No | Postal code. |
country | string | No | Country. |
phone | string | No | Phone number. |
website | string | No | Website URL. |
What comes back
| Name | Type | What it is |
|---|---|---|
venue | object | The created venue, as events/get-venue would return it. |
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:
Add a venue called “Temple Quarter Studio” at 14 Avon Street, Bristol.
It resolves to one call:
{
"ability": "events/create-venue",
"parameters": {
"title": "Temple Quarter Studio",
"address": "14 Avon Street",
"city": "Bristol",
"country": "United Kingdom",
"status": "publish"
}
}Worth knowing
- Search with
events/list-venuesfirst. Duplicate venues are the most common mess on an established calendar, and they are tedious to unpick afterwards. - Not idempotent — two calls make two venues.
- A venue must be published before a published event linking to it will display its details to visitors.
Related abilities
- List Venues — check it does not already exist
- Create Event — use the new ID
- Update Venue — fill in the rest later
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category