curl --request PATCH \
--url https://attend.hackclub.com/api/v1/series/{series_id}/events/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"event": {
"venue_name": "Kaapelitehdas",
"location_address": "Tallberginkatu 1",
"groups_enabled": true
}
}
'import requests
url = "https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}"
payload = { "event": {
"venue_name": "Kaapelitehdas",
"location_address": "Tallberginkatu 1",
"groups_enabled": True
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
event: {
venue_name: 'Kaapelitehdas',
location_address: 'Tallberginkatu 1',
groups_enabled: true
}
})
};
fetch('https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'event' => [
'venue_name' => 'Kaapelitehdas',
'location_address' => 'Tallberginkatu 1',
'groups_enabled' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}"
payload := strings.NewReader("{\n \"event\": {\n \"venue_name\": \"Kaapelitehdas\",\n \"location_address\": \"Tallberginkatu 1\",\n \"groups_enabled\": true\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"event\": {\n \"venue_name\": \"Kaapelitehdas\",\n \"location_address\": \"Tallberginkatu 1\",\n \"groups_enabled\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"event\": {\n \"venue_name\": \"Kaapelitehdas\",\n \"location_address\": \"Tallberginkatu 1\",\n \"groups_enabled\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"event": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "sunbeam-summer-2027",
"name": "Sunbeam Summer 2027",
"series": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"name": "<string>"
},
"support_email": "jsmith@example.com",
"timezone": "Europe/Helsinki",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"registration_open_at": "2023-11-07T05:31:56Z",
"registration_close_at": "2023-11-07T05:31:56Z",
"venue_name": "<string>",
"location_city": "<string>",
"location_country": "<string>",
"location_address": "<string>",
"location_latitude": 123,
"location_longitude": 123,
"setup_complete": true,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"modules": {
"freedom_waivers_enabled": true,
"travel_enabled": true,
"visa_options_enabled": true,
"visa_application_url": "<string>",
"accommodation_enabled": true,
"roommate_preferences_enabled": true,
"guardian_invites_locked": true,
"nfc_badges_enabled": true,
"nfc_badge_write_on_checkin_enabled": true,
"groups_enabled": true
},
"hotel_scan_context_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"participant_count": 120
}
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}Update an event in the series
One series key updates any event in its series — that is the point of a series key. Accepts the same fields as the web’s event settings form and setup wizard (basics, schedule, location, module toggles); send only the fields you want to change.
event_series_id is not writable: an event cannot be moved out of its
series through this API (a value in the body is ignored, not rejected,
so a client can round-trip a GET response). Moving an event between
series is a global-admin action on the web.
A user token also works here if the caller could update the event on the
web — unlike POST, which is series-key-only.
curl --request PATCH \
--url https://attend.hackclub.com/api/v1/series/{series_id}/events/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"event": {
"venue_name": "Kaapelitehdas",
"location_address": "Tallberginkatu 1",
"groups_enabled": true
}
}
'import requests
url = "https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}"
payload = { "event": {
"venue_name": "Kaapelitehdas",
"location_address": "Tallberginkatu 1",
"groups_enabled": True
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
event: {
venue_name: 'Kaapelitehdas',
location_address: 'Tallberginkatu 1',
groups_enabled: true
}
})
};
fetch('https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'event' => [
'venue_name' => 'Kaapelitehdas',
'location_address' => 'Tallberginkatu 1',
'groups_enabled' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}"
payload := strings.NewReader("{\n \"event\": {\n \"venue_name\": \"Kaapelitehdas\",\n \"location_address\": \"Tallberginkatu 1\",\n \"groups_enabled\": true\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"event\": {\n \"venue_name\": \"Kaapelitehdas\",\n \"location_address\": \"Tallberginkatu 1\",\n \"groups_enabled\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://attend.hackclub.com/api/v1/series/{series_id}/events/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"event\": {\n \"venue_name\": \"Kaapelitehdas\",\n \"location_address\": \"Tallberginkatu 1\",\n \"groups_enabled\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"event": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "sunbeam-summer-2027",
"name": "Sunbeam Summer 2027",
"series": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"name": "<string>"
},
"support_email": "jsmith@example.com",
"timezone": "Europe/Helsinki",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"registration_open_at": "2023-11-07T05:31:56Z",
"registration_close_at": "2023-11-07T05:31:56Z",
"venue_name": "<string>",
"location_city": "<string>",
"location_country": "<string>",
"location_address": "<string>",
"location_latitude": 123,
"location_longitude": 123,
"setup_complete": true,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"modules": {
"freedom_waivers_enabled": true,
"travel_enabled": true,
"visa_options_enabled": true,
"visa_application_url": "<string>",
"accommodation_enabled": true,
"roommate_preferences_enabled": true,
"guardian_invites_locked": true,
"nfc_badges_enabled": true,
"nfc_badge_write_on_checkin_enabled": true,
"groups_enabled": true
},
"hotel_scan_context_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"participant_count": 120
}
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}Authorizations
Mobile token, global API token, series API key, or event API key. See Authentication above for which endpoints each one reaches.
Path Parameters
Series UUID, series slug, or the literal current — the series the calling series API key belongs to. current is only valid for a series API key.
Event UUID or slug. Must belong to the series in the path.
Body
Send only the fields you want to change. event_series_id is not writable and is ignored if present.
Show child attributes
Show child attributes
Response
Event updated.
Show child attributes
Show child attributes
Was this page helpful?