openapi: 3.0.4 info: title: The Events Calendar REST API version: 1.0.0 description: The Events Calendar REST API allows accessing upcoming events information easily and conveniently. contact: name: The Events Calendar email: support@theeventscalendar.com x-api-evangelist-note: 'Published verbatim by the site itself at https://impossiblemetals.com/wp-json/tec/v1/docs (HTTP 200, application/json, 2026-08-23). Content is unchanged; only the serialization was converted from JSON to YAML. The verbatim JSON is kept at openapi/_original/impossible-metals-tec-v1-openapi.json. OWNERSHIP: servers[] names https://impossiblemetals.com/wp-json/tec/v1 — Impossible Metals'' own host, describing Impossible Metals'' own event/venue/organizer/series records. info.contact names The Events Calendar (StellarWP) because the plugin, not the company, authors the description document; this is the self-hosted/templated-server case, not a sibling-product mix-up. NOTE: every /tec/v1 route answered HTTP 400 missing_experimental_endpoint_acknowledgement on an anonymous GET on 2026-08-23 — the endpoints are flagged experimental and require an acknowledgement header, so the contract is published but the surface is not anonymously callable as written.' x-captured-on: '2026-08-23' tags: - name: Events description: These operations are introduced by The Events Calendar. - name: Events Pro description: These operations are introduced by Events Pro. - name: Common description: These operations are introduced by the Common library. components: schemas: TEC_Post_Entity: type: object title: TEC Post Entity description: A TEC post object as returned by the REST API properties: date: description: The date the entity was published, in the site's timezone. In RFC3339 format. nullable: true type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::\d{2})?)?$ example: '2025-06-04T23:36:56+01:00' date_gmt: description: The date the entity was published, as GMT. In RFC3339 format. nullable: true type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::\d{2})?)?$ example: '2025-06-04T22:36:56Z' guid: description: The globally unique identifier for the entity. nullable: true readOnly: true type: object properties: rendered: description: The globally unique identifier for the entity. type: string format: uri example: https://example.com/?p=12345 id: description: Unique identifier for the entity. readOnly: true type: integer example: 12345 link: description: URL to the entity. readOnly: true type: string format: uri example: https://example.com/my-awesome-title modified: description: The date the entity was last modified, in the site's timezone. In RFC3339 format. readOnly: true type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::\d{2})?)?$ example: '2025-06-05T19:06:56-03:30' modified_gmt: description: The date the entity was last modified, as GMT. In RFC3339 format. readOnly: true type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::\d{2})?)?$ example: '2025-06-05T22:36:56Z' slug: description: An alphanumeric identifier for the entity unique to its type type: string example: my-awesome-title status: description: A named status for the entity. type: string default: publish enum: - publish - pending - draft - future - private example: publish permalink_template: description: Permalink template for the entity. readOnly: true type: string example: https://example.com/sample/ generated_slug: description: Slug automatically generated from the entity title readOnly: true type: string example: my-awesome-title title: description: The globally unique identifier for the entity. type: object properties: rendered: description: HTML title for the entity, transformed for display type: string example: My Awesome Title content: description: The content for the entity. type: object properties: rendered: description: HTML content for the entity, transformed for display type: string example: This is the content... protected: description: Whether the content is protected with a password type: boolean example: false excerpt: description: The excerpt for the entity. type: object properties: rendered: description: HTML excerpt for the entity, transformed for display type: string example: This is the excerpt... protected: description: Whether the excerpt is protected with a password type: boolean example: false author: description: The ID for the author of the entity. type: integer example: 1 featured_media: description: The ID of the featured media for the entity. type: integer example: 123 comment_status: description: Whether or not comments are open on the entity. type: string default: open enum: - open - closed example: open ping_status: description: Whether or not the entity can be pinged type: string default: open enum: - open - closed example: open format: description: The format for the entity. type: string default: standard enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio example: standard sticky: description: Whether or not the entity should be treated as sticky type: boolean default: false example: false template: description: The theme file to use to display the entity. type: string example: templates-full.php tags: description: The terms assigned to the entity in the post_tag taxonomy type: array items: type: integer uniqueItems: true example: - 2 - 8 - 15 TEC_Post_Entity_Request_Body: title: TEC Post Entity Request Body description: A TEC post object as expected by the REST API type: object properties: date: description: The date the entity was published, in the site's timezone. In RFC3339 format. nullable: true type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::\d{2})?)?$ example: '2025-06-04T23:36:56+01:00' date_gmt: description: The date the entity was published, as GMT. In RFC3339 format. nullable: true type: string format: date-time pattern: ^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::\d{2})?)?$ example: '2025-06-04T22:36:56Z' slug: description: An alphanumeric identifier for the entity unique to its type type: string example: my-awesome-title status: description: A named status for the entity. type: string default: publish enum: - publish - pending - draft - future - private example: publish title: description: HTML title for the entity, transformed for display type: string example: My Awesome Title content: description: HTML content for the entity, transformed for display type: string example: This is the content... excerpt: description: HTML excerpt for the entity, transformed for display type: string example: This is the excerpt... author: description: The ID for the author of the entity. type: integer example: 1 featured_media: description: The ID of the featured media for the entity. type: integer example: 123 comment_status: description: Whether or not comments are open on the entity. type: string default: open enum: - open - closed example: open ping_status: description: Whether or not the entity can be pinged type: string default: open enum: - open - closed example: open format: description: The format for the entity. type: string default: standard enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio example: standard sticky: description: Whether or not the entity should be treated as sticky type: boolean default: false example: false template: description: The theme file to use to display the entity. type: string example: templates-full.php tags: description: The terms assigned to the entity in the post_tag taxonomy type: array items: type: integer uniqueItems: true example: - 2 - 8 - 15 Event: allOf: - $ref: '#/components/schemas/TEC_Post_Entity' - type: object properties: tribe_events_cat: description: The terms assigned to the entity in the tribe_events_cat taxonomy type: array items: type: integer uniqueItems: true example: - 1 - 5 - 12 start_date: description: The start date of the event type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 12:00:00' start_date_utc: description: The start date of the event in UTC type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 09:00:00' end_date: description: The end date of the event type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 16:00:00' end_date_utc: description: The end date of the event in UTC type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 13:00:00' dates: $ref: '#/components/schemas/DateDetails' timezone: description: The timezone of the event type: string example: Europe/Athens duration: description: The duration of the event in seconds type: integer example: 14400 multiday: description: Whether the event is multiday type: boolean example: false is_past: description: Whether the event is in the past type: boolean example: false is_now: description: Whether the event is happening now type: boolean example: false all_day: description: Whether the event is all day type: boolean example: false starts_this_week: description: Whether the event starts this week nullable: true type: boolean example: false ends_this_week: description: Whether the event ends this week nullable: true type: boolean example: false happens_this_week: description: Whether the event happens this week nullable: true type: boolean example: false this_week_duration: description: The duration of the event in the current week nullable: true type: integer example: 3600 displays_on: description: The days of the week that the event displays on type: array items: type: string format: date pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ uniqueItems: true example: - '2025-06-05' featured: description: Whether the event is featured type: boolean example: false sticky: description: Whether the event is sticky type: boolean example: false cost: description: The cost of the event type: string example: $10 organizer_names: description: The names of the organizers of the event type: array items: type: string uniqueItems: true example: - John Doe - Jane Doe organizers: description: The organizers of the event type: array items: $ref: '#/components/schemas/Organizer' venues: description: The venues of the event type: array items: $ref: '#/components/schemas/Venue' ticketed: description: Array of ticket providers or false if the event is not ticketed. type: array items: type: string uniqueItems: true example: - tc schedule_details: description: The schedule details of the event type: string example: 10:00 - 12:00 short_schedule_details: description: The schedule details of the event in HTML type: string example:

10:00 - 12:00

- type: object title: 'Pro: Event' description: The event definition, with Pro-specific properties properties: occurrence_id: description: The occurrence ID of the event, if the event is a recurring event occurrence type: integer example: -126 is_virtual: description: Whether the event is virtual type: boolean example: false video_source: description: The video source for the virtual event nullable: true type: string example: zoom virtual_url: description: The URL for the virtual event nullable: true type: string format: uri example: https://zoom.us/j/123456789 Event_Request_Body: allOf: - $ref: '#/components/schemas/TEC_Post_Entity_Request_Body' - type: object properties: tribe_events_cat: description: The terms assigned to the entity in the tribe_events_cat taxonomy type: array items: type: integer uniqueItems: true example: - 1 - 5 - 12 start_date: description: The start date of the event type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 12:00:00' start_date_utc: description: The start date of the event in UTC type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 09:00:00' end_date: description: The end date of the event type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 16:00:00' end_date_utc: description: The end date of the event in UTC type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$ example: '2025-06-05 13:00:00' timezone: description: The timezone of the event type: string example: Europe/Athens duration: description: The duration of the event in seconds type: integer example: 14400 all_day: description: Whether the event is all day type: boolean example: false featured: description: Whether the event is featured type: boolean example: false sticky: description: Whether the event is sticky type: boolean example: false cost: description: The cost of the event type: string example: $10 organizers: description: The organizers of the event type: array items: type: integer uniqueItems: true example: - 1 - 2 venues: description: The venues of the event type: array items: type: integer uniqueItems: true example: - 7 - type: object title: 'Pro: Event Request Body' description: The request body for the event endpoint, with Pro-specific properties properties: virtual: description: Whether the event is virtual type: boolean example: false lat: description: The latitude of the event type: number example: 37.774929 lng: description: The longitude of the event type: number example: -122.419416 Organizer_Request_Body: allOf: - $ref: '#/components/schemas/TEC_Post_Entity_Request_Body' - type: object title: Organizer Request Body description: The request body for the organizer endpoint properties: phone: description: The organizer's phone number type: string format: tel example: 123-456-7890 website: description: The organizer's website type: string format: uri example: https://example.com email: description: The organizer's email address type: string format: email example: example@theeventscalendar.com Venue_Request_Body: allOf: - $ref: '#/components/schemas/TEC_Post_Entity_Request_Body' - type: object properties: address: description: The venue address type: string example: Example country: description: The venue country type: string example: Example city: description: The venue city type: string example: Example state_province: description: The venue state/province type: string example: Example state: description: The venue state type: string example: Example province: description: The venue province type: string example: Example zip: description: The venue zip code type: string example: Example phone: description: The venue phone number type: string example: Example website: description: The venue website type: string format: uri example: https://example.com - type: object title: 'Pro: Venue Request Body' description: The request body for the venue endpoint, with Pro-specific properties properties: lat: description: The latitude of the venue type: number example: 37.774929 lng: description: The longitude of the venue type: number example: -122.419416 Organizer: allOf: - $ref: '#/components/schemas/TEC_Post_Entity' - type: object title: Organizer description: An organizer properties: phone: description: The organizer's phone number type: string format: tel example: 123-456-7890 website: description: The organizer's website type: string format: uri example: https://example.com email: description: The organizer's email address type: string format: email example: example@theeventscalendar.com Series: allOf: - $ref: '#/components/schemas/TEC_Post_Entity' - type: object description: A series title: Series Venue: allOf: - $ref: '#/components/schemas/TEC_Post_Entity' - title: Venue description: A venue type: object properties: address: description: The venue address type: string example: Example country: description: The venue country type: string example: Example city: description: The venue city type: string example: Example state_province: description: The venue state/province type: string example: Example state: description: The venue state type: string example: Example province: description: The venue province type: string example: Example zip: description: The venue zip code type: string example: Example phone: description: The venue phone number type: string example: Example website: description: The venue website type: string format: uri example: https://example.com directions_link: description: The venue directions link type: string format: uri example: https://example.com Date: type: object properties: date: description: The date type: string format: date-time pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{6}$ example: '2025-07-10 08:00:00.000000' timezone_type: description: The timezone type type: integer example: 1 timezone: description: The timezone of the date type: string example: Europe/Athens DateDetails: type: object properties: start: $ref: '#/components/schemas/Date' start_utc: $ref: '#/components/schemas/Date' start_site: $ref: '#/components/schemas/Date' start_display: $ref: '#/components/schemas/Date' end: $ref: '#/components/schemas/Date' end_utc: $ref: '#/components/schemas/Date' end_site: $ref: '#/components/schemas/Date' end_display: $ref: '#/components/schemas/Date' OpenApiDocumentation: type: object properties: openapi: type: string description: The OpenAPI version. info: type: object description: The API info. properties: title: type: string description: The API title. version: type: string description: The TEC REST API version. description: type: string description: The API description. contact: type: object description: The API contact. properties: name: type: string description: The name of the contact. email: type: string description: The email of the contact. format: email components: type: object description: The OpenAPI components. properties: schemas: type: object description: The OpenAPI schemas. servers: type: array description: The OpenAPI servers. items: type: object description: A server. properties: url: type: string description: The server URL. format: uri paths: type: object description: The OpenAPI paths. properties: OpenApiPath: $ref: '#/components/schemas/OpenApiPath' OpenApiPath: type: object properties: get: type: object description: The GET method for the path. properties: description: type: string description: The description of the GET method. parameters: type: array description: The parameters of the GET method. items: type: object description: A parameter. properties: name: type: string description: The name of the parameter. in: type: string description: The location of the parameter. required: type: boolean description: Whether the parameter is required. schema: type: object description: The schema of the parameter. responses: type: object description: The responses of the GET method. properties: '200': type: object description: The response for the GET method. properties: content: type: object description: The content of the response. properties: application/json: type: object description: The JSON content of the response. properties: schema: type: object description: The schema of the content. properties: type: type: string description: The type of the content. securitySchemes: BasicAuth: type: http scheme: basic servers: - url: https://impossiblemetals.com/wp-json/tec/v1 paths: /events: get: summary: Retrieve Events security: [] description: Returns a list of events operationId: getEvents tags: - Events parameters: - name: page in: query description: The collection page number. required: false schema: type: integer default: 1 minimum: 1 example: 1 - name: per_page in: query description: Maximum number of items to be returned in result set. required: false schema: type: integer default: 10 maximum: 100 minimum: 1 example: 51 - name: start_date in: query description: Limit events to those starting after the specified date. required: false schema: type: string format: date-time example: '2025-06-05T12:00:00Z' - name: end_date in: query description: Limit events to those ending before the specified date. required: false schema: type: string format: date-time example: '2025-06-05T12:00:00Z' - name: search in: query description: Limit results to those matching a string. required: false schema: type: string example: Example - name: categories in: query description: Limit result set to events assigned specific categories. required: false explode: false schema: type: array items: type: integer uniqueItems: true example: - 126 - name: tags in: query description: Limit result set to events assigned specific tags. required: false explode: false schema: type: array items: type: integer uniqueItems: true example: - 126 - name: venue in: query description: Limit result set to events assigned to specific venues. required: false explode: false schema: type: array items: type: integer uniqueItems: true example: - 126 - name: organizer in: query description: Limit result set to events assigned to specific organizers. required: false explode: false schema: type: array items: type: integer uniqueItems: true example: - 126 - name: featured in: query description: Limit result set to featured events only. required: false schema: type: boolean example: true - name: status in: query description: Limit result set to events with specific status. required: false explode: false schema: type: array items: type: string enum: - publish - pending - draft - future - private default: - publish uniqueItems: true example: - publish - name: post_parent in: query description: Limit result set to events with specific post parent. required: false schema: type: integer example: 126 - name: starts_before in: query description: Limit result set to events starting before the specified date. required: false schema: type: string format: date-time example: '2025-06-05T12:00:00Z' - name: starts_after in: query description: Limit result set to events starting after the specified date. required: false schema: type: string format: date-time example: '2025-06-05T12:00:00Z' - name: ends_before in: query description: Limit result set to events ending before the specified date. required: false schema: type: string format: date-time example: '2025-06-05T12:00:00Z' - name: ends_after in: query description: Limit result set to events ending after the specified date. required: false schema: type: string format: date-time example: '2025-06-05T12:00:00Z' - name: ticketed in: query description: Limit result set to events with tickets. required: false schema: type: boolean example: true - name: orderby in: query description: Sort collection by event attribute. required: false schema: type: string default: event_date enum: - date - event_date - title - menu_order - modified example: date - name: order in: query description: Order sort attribute ascending or descending. required: false schema: type: string default: ASC enum: - ASC - DESC example: ASC - name: geoloc_lat in: query description: The latitude of the event required: false schema: type: number example: 37.774929 - name: geoloc_lng in: query description: The longitude of the event required: false schema: type: number example: -122.419416 - name: distance in: query description: The distance of the events relative to the geolocation required: false schema: type: number example: 10 - name: has_geoloc in: query description: Filter by events that have geolocation data required: false schema: type: boolean example: true - name: near in: query description: Filter by events near an address required: false schema: type: string example: San Francisco, CA - name: in_series in: query description: Filter by events that are part of a series required: false schema: type: boolean example: true - name: series in: query description: Filter by events that are part of specified series IDs required: false explode: false schema: type: array items: type: integer uniqueItems: true example: - 1 - 2 - 3 - name: related_to in: query description: Filter by events that are related to a specific event ID. required: false schema: type: integer example: 123 - name: recurring in: query description: Filter by events that are recurring required: false schema: type: boolean example: true - name: virtual in: query description: Filter by events that are virtual required: false schema: type: boolean example: false responses: '200': description: Returns the list of events headers: X-WP-Total: description: The total number of events matching the request. required: true schema: type: integer X-WP-TotalPages: description: The total number of pages for the request. required: true schema: type: integer Link: description: "RFC 5988 Link header for pagination. Contains navigation links with relationships:\n\ \t\t\t\t`rel=\"next\"` for the next page (if not on last page),\n\t\t\t\t`rel=\"prev\"` for the\ \ previous page (if not on first page).\n\t\t\t\tHeader is omitted entirely if there's only one\ \ page" required: false schema: type: array items: type: string format: uri content: application/json: schema: type: array items: $ref: '#/components/schemas/Event' '400': description: A required parameter is missing or an input parameter is in the wrong format '404': description: The requested page was not found post: summary: Create an Event security: - BasicAuth: [] description: Creates a new event operationId: createEvent tags: - Events requestBody: description: The event data to create. required: true content: application/json: schema: $ref: '#/components/schemas/Event_Request_Body' example: date: '2025-06-04T23:36:56+01:00' date_gmt: '2025-06-04T22:36:56Z' slug: my-awesome-title status: publish title: My Awesome Title content: This is the content... excerpt: This is the excerpt... author: 1 featured_media: 123 comment_status: open ping_status: open format: standard sticky: false template: templates-full.php tags: - 2 - 8 - 15 tribe_events_cat: - 1 - 5 - 12 start_date: '2025-06-05 12:00:00' start_date_utc: '2025-06-05 09:00:00' end_date: '2025-06-05 16:00:00' end_date_utc: '2025-06-05 13:00:00' timezone: Europe/Athens duration: 14400 all_day: false featured: false cost: $10 organizers: - 1 - 2 venues: - 7 virtual: false lat: 37.774929 lng: -122.419416 parameters: [] responses: '201': description: Event created successfully content: application/json: schema: $ref: '#/components/schemas/Event' '400': description: Invalid request data '401': description: You are not logged in '403': description: You do not have permission to create events '500': description: Failed to create the event /events/{id}: get: summary: Retrieve an Event security: [] description: Returns a single event operationId: getEvent tags: - Events parameters: - name: id in: path description: Unique identifier for the event. required: true schema: type: integer example: 126 responses: '200': description: Returns the event content: application/json: schema: $ref: '#/components/schemas/Event' '404': description: The requested event was not found put: summary: Update an Event security: - BasicAuth: [] description: Updates an existing event operationId: updateEvent tags: - Events requestBody: description: The event data to update. required: true content: application/json: schema: $ref: '#/components/schemas/Event_Request_Body' example: date: '2025-06-04T23:36:56+01:00' date_gmt: '2025-06-04T22:36:56Z' slug: my-awesome-title status: publish title: My Awesome Title content: This is the content... excerpt: This is the excerpt... author: 1 featured_media: 123 comment_status: open ping_status: open format: standard sticky: false template: templates-full.php tags: - 2 - 8 - 15 tribe_events_cat: - 1 - 5 - 12 start_date: '2025-06-05 12:00:00' start_date_utc: '2025-06-05 09:00:00' end_date: '2025-06-05 16:00:00' end_date_utc: '2025-06-05 13:00:00' timezone: Europe/Athens duration: 14400 all_day: false featured: false cost: $10 organizers: - 1 - 2 venues: - 7 virtual: false lat: 37.774929 lng: -122.419416 parameters: - name: id in: path description: Unique identifier for the event. required: true schema: type: integer example: 126 responses: '200': description: Event updated successfully content: application/json: schema: $ref: '#/components/schemas/Event' '400': description: Invalid request data '401': description: You are not logged in '403': description: You do not have permission to update this event '404': description: The requested event was not found '500': description: Failed to update the event delete: summary: Delete an Event security: - BasicAuth: [] description: Deletes an existing event operationId: deleteEvent tags: - Events parameters: - name: id in: path description: Unique identifier for the event. required: true schema: type: integer example: 126 - name: force in: query description: Whether to bypass Trash and force deletion. required: false schema: type: boolean default: false example: true responses: '200': description: Event deleted successfully '401': description: You are not logged in '403': description: You do not have permission to delete this event '404': description: The requested event was not found '410': description: The event has already been trashed '500': description: Failed to delete the event '501': description: The event does not support trashing. Set force=true to delete /organizers: get: summary: Get organizers security: [] description: Returns a list of organizers operationId: getOrganizers tags: - Events parameters: - name: page in: query description: The collection page number. required: false schema: type: integer default: 1 minimum: 1 example: 1 - name: per_page in: query description: Maximum number of items to be returned in result set. required: false schema: type: integer default: 10 maximum: 100 minimum: 1 example: 51 - name: search in: query description: Limit results to those matching a string. required: false schema: type: string example: Example - name: event in: query description: Limit result set to organizers with specific event. required: false schema: type: integer example: 126 - name: has_events in: query description: Limit result set to organizers with events. required: false schema: type: boolean example: true - name: only_with_upcoming in: query description: Limit result set to organizers with upcoming events. required: false schema: type: boolean example: true - name: status in: query description: Limit result set to organizers with specific status. required: false explode: false schema: type: array items: type: string enum: - publish - pending - draft - future - private default: - publish uniqueItems: true example: - publish responses: '200': description: Returns the list of organizers headers: X-WP-Total: description: The total number of organizers matching the request. required: true schema: type: integer X-WP-TotalPages: description: The total number of pages for the request. required: true schema: type: integer Link: description: "RFC 5988 Link header for pagination. Contains navigation links with relationships:\n\ \t\t\t\t`rel=\"next\"` for the next page (if not on last page),\n\t\t\t\t`rel=\"prev\"` for the\ \ previous page (if not on first page).\n\t\t\t\tHeader is omitted entirely if there's only one\ \ page" required: false schema: type: array items: type: string format: uri content: application/json: schema: type: array items: $ref: '#/components/schemas/Organizer' '400': description: A required parameter is missing or an input parameter is in the wrong format '404': description: The requested page was not found post: summary: Create an Organizer security: - BasicAuth: [] description: Creates a new organizer operationId: createOrganizer tags: - Events requestBody: description: The organizer data to create. required: true content: application/json: schema: $ref: '#/components/schemas/Organizer_Request_Body' example: date: '2025-06-04T23:36:56+01:00' date_gmt: '2025-06-04T22:36:56Z' slug: my-awesome-title status: publish title: My Awesome Title content: This is the content... excerpt: This is the excerpt... author: 1 featured_media: 123 comment_status: open ping_status: open format: standard sticky: false template: templates-full.php tags: - 2 - 8 - 15 phone: 123-456-7890 website: https://example.com email: example@theeventscalendar.com parameters: [] responses: '201': description: Organizer created successfully content: application/json: schema: $ref: '#/components/schemas/Organizer' '400': description: Invalid request data '401': description: You are not logged in '403': description: You do not have permission to create organizers '500': description: Failed to create the organizer /organizers/{id}: get: summary: Retrieve an Organizer security: [] description: Returns a single organizer operationId: getOrganizer tags: - Events parameters: - name: id in: path description: Unique identifier for the organizer. required: true schema: type: integer example: 126 responses: '200': description: Returns the organizer content: application/json: schema: $ref: '#/components/schemas/Organizer' '404': description: The requested organizer was not found put: summary: Update an Organizer security: - BasicAuth: [] description: Updates an existing organizer operationId: updateOrganizer tags: - Events requestBody: description: The organizer data to update. required: true content: application/json: schema: $ref: '#/components/schemas/Organizer_Request_Body' example: date: '2025-06-04T23:36:56+01:00' date_gmt: '2025-06-04T22:36:56Z' slug: my-awesome-title status: publish title: My Awesome Title content: This is the content... excerpt: This is the excerpt... author: 1 featured_media: 123 comment_status: open ping_status: open format: standard sticky: false template: templates-full.php tags: - 2 - 8 - 15 phone: 123-456-7890 website: https://example.com email: example@theeventscalendar.com parameters: - name: id in: path description: Unique identifier for the organizer. required: true schema: type: integer example: 126 responses: '200': description: Organizer updated successfully content: application/json: schema: $ref: '#/components/schemas/Organizer' '400': description: Invalid request data '401': description: You are not logged in '403': description: You do not have permission to update this organizer '404': description: The requested organizer was not found '500': description: Failed to update the organizer delete: summary: Delete an Organizer security: - BasicAuth: [] description: Deletes an existing organizer operationId: deleteOrganizer tags: - Events parameters: - name: id in: path description: Unique identifier for the organizer. required: true schema: type: integer example: 126 - name: force in: query description: Whether to bypass Trash and force deletion. required: false schema: type: boolean default: false example: true responses: '200': description: Organizer deleted successfully '401': description: You are not logged in '403': description: You do not have permission to delete this organizer '404': description: The requested organizer was not found '410': description: The organizer has already been trashed '500': description: Failed to delete the organizer '501': description: The organizer does not support trashing. Set force=true to delete /venues: get: summary: Get venues security: [] description: Returns a list of venues operationId: getVenues tags: - Events parameters: - name: page in: query description: The collection page number. required: false schema: type: integer default: 1 minimum: 1 example: 1 - name: per_page in: query description: Maximum number of items to be returned in result set. required: false schema: type: integer default: 10 maximum: 100 minimum: 1 example: 51 - name: search in: query description: Limit results to those matching a string. required: false schema: type: string example: Example - name: event in: query description: Limit result set to venues with specific event. required: false schema: type: integer example: 126 - name: has_events in: query description: Limit result set to venues with events. required: false schema: type: boolean example: true - name: only_with_upcoming in: query description: Limit result set to venues with upcoming events. required: false schema: type: boolean example: true - name: status in: query description: Limit result set to venues with specific status. required: false explode: false schema: type: array items: type: string enum: - publish - pending - draft - future - private default: - publish uniqueItems: true example: - publish - name: geoloc_lat in: query description: The latitude of the venue required: false schema: type: number example: 37.774929 - name: geoloc_lng in: query description: The longitude of the venue required: false schema: type: number example: -122.419416 - name: distance in: query description: The distance of the venues relative to the geolocation required: false schema: type: number example: 10 - name: has_geoloc in: query description: Filter by venues that have geolocation data required: false schema: type: boolean example: true - name: near in: query description: Filter by venues near an address required: false schema: type: string example: San Francisco, CA responses: '200': description: Returns the list of venues headers: X-WP-Total: description: The total number of venues matching the request. required: true schema: type: integer X-WP-TotalPages: description: The total number of pages for the request. required: true schema: type: integer Link: description: "RFC 5988 Link header for pagination. Contains navigation links with relationships:\n\ \t\t\t\t`rel=\"next\"` for the next page (if not on last page),\n\t\t\t\t`rel=\"prev\"` for the\ \ previous page (if not on first page).\n\t\t\t\tHeader is omitted entirely if there's only one\ \ page" required: false schema: type: array items: type: string format: uri content: application/json: schema: type: array items: $ref: '#/components/schemas/Venue' '400': description: A required parameter is missing or an input parameter is in the wrong format '404': description: The requested page was not found post: summary: Create a Venue security: - BasicAuth: [] description: Creates a new venue operationId: createVenue tags: - Events requestBody: description: The venue data to create. required: true content: application/json: schema: $ref: '#/components/schemas/Venue_Request_Body' example: date: '2025-06-04T23:36:56+01:00' date_gmt: '2025-06-04T22:36:56Z' slug: my-awesome-title status: publish title: My Awesome Title content: This is the content... excerpt: This is the excerpt... author: 1 featured_media: 123 comment_status: open ping_status: open format: standard sticky: false template: templates-full.php tags: - 2 - 8 - 15 address: Example country: Example city: Example state_province: Example state: Example province: Example zip: Example phone: Example website: https://example.com lat: 37.774929 lng: -122.419416 parameters: [] responses: '201': description: Venue created successfully content: application/json: schema: $ref: '#/components/schemas/Venue' '400': description: Invalid request data '401': description: You are not logged in '403': description: You do not have permission to create venues '500': description: Failed to create the venue /venues/{id}: get: summary: Retrieve a Venue security: [] description: Returns a single venue operationId: getVenue tags: - Events parameters: - name: id in: path description: Unique identifier for the venue. required: true schema: type: integer example: 126 responses: '200': description: Returns the venue content: application/json: schema: $ref: '#/components/schemas/Venue' '404': description: The requested venue was not found put: summary: Update a Venue security: - BasicAuth: [] description: Updates an existing venue operationId: updateVenue tags: - Events requestBody: description: The venue data to update. required: true content: application/json: schema: $ref: '#/components/schemas/Venue_Request_Body' example: date: '2025-06-04T23:36:56+01:00' date_gmt: '2025-06-04T22:36:56Z' slug: my-awesome-title status: publish title: My Awesome Title content: This is the content... excerpt: This is the excerpt... author: 1 featured_media: 123 comment_status: open ping_status: open format: standard sticky: false template: templates-full.php tags: - 2 - 8 - 15 address: Example country: Example city: Example state_province: Example state: Example province: Example zip: Example phone: Example website: https://example.com lat: 37.774929 lng: -122.419416 parameters: - name: id in: path description: Unique identifier for the venue. required: true schema: type: integer example: 126 responses: '200': description: Venue updated successfully content: application/json: schema: $ref: '#/components/schemas/Venue' '400': description: Invalid request data '401': description: You are not logged in '403': description: You do not have permission to update this venue '404': description: The requested venue was not found '500': description: Failed to update the venue delete: summary: Delete a Venue security: - BasicAuth: [] description: Deletes an existing venue operationId: deleteVenue tags: - Events parameters: - name: id in: path description: Unique identifier for the venue. required: true schema: type: integer example: 126 - name: force in: query description: Whether to bypass Trash and force deletion. required: false schema: type: boolean default: false example: true responses: '200': description: Venue deleted successfully '401': description: You are not logged in '403': description: You do not have permission to delete this venue '404': description: The requested venue was not found '410': description: The venue has already been trashed '500': description: Failed to delete the venue '501': description: The venue does not support trashing. Set force=true to delete /docs: get: summary: Get the documentation for the TEC REST API security: [] description: Returns the documentation for The Events Calendar REST API in Swagger consumable format. operationId: getOpenApiDocs tags: - Common parameters: [] responses: '200': description: Returns the documentation for The Events Calendar REST API in Swagger consumable format. content: application/json: schema: $ref: '#/components/schemas/OpenApiDocumentation' /series: get: summary: Retrieve Series security: [] description: Returns a list of series operationId: getSeries tags: - Events Pro parameters: - name: page in: query description: The collection page number. required: false schema: type: integer default: 1 minimum: 1 example: 1 - name: event_post_id in: query description: Limit result set to series assigned to specific event post IDs. required: false explode: false schema: type: array items: type: integer uniqueItems: true example: - 126 - name: per_page in: query description: Maximum number of items to be returned in result set. required: false schema: type: integer default: 10 maximum: 100 minimum: 1 example: 51 - name: search in: query description: Limit results to those matching a string. required: false schema: type: string example: Example - name: status in: query description: Limit result set to events with specific status. required: false explode: false schema: type: array items: type: string enum: - publish - pending - draft - future - private default: - publish uniqueItems: true example: - publish - name: ticketed in: query description: Limit result set to events with tickets. required: false schema: type: boolean example: true - name: orderby in: query description: Sort collection by event attribute. required: false schema: type: string default: event_date enum: - date - event_date - title - menu_order - modified example: date - name: order in: query description: Order sort attribute ascending or descending. required: false schema: type: string default: ASC enum: - ASC - DESC example: ASC responses: '200': description: Returns the list of series headers: X-WP-Total: description: The total number of series matching the request. required: true schema: type: integer X-WP-TotalPages: description: The total number of pages for the request. required: true schema: type: integer Link: description: "RFC 5988 Link header for pagination. Contains navigation links with relationships:\n\ \t\t\t\t`rel=\"next\"` for the next page (if not on last page),\n\t\t\t\t`rel=\"prev\"` for the\ \ previous page (if not on first page).\n\t\t\t\tHeader is omitted entirely if there's only one\ \ page" required: false schema: type: array items: type: string format: uri content: application/json: schema: type: array items: $ref: '#/components/schemas/Series' '400': description: A required parameter is missing or an input parameter is in the wrong format '404': description: The requested page was not found