Calendar
Events
Create and manage your Recaudo events from your own site: webinars, workshops, courses or meetings. Each published event has its registration page at recaudo.app/e/{your-account}/{event}, with the same fields you see in the dashboard.
GET
/v1/events
List your events
POST
/v1/events
Create an event
GET
/v1/events/{id}
Get an event
PATCH
/v1/events/{id}
Update an event
DELETE
/v1/events/{id}
Delete an event
GET
/v1/events/{id}/registrations
List who registered
Create an event
Body
{
"name": "Webinar: mantenimiento preventivo",
"description": "Sesión en vivo con preguntas al final.",
"location_type": "online",
"format": "webinar",
"frequency": "one_time",
"date": "2026-11-18",
"start_time": "19:00",
"end_time": "20:30",
"meeting_url": "https://meet.example.com/abc-defg-hij",
"max_attendees": 150,
"status": "published",
"custom_fields": [
{
"label": "Puesto",
"type": "select",
"required": true,
"options": [
"Dirección",
"Operación",
"Ventas"
]
},
{
"label": "Ciudad",
"type": "text",
"required": true
}
]
}
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Event name. The page slug is built from it. |
location_type |
string | Yes | online, presencial (in person), hibrido (hybrid) or on_demand. |
frequency |
string | Yes | one_time (single date), recurring (repeats) or evergreen (no date, always available). |
date |
date | Depends | Date (YYYY-MM-DD), today or later. Required except for evergreen. |
start_time |
string | Depends | Start time (HH:MM, 24 h). Required except for evergreen. |
end_time |
string | No | End time (HH:MM), after the start. |
format |
string | No | webinar, demo, taller (workshop), conferencia (conference), reunion (meeting) or otro (other). |
description |
string | No | Text of the event page (up to 5,000 characters). |
status |
string | No | draft (default) or published. When updating, also cancelled or completed. |
location |
string | No | Address or venue, for in-person events. |
latitude |
number | No | Venue latitude, to show the map. |
longitude |
number | No | Venue longitude, to show the map. |
meeting_url |
url | No | Live session link (Zoom, Meet, Teams). |
content_url |
url | No | Link to the recording or material, for on_demand. |
image_url |
url | No | Cover image (public URL). |
max_attendees |
integer | No | Maximum capacity (1 to 10,000). Empty means unlimited. |
requires_payment |
boolean | No | true if registration is paid. |
price |
number | Depends | Price in decimals. Required when requires_payment is true. |
currency |
string | No | 3-letter ISO currency (default MXN). |
is_invitation_only |
boolean | No | true to hide the event from your public listing. |
recurrence_rule |
object | Depends | Required for recurring: {"pattern": "weekly|biweekly|monthly", "end_date": "YYYY-MM-DD", "occurrences": 2-52}. |
custom_fields |
array | No | Extra questions on the registration form (up to 30). |
- custom_fields: list of {label, type, required, options}. type can be text, email, tel, number, select or textarea. For select, options is a list ["A", "B"] or comma-separated text.
- The response returns the event with id, slug, public_url (the registration page), registrations_count and available_spots.
Update, delete and list
- PATCH /v1/events/{id} changes only the fields you send. Sending custom_fields replaces the whole list.
- DELETE /v1/events/{id} deletes the event and its page stops being available. Registrations are kept.
- GET /v1/events accepts status, search (by name), upcoming=true (today onward), limit and page.
Event registrations
GET /v1/events/{id}/registrations returns each registered person: attendee_name, attendee_email, attendee_phone, status (registered, paid, attended, cancelled, no_show), amount_paid, custom_data (answers to your questions, with their label) and url_params (UTM of where they came from). Filter with status, limit and page.
Was this page helpful?
Thanks for letting us know.