API Restful de MEC
El API RESTful in Modern Events Calendar Permite a los desarrolladores acceder, recuperar y gestionar programáticamente datos de eventos desde aplicaciones, sitios web o servicios externos. Proporciona una forma estructurada y estandarizada de interactuar con datos MEC (como eventos, ubicaciones, organizadores y horarios) sin depender de la interfaz de WordPress. Esto lo hace ideal para integraciones con aplicaciones móviles, plataformas de terceros o implementaciones frontend personalizadas.
URL base
La URL base es diferente según el sitio web, pero el patrón general es el siguiente.
http://example.com/wp-json/mec/v1.0
API Key
La clave API es necesaria para todos los comandos siguientes. Debe enviar la clave API en las cabeceras con el nombre mec-token. Si no envía mec-token en las cabeceras, recibirá un error invalid_api_token .
Todos los eventos
GET /events/
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Envíe los siguientes parámetros como JSON.
| Nombre | Tipo | Valores aceptados | Ejemplo |
| límitar | entero | 12 | |
| solicite | cadena | ASC / DESC | ASC |
| el desplazamiento | entero | 0 | |
| comienzo | cadena | hoy / fecha / mañana / ayer / inicio_mes_anterior / inicio_mes_actual / inicio_mes_próximo | datos |
| start_date | cadena | (aaaa-mm-dd) | 2024-12-15 |
| mostrar_solo_eventos_pasados | entero | 0,1 | 0 |
| incluir_eventos_pasados | entero | 0,1 | 0 |
| mostrar_solo_eventos_en_curso | entero | 0,1 | 0 |
| incluir_eventos_en_curso | entero | 0,1 | 0 |
Respuesta
Recibirás todos los eventos en la clave de eventos de la respuesta. Los eventos están categorizados según su fecha de inicio, lo que te permite visualizarlos en el formato que necesites: lista, calendario mensual, horario semanal o cualquier otro.
También puedes usar la clave de paginación de la respuesta para leer todos los eventos página por página. Simplemente envía el valor de next_date como start_date de tu próxima solicitud y envía next_offset como el valor del parámetro offset.
{
"events": {
"2025-01-15": [{ ... }],
...
},
"pagination": {
"next_date": "2025-12-15",
"next_offset": 1,
"has_more_events": true,
"found": 12
}
}
Evento único
GET /events/{id}
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Envíe los siguientes parámetros como una cadena de consulta.
| Nombre | Tipo | Ejemplo |
| id * | entero | 1 |
| aparición | entero | 1747335600 |
Respuesta
Recibirás mucha información, incluyendo, entre otras, la siguiente: La clave de datos contiene información útil sobre el evento que puedes usar en tu aplicación. La clave de fechas contiene las próximas fechas del evento. Puedes enviar el valor de la marca de tiempo de inicio, que verás como un valor de ocurrencia en la cadena de consulta, para avanzar en el tiempo. Además, la clave de fecha contiene información sobre la ocurrencia actual.
{
"ID": 1,
"data": { ... },
"dates": [{
"start": {
"date": "2025-05-15",
"hour": 7,
"minutes": "0",
"ampm": "PM",
"timestamp": 1747335600
},
"end": {
"date": "2025-05-15",
"hour": 11,
"minutes": "0",
"ampm": "PM",
"timestamp": 1747350000
},
"allday": "0",
"hide_time": "0",
"past": 0
}],
"date": {}
}
Iniciar sesión
POST /login
Solicitar retiro
Envíe los siguientes parámetros como datos en formato regular.
| Nombre | Tipo | Ejemplo |
| nombre de usuario * | cadena | usuario |
| la contraseña * | cadena | 12345678 |
Respuesta
Utilice el token para autorizar a los usuarios en otros comandos. Debe enviarlo como un nuevo encabezado llamado user-token para aquellos comandos que requieren autenticación, como los comandos my-events o trash events.
{
"success": 1,
"id": 1,
"token": "W2X53XpClol8TquAIKWaZo0j68L0tuho3o4wmwD0"
}
Subir Imagen
POST /images
Los usuarios deben estar autenticados para este comando. Tanto el token mec como el token de usuario deben incluirse en los encabezados.
Solicitar retiro
Envía los siguientes parámetros como JSON.
| Nombre | Tipo | Ejemplo |
| imagen * | listo para importar |
Respuesta
Utilice el image_id en otros comandos, como la creación de eventos, etc.
{
"success": 1,
"image_id": 10
}
Subir archivo
POST /files
Los usuarios deben estar autenticados para este comando. Tanto el token mec como el token de usuario deben incluirse en los encabezados.
Solicitar retiro
Envíe los siguientes parámetros como JSON.
| Nombre | Tipo | Ejemplo |
| listo para importar * | listo para importar |
Respuesta
Utilice el file_id en otros comandos, como la creación de eventos, etc.
{
"success": 1,
"file_id": 10
}
Crear evento
POST /events
Los usuarios deben estar autenticados para este comando. Tanto el token mec como el token de usuario deben incluirse en los encabezados.
Solicitar retiro
Envíe los siguientes parámetros como JSON.
| Nombre | Tipo | Ejemplo |
| título * | cadena | Título del evento |
| contenido | cadena | Contenido del evento |
| ubicación[nombre] | cadena | Galería de Arte |
| ubicación[dirección] | envíenos mensaje de texto | Galería de Arte, Ciudad |
| ubicación[latitud] | flotar | |
| ubicación[longitud] | flotar | |
| ubicación[miniatura] | int | 10 |
| organizador[nombre] | cadena | Juan debido |
| organizador[correo electrónico] | o enviar un email. | [email protected] |
| organizador[tel] | tel | +13007772299 |
| organizador[url] | url | https://google.com |
| organizador[miniatura] | número | 10 |
| start_date | fecha (aaaa-mm-dd) | 2025-06-01 |
| hora de inicio | int | 10 |
| minutos de inicio | int | 15 |
| inicio_ampm | cadena | AM |
| fecha final | fecha (aaaa-mm-dd) | 2025-06-01 |
| fin_de_hora | int | 2 |
| minutos_finales | int | 45 |
| fin_ampm | cadena | PM |
Respuesta
Utilice el event_id en otros comandos como obtener un solo evento, etc.
{
"success": 1,
"message": "The event is published.",
"event_id": 12
}
Editar evento
PUT /events/{id}
Los usuarios deben estar autenticados para este comando. Tanto el token mec como el token de usuario deben incluirse en los encabezados.
Solicitar retiro
La solicitud es exactamente igual que el comando de creación de evento.
Respuesta
La respuesta también es exactamente igual que el comando de creación de evento.
Mis eventos
GET /my-events
Los usuarios deben estar autenticados para este comando. Tanto el token mec como el token de usuario deben incluirse en los encabezados.
Solicitar retiro
Envíe los siguientes parámetros como JSON.
| Nombre | Tipo | Ejemplo |
| límitar * | entero | 12 |
| paginas * | entero | 1 |
Respuesta
Puedes recorrer los eventos para visualizarlos todos. Usa los datos de paginación para navegar por las páginas de los eventos.
{
"events": [
{
"id": 2645,
"title": "Monthly",
"url": "http://example.com/events/monthly/",
"status": "publish"
}
],
"pagination": {
"current_page": 2,
"total_pages": 5
}
}
Evento de basura
DELETE /events/{id}/trash
Los usuarios deben estar autenticados para este comando. Tanto el token mec como el token de usuario deben incluirse en los encabezados.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1
}
Eliminar evento
DELETE /events/{id}
Los usuarios deben estar autenticados para este comando. Tanto el token mec como el token de usuario deben incluirse en los encabezados.
Este comando forzará la eliminación de un evento. No importa si ya se eliminó.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1
}
Entidades de taxonomía
Estos puntos de acceso le permiten gestionar las entidades de la taxonomía MEC, incluidas categorías, etiquetas, rótulos, ponentes y patrocinadores.
Los usuarios deben estar autenticados para estos comandos. Ambos mec-token y user-token Debe incluirse en los encabezados.
Enumerar entidades de taxonomía
GET /taxonomies/{entity}
Parámetros de ruta:
| Parámetro | Tipo | Mareas Ideales para Lecciones |
| entidad | cadena | El tipo de entidad. Uno de: categories, tags, labels, speakers, sponsors |
Parámetros de consulta:
| Parámetro | Tipo | Predeterminado | Mareas Ideales para Lecciones |
| límitar | int | 20 | Número de elementos por página |
| paginado | int | 1 | Número de página |
| orderby | cadena | nombre | Campo de ordenación. Opciones: name, slug, count, term_id |
| solicite | cadena | ASC | Orden de clasificación. Opciones: ASC, DESC |
| Buscar | cadena | Término de búsqueda para filtrar los resultados | |
| ocultar_vacío | booleano | false | Si ocultar términos vacíos |
Respuesta de muestra:
{
"data": {
"categories": [
{
"id": 1,
"name": "Music",
"slug": "music",
"description": "",
"count": 5,
"taxonomy": "mec_category",
"icon": "",
"color": "",
"fallback_image": "",
"parent": 0
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
},
"status": 200
}
Notas:
- Para
categories, cada artículo incluyeicon,color,fallback_image, yparentcampos. - Para
labels, cada artículo incluyecolorystylecampos. - Para
speakers, cada artículo incluyetype,job_title,tel,email,website,mec_index,facebook,twitter,instagram,linkedin, ythumbnailcampos. - Para
sponsors, cada artículo incluyelinkylogocampos. - Para
tags, solo campos de términos predeterminados (id,name,slug,description,count,taxonomy) se devuelven. - Los ponentes y patrocinadores deben estar habilitados en los entornos MEC para que sean accesibles.
Obtener una única entidad de taxonomía
GET /taxonomies/{entity}/{id}
Parámetros de ruta:
| Parámetro | Tipo | Mareas Ideales para Lecciones |
| entidad | cadena | El tipo de entidad. Uno de: categories, tags, labels, speakers, sponsors |
| id | int | El término ID |
Ejemplo de respuesta (categoría):
{
"data": {
"category": {
"id": 1,
"name": "Music",
"slug": "music",
"description": "",
"count": 5,
"taxonomy": "mec_category",
"icon": "",
"color": "#ff0000",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Ejemplo de respuesta (del hablante):
{
"data": {
"speaker": {
"id": 2,
"name": "John Doe",
"slug": "john-doe",
"description": "",
"count": 3,
"taxonomy": "mec_speaker",
"type": "person",
"job_title": "CEO",
"tel": "+1234567890",
"email": "[email protected]",
"website": "https://example.com",
"mec_index": "1",
"facebook": "https://facebook.com/johndoe",
"twitter": "https://twitter.com/johndoe",
"instagram": "",
"linkedin": "",
"thumbnail": ""
}
},
"status": 200
}
Ejemplo de respuesta (patrocinador):
{
"data": {
"sponsor": {
"id": 3,
"name": "Acme Inc",
"slug": "acme-inc",
"description": "",
"count": 2,
"taxonomy": "mec_sponsor",
"link": "https://acme.com",
"logo": "https://example.com/logo.png"
}
},
"status": 200
}
Respuesta de ejemplo (Etiqueta):
{
"data": {
"label": {
"id": 5,
"name": "Featured",
"slug": "featured",
"description": "",
"count": 12,
"taxonomy": "mec_label",
"color": "#ff0000",
"style": ""
}
},
"status": 200
}
Ejemplo de respuesta (etiqueta):
{
"data": {
"tag": {
"id": 7,
"name": "Workshop",
"slug": "workshop",
"description": "Hands-on workshop sessions",
"count": 8,
"taxonomy": ""
}
},
"status": 200
}
Crear entidad de taxonomía
POST /taxonomies/{entity}
Parámetros de ruta:
| Parámetro | Tipo | Mareas Ideales para Lecciones |
| entidad | cadena | El tipo de entidad. Uno de: categories, tags, labels, speakers, sponsors |
Cuerpo de solicitud:
Parámetros comunes para todos los tipos de entidades:
| Parámetro | Tipo | Obligatorio | Mareas Ideales para Lecciones |
| nombre | cadena | Sí: | El nombre de la entidad |
| lingote | cadena | No | Slug compatible con URL (generado automáticamente si se omite) |
| description | cadena | No | Descripción de la entidad |
Parámetros específicos de la entidad:
Para categories:
| Parámetro | Tipo | Obligatorio | Mareas Ideales para Lecciones |
| con el futuro bebé | int | No | ID de categoría principal |
| cadena | No | Clase CSS para el icono de categoría | |
| color | cadena | No | Código de color hexadecimal (por ejemplo, #ff0000) |
| imagen de reserva | cadena | No | URL de la imagen de reserva |
Para labels:
| Parámetro | Tipo | Obligatorio | Mareas Ideales para Lecciones |
| color | cadena | No | Código de color hexadecimal para la etiqueta |
| estilo | cadena | No | Estilo de etiqueta |
Para speakers:
| Parámetro | Tipo | Obligatorio | Mareas Ideales para Lecciones |
| tipo | cadena | No | person or group. Defecto: person |
| título profesional | cadena | No | Cargo del orador |
| tel | cadena | No | Número de teléfono |
| o enviar un email. | cadena | No | Correo electrónico |
| sitio web | cadena | No | URL del sitio web |
| índice_mec | int | No | Mostrar índice de pedidos. Predeterminado: 99 |
| cadena | No | URL del perfil de Facebook | |
| cadena | No | URL del perfil de Twitter | |
| cadena | No | URL de perfil de Instagram | |
| cadena | No | URL de perfil en LinkedIn | |
| uña del pulgar | cadena | No | URL de la imagen en miniatura |
Para sponsors:
| Parámetro | Tipo | Obligatorio | Mareas Ideales para Lecciones |
| este enlace | cadena | No | URL del sitio web del patrocinador |
| logo | cadena | No | URL de la imagen del logotipo del patrocinador |
Solicitud de muestra (Categoría):
{
"name": "Conference",
"slug": "conference",
"description": "Conference events",
"color": "#3498db",
"icon": "mec-fa-video"
}
Ejemplo de solicitud (orador):
{
"name": "Jane Smith",
"job_title": "Keynote Speaker",
"email": "[email protected]",
"type": "person",
"twitter": "https://twitter.com/janesmith"
}
Solicitud de muestra (Patrocinador):
{
"name": "Tech Corp",
"link": "https://techcorp.com",
"logo": "https://techcorp.com/logo.png"
}
Solicitud de muestra (Etiqueta):
{
"name": "VIP",
"color": "#9b59b6",
"style": ""
}
Solicitud de ejemplo (etiqueta):
{
"name": "Technology",
"description": "Technology-related events"
}
Respuesta de muestra:
{
"data": {
"success": 1,
"category": {
"id": 10,
"name": "Conference",
"slug": "conference",
"description": "Conference events",
"count": 0,
"taxonomy": "mec_category",
"icon": "mec-fa-video",
"color": "#3498db",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Actualizar entidad de taxonomía
PUT /taxonomies/{entity}/{id}
Parámetros de ruta:
| Parámetro | Tipo | Mareas Ideales para Lecciones |
| entidad | cadena | El tipo de entidad. Uno de: categories, tags, labels, speakers, sponsors |
| id | int | El ID del término a actualizar |
Cuerpo de solicitud:
Los mismos parámetros que en Crear. Incluya únicamente los campos que desea actualizar.
Solicitud de muestra:
{
"name": "International Conference",
"color": "#e74c3c"
}
Respuesta de muestra:
{
"data": {
"success": 1,
"category": {
"id": 10,
"name": "International Conference",
"slug": "conference",
"description": "Conference events",
"count": 0,
"taxonomy": "mec_category",
"icon": "mec-fa-video",
"color": "#e74c3c",
"fallback_image": "",
"parent": 0
}
},
"status": 200
}
Eliminar entidad de taxonomía
DELETE /taxonomies/{entity}/{id}
Parámetros de ruta:
| Parámetro | Tipo | Mareas Ideales para Lecciones |
| entidad | cadena | El tipo de entidad. Uno de: categories, tags, labels, speakers, sponsors |
| id | int | El ID del término a actualizar |
Respuesta de muestra:
{
"data": {
"success": 1
},
"status": 200
}
Respuestas de error
Entidad no encontrada (404):
{
"data": {
"code": "404",
"message": "Taxonomy entity not found!"
},
"status": 404
}
No autorizado (401):
{
"data": {
"code": "401",
"message": "You're not authorized to manage this taxonomy!"
},
"status": 401
}
Error de validación (400):
{
"data": {
"code": "400",
"message": "Name field is required!"
},
"status": 400
}
Campos Personalizados
GET /config/custom-fields
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"fields": {
"1": {
"mandatory": "1",
"type": "text",
"label": "Your Comment"
},
"2": {
"mandatory": "0",
"type": "date",
"label": "Preferred Date"
},
"3": {
"mandatory": "0",
"ignore": "0",
"type": "select",
"label": "Gender",
"options": {
"1": {
"label": "Male"
},
"2": {
"label": "Female"
}
}
}
}
}
Iconos
GET /config/icons
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"icons": [
{
"name": "Location Marker Icon",
"default": "<i class=\"mec-sl-location-pin\"></i>",
"modules": [
"single",
"shortcode"
],
"value": "<img class=\"mec-custom-image-icon\" src=\"http://site.com/wp-content/uploads/2025/03/location.jpg\" alt=\"location-pin\">"
}
]
}
Clima:
GET /events/{id}/weather
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Envíe los siguientes parámetros como cadena de consulta.
| Nombre | Tipo | Ejemplo |
| datos | cadena | aaaa-mm-dd |
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"weather": {
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"condition": "Sunny",
"temp_c": 13.699999999999999,
"temp_f": 56.700000000000003,
"wind_kph": 9,
"wind_mph": 5.5999999999999996,
"humidity": 58,
"feelslike_c": 13.199999999999999,
"feelslike_f": 55.799999999999997
}
}
Eventos relacionados
GET /events/{id}/related-events
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"related_events": [
{
"id": 21,
"title": "Daily Event",
"url": "http://site.com/events/daily-event/",
"timestamp": 1746432000,
"date": "May 5, 2025"
}
]
}
Eventos siguientes / anteriores
GET /events/{id}/next-previous-events
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"next": {
"id": "21",
"title": "Daily Event",
"url": "http://rezamiri.test/events/daily-event/"
},
"previous": []
}
Próximas apariciones
GET /events/{id}/next-occurrences
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"occurrences": [
{
"start": {
"date": "2025-05-10",
"hour": "8",
"minutes": "0",
"ampm": "AM",
"timestamp": 1746864000
},
"end": {
"date": "2025-05-10",
"hour": 6,
"minutes": "0",
"ampm": "PM",
"timestamp": 1746900000
},
"allday": "0",
"hide_time": "0",
"past": 0
}
]
}
Campos de asistentes
GET /config/attendee-fields
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"fields": [
{
"mandatory": "1",
"type": "mec_email",
"label": "Email"
},
{
"mandatory": "1",
"type": "name",
"label": "Name"
},
{
"mandatory": "0",
"type": "textarea",
"label": "Text",
"mapping": ""
}
]
}
Campos fijos
GET /config/fixed-fields
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"fields": {
"1": {
"mandatory": "0",
"type": "text",
"label": "Text"
},
"2": {
"mandatory": "1",
"type": "date",
"label": "Date"
}
}
}
Variaciones de entradas
GET /config/ticket-variations
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"ticket_variations": {
"1": {
"title": "Pizza",
"price": "6",
"max": "2"
},
"2": {
"title": "Juice",
"price": "4",
"max": "3"
}
}
}
Impuestos/Tarifas de reserva
GET /events/{id}/fees
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
Ninguno.
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"fees": {
"1": {
"title": "Tax",
"amount": "12",
"type": "percent"
},
"2": {
"title": "Deposit",
"amount": "50",
"type": "amount_per_booking"
}
}
}
Entradas
GET /events/{id}/tickets
Este es un comando público, significa que todos los usuarios con una clave API pueden ejecutarlo.
Solicitar retiro
| Nombre | Tipo | Ejemplo |
| aparición | cadena | aaaa-mm-dd hh: mm: ss |
Respuesta
Si el comando fue exitoso, recibirá la siguiente respuesta; de lo contrario, se devolverá un objeto de error con el código http adecuado.
{
"success": 1,
"tickets": {
"1": {
"name": "Ticket A",
"ticket_start_time_hour": "08",
"ticket_start_time_minute": "0",
"ticket_end_time_hour": "06",
"ticket_end_time_minute": "0",
"description": "",
"private_description": "",
"price": "8.97",
"price_label": "$8.97",
"limit": "",
"unlimited": "0",
"seats": "1",
"minimum_ticket": "1",
"maximum_ticket": "",
"stop_selling_value": "0",
"stop_selling_type": "day",
"dates": [],
"ticket_start_time_ampm": "AM",
"ticket_end_time_ampm": "PM",
"category_ids": [],
"id": 1,
"variations": {
"1": {
"title": "Pizza",
"price": "6",
"max": "2"
},
"2": {
"title": "Juice",
"price": "4",
"max": "3"
}
}
}
},
"availability": {
"1": 100,
"seats_1": 1,
"total": 100
}
}