---
title: "Update an Event"
method: PATCH
path: "/v1/events"
tags: ["Events"]
---

# Update an Event

`PATCH /v1/events`

## Request

- Base URL: `https://api.exhibitday.com`
- URL: `https://api.exhibitday.com/v1/events`
- Auth: one of:
  - API key in header `api_key`
  - API key in query parameter `api_key`

To update an event, only pass in the properties that you want to update. To clear a property, pass in null; an empty value leaves the property unchanged (the warnings property in the response names any such parameters). If the update is successful, the message property in the response will contain a list of event properties that were actually changed as a result of this API update call.

Updating Event Custom Fields: In order to update the value of an event's custom field (i.e., a specific custom field that you've added to events in your workspace), you can pass in that custom field's field_name as a parameter to this method. For example, if there is a Custom Text Field configured for the Booth tab in your workspace, and that Custom Text Field's field_name is "custom_12345", you can update the value for that Custom Field by passing "custom_12345" as a parameter to this function. The same rules apply as for every other field: an empty value leaves the custom field unchanged (and adds a warning), and null (or the text "null") clears it. The response's list of changed properties names custom fields by their label. Note: Only event custom text fields, custom dropdown fields and custom URL fields are allowed to be updated via the API. A multi-line custom text field takes plain text, like the notes parameters: any html tags in the value are stripped, new line characters get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b). Use the /v1/references/event_custom_fields endpoint to get the field_name for the custom fields that are configured in your workspace.

Documentation: https://api.exhibitday.com/Help/V1?epf=1#patch-v1-events

## Request body

- PatchEventsRequest
  - `id` integer, required: The id of the event you would like to update.
  - `name` string, nullable: The name of the event.
  - `start_date` string, date, nullable: Event Start Date (format: YYYY-MM-DD). If the start date is after the end date, the API swaps the dates before saving. Dates omitted from the request use the event's existing values for this comparison.
  - `end_date` string, date, nullable: Event End Date (format: YYYY-MM-DD). If the start date is after the end date, the API swaps the dates before saving. Dates omitted from the request use the event's existing values for this comparison.
  - `participation_type_id` integer, nullable: Integer representing the participation_type_id for the event (1: Committed, 2: Considering, 3: Not Going). Note: you can use the following endpoint to retrieve a list of available participation_type_id's: /v1/references/event_participation_types
  - `format_id` integer, nullable: Integer representing the FormatId for the event (1 for In-Person, 2 for Virtual, 3 for Hybrid)
  - `star_rating` number, nullable: Star Rating for the event (0, 1, 2, or 3).
  - `event_tags` string, nullable: A comma-separated list of tags for the event (e.g., "International, West Coast, 2026"). This REPLACES the entire set of tags on the event with the list you pass in, and the order you pass them in is the order they are displayed. Each individual tag has a maximum length of 30 characters and is truncated if longer. Duplicates (case-insensitive), blank entries between tags and any HTML markup are ignored; a value that contains no tags at all (e.g., ",") is rejected. Because commas separate the list, an individual tag cannot itself contain a comma. To remove all tags from the event, pass in null.
  - `website_url` string, nullable: URL of the event website. Must be a well-formed http or https URL; if you leave out the scheme, http:// is added (e.g., example.com is stored as http://example.com).
  - `venue_name` string, nullable: The name of the venue for the event.
  - `venue_address` string, nullable: The venue address for the event.
  - `booth_size` string, nullable: The size of your booth for the event (e.g., 10x20). A value longer than 150 characters is rejected.
  - `booth_number` string, nullable: Your booth number for the event. A value longer than 150 characters is rejected.
  - `event_notes` string, nullable: Event Notes (under the Event Information tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).
  - `booth_notes` string, nullable: Booth Notes (under the event Booth tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).
  - `budget_notes` string, nullable: Budget Notes (under the event Budget tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).
  - `roi_notes` string, nullable: ROI Notes (under the event ROI tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).
  - `budget_booth_reservation` number, nullable: A number (greater than or equal to 0.00) that represents the budget for reserving the booth for the event.
  - `budget_booth_services` number, nullable: A number (greater than or equal to 0.00) that represents the budget for all the booth services for the event.
  - `budget_attendee_registrations` number, nullable: A number (greater than or equal to 0.00) that represents the budget for event registration / attendee tickets.
  - `budget_travel` number, nullable: A number (greater than or equal to 0.00) that represents the budget for travel and lodging for the event.
  - `budget_giveaways` number, nullable: A number (greater than or equal to 0.00) that represents the budget for your giveaways (swag and raffle items) for the event.
  - `budget_shipments` number, nullable: A number (greater than or equal to 0.00) that represents the budget for all shipments for the event.
  - `budget_event_activities` number, nullable: A number (greater than or equal to 0.00) that represents the budget for costs recorded under Playbook activities for the event.
  - `budget_misc_expenses` number, nullable: A number (greater than or equal to 0.00) that represents the budget for all miscellaneous expenses for the event.
  - `budget_sponsorships` number, nullable: A number (greater than or equal to 0.00) that represents the budget for all sponsorships for the event.
  - `roi_num_leads` number, nullable: An integer (greater than or equal to 0) that represents the number of leads generated from this event.
  - `roi_num_impressions_booth` number, nullable: An integer (greater than or equal to 0) that represents the number of booth walk-bys / impressions (i.e., estimated total number of people who saw your booth at this event).
  - `roi_num_impressions_sponsorships` number, nullable: An integer (greater than or equal to 0) that represents the number of sponsorship impressions (i.e., estimated total number of people reached through all your sponsorships for this event).
  - `roi_num_impressions_media` number, nullable: An integer (greater than or equal to 0) that represents the number of social/traditional media impressions (i.e., estimated total number of people reached via social media or traditional media coverage).
  - `roi_num_meetings_existing_customers` number, nullable: An integer (greater than or equal to 0) that represents the number of meetings with existing customers (i.e., total number of meetings your team had with your existing customers at this event).
  - `roi_num_meetings_new_customers` number, nullable: An integer (greater than or equal to 0) that represents the number of meetings with new/potential customers (i.e., total number of meetings your team had with new/potential customers at this event).
  - `roi_amount_actual_sales` number, nullable: A number (greater than or equal to 0.00) that represents the actual sales amount (attributable to this event and already closed).
  - `roi_amount_potential_sales` number, nullable: A number (greater than or equal to 0.00) that represents the additional opportunity / potential sales amount (attributable to this event, but yet to be closed).
  - `integration_metadata_field_1` string, nullable: This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the "external id" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.
  - `integration_metadata_field_2` string, nullable: This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the "external id" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.
  - `integration_metadata_field_3` string, nullable: This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the "external id" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.
  - `integration_metadata_field_4` string, nullable: This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the "external id" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.
  - `integration_metadata_field_5` string, nullable: This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the "external id" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.

## Response `200`

OK

- StatusResponse, nullable
  - `status_code` integer
  - `status` string, nullable
  - `message` string, nullable
  - `errors` string[], nullable
  - `warnings` string[], nullable: Only when an empty value left a parameter unchanged (see the help page).
  - `error_code` string, nullable: Errors only: what kind of error this is. invalid_request (400): A parameter is missing or has an invalid value (error_params names it when the API can tell); malformed_json (400): The request body is not valid JSON; not_allowed (400): The change is not allowed for that record in ExhibitDay (e.g., the event's tasks or its deletion are locked, or its Misc. Expenses & Credits tab is hidden); idempotency_key_reused (400): The Idempotency-Key was already used with a different request. Use a new key for a new request; missing_api_key (401): No api_key was sent; invalid_api_key (401): The api_key is not valid; api_access_disabled (401): API access is not enabled for the workspace; not_found (404): No record with that id exists in your workspace; unknown_endpoint (404): The URL or HTTP method is not part of the API; idempotency_key_in_use (409): A request with the same Idempotency-Key is still being processed. Retry after a moment; idempotency_key_indeterminate (409): A previous request with this Idempotency-Key did not finish and its outcome is unknown, so this retry was not run (to avoid creating a duplicate). Check whether the earlier request succeeded; to try again, use a new Idempotency-Key; rate_limited (429): Too many requests. Wait the number of seconds in the Retry-After header, then retry; internal_error (500): An unexpected error occurred. Quote the request_id when you contact support. New codes may be added; handle an unknown code by its HTTP status.
  - `error_params` string[], nullable: Errors only: the request parameters the errors refer to ([] when the API cannot tell).
  - `request_id` string, nullable: Errors only: this request's id, also in the X-Request-Id header. Quote it when you contact support.

## Other responses

- `400`: Bad Request: a missing or invalid parameter, or a change that is not allowed (error_code says which).
- `401`: Unauthorized: the api_key is missing or invalid, or API access is not enabled for the workspace.
- `404`: Not Found: no object with that id in your workspace, or an unknown URL or method.
- `429`: Too Many Requests: the rate limit was exceeded.
- `500`: Unexpected Internal Error.

---

[API](https://skmtc.dev/exhibitday/apis/exhibitday-api.md) · [All operations](https://skmtc.dev/exhibitday/apis/exhibitday-api/llms.txt) · [OpenAPI document](https://skmtc.dev/exhibitday/apis/exhibitday-api/revisions/a35e95422b0a?raw)
