API Reference
This document is a reference for the Crux API. It contains information about the different APIs, the resources they return, and the response objects. Refer to the intro for more information about the API or the authentication page for information about how to authenticate your API requests.
API Endpointsβ
GET /api/v1/gyms/:gym_slug/climb_lists
β
Returns all public climb lists for a specific gym.
Parameters:β
gym_slug
βThe URL slug of the gym whose lists you want to retrieve. This parameter is required.
Authorization:β
Public.
Response:β
GET /api/v1/users/:user_id/climb_lists
β
Returns all climb lists created by a user.
Parameters:β
user_id
βMust be "me" or your own user ID, since you can only view your own lists. This parameter is required.
Authorization:β
You can only view your own lists.
Response:β
GET /api/v1/climb_lists/:id
β
Returns details for a specific climb list. Must be public or owned by the user.
Parameters:β
id
βThe ID of the climb list to retrieve. This parameter is required.
Authorization:β
Public if the list is public. Otherwise, restricted to the user who owns the list.
Response:β
POST /api/v1/climb_lists/:list_id/add_climb
β
Adds a climb to a climb list. Returns HTTP 200 if successful.
Parameters:β
list_id
βThe ID of the list to add the climb to. This parameter is required.
climb_id
βThe ID of the climb to add. This parameter is required.
Authorization:β
User must own the list or be a gym admin of a gym-owned list.
Response:β
POST /api/v1/climb_lists/:list_id/remove_climb
β
Removes a climb from a list. Returns HTTP 200 if successful.
Parameters:β
list_id
βThe ID of the list. This parameter is required.
climb_id
βThe ID of the climb to remove. This parameter is required.
Authorization:β
User must own the list or be a gym admin of a gym-owned list.
Response:β
GET /api/v1/climbs/:id
β
Returns details for a specific climb.
Parameters:β
id
βThe ID of the climb to retrieve. This parameter is required.
Authorization:β
Public.
Response:β
GET /api/v1/gyms/:gym_slug/custom_climbs
β
Returns a list of custom climbs for the specified gym.
Parameters:β
gym_slug
βThe URL slug of the gym whose custom climbs you want to retrieve. This parameter is required.
Authorization:β
Public.
Response:β
GET /api/v1/gyms/:gym_slug/official_climbs
β
Returns a list of official climbs for the specified gym.
Parameters:β
gym_slug
βThe URL slug of the gym whose official climbs you want to retrieve. This parameter is required.
Authorization:β
Public.
Response:β
GET /api/v1/gym_walls/:id
β
Returns details for a specific gym wall.
Parameters:β
id
βThe ID of the gym wall to retrieve. This parameter is required.
Authorization:β
Public.
Response:β
GET /api/v1/gyms/:gym_slug/gym_walls
β
Returns a list of all gym walls for the specified gym.
Parameters:β
gym_slug
βThe URL slug of the gym whose walls you want to retrieve. This parameter is required.
Authorization:β
Public.
Response:β
GET /api/v1/gyms/:gym_slug
β
Returns details for a specific gym.
Parameters:β
gym_slug
βURL slug for the gym. This parameter is required.
Authorization:β
Public.
Response:β
GET /api/v1/gyms/:gym_slug/webhook_registrations
β
List all webhook registrations for a gym.
Parameters:β
gym_slug
βURL slug for the gym. This parameter is required.
Authorization:β
Restricted to gym admins.
Response:β
GET /api/v1/users/:user_id
β
Returns details for a specific user.
Parameters:β
user_id
βThe ID of the user to retrieve. Use "me" to retrieve your own user details. This parameter is required.
Authorization:β
Public.
Response:β
One of: [User, User (authenticated)]
GET /api/v1/users/:user_id/climb_sessions
β
Returns a list of climb sessions for the current user.
Parameters:β
user_id
βMust be "me" or your own user ID, since you can only view your own climb sessions. This parameter is required.
Authorization:β
You can only view your own climb sessions.
Response:β
GET /api/v1/users/:user_id/webhook_registrations
β
Returns all webhook registrations for the current user.
Parameters:β
user_id
βMust be "me" or your own user ID, since you can only view your own webhook registrations. This parameter is required.
Authorization:β
You can only view your own webhook registrations.
Response:β
Response Objectsβ
These are the definitions of the objects returned by the API. Some objects have variants, for example, User has an "authenticated" variant with additional information that we return when you're fetching your own user. The API documentation above indicates when a variant is returned.
Climbβ
id
integerβAn ID that uniquely identifies the resource across Crux.
angle
nullable stringβThe angle this climb was set at. Only for climbs on adjustable walls.
color
nullable stringβThe color of the climb. Only for official climbs in commercial gyms.
created_at
stringβWhen the climb was created.
description
nullable stringβOptional climber-provided description of the climb.
foot_rules
nullable stringβFoot rules for the climb. One of [feet_follow_hands, any_feet, campus, feet_follow_hands_open_kicker, only_marked_feet]
grade
nullable stringβThe grade of the climb. This will be one of the gym's available grades.
image_height
nullable integerβHeight of the cropped image in pixels. Hold masks are relative to this height.
image_url
nullable stringβThe final (edited) image URL for the climb.
image_width
nullable integerβWidth of the cropped image in pixels. Hold masks are relative to this width.
name
stringβThe name of the climb.
number_of_comments
integerβThe number of comments on this climb.
number_of_sends
integerβThe number of times this climb has been sent.
unedited_image_url
nullable stringβThe original uploaded image URL, before hold highlights.
unset_at
nullable stringβWhen the climb was marked as unset (removed from the wall).
updated_at
stringβWhen the climb was last updated.
Climb (full)β
id
integerβAn ID that uniquely identifies the resource across Crux.
angle
nullable stringβThe angle this climb was set at. Only for climbs on adjustable walls.
color
nullable stringβThe color of the climb. Only for official climbs in commercial gyms.
created_at
stringβWhen the climb was created.
description
nullable stringβOptional climber-provided description of the climb.
foot_rules
nullable stringβFoot rules for the climb. One of [feet_follow_hands, any_feet, campus, feet_follow_hands_open_kicker, only_marked_feet]
grade
nullable stringβThe grade of the climb. This will be one of the gym's available grades.
gym_name
stringβThe name of the gym where the climb is located.
gym_slug
stringβThe URL slug of the gym where the climb is located.
holds
ClimbHold (on_climb)βList of holds in the climb.
image_height
nullable integerβHeight of the cropped image in pixels. Hold masks are relative to this height.
image_url
nullable stringβThe final (edited) image URL for the climb.
image_width
nullable integerβWidth of the cropped image in pixels. Hold masks are relative to this width.
name
stringβThe name of the climb.
number_of_comments
integerβThe number of comments on this climb.
number_of_sends
integerβThe number of times this climb has been sent.
setter_id
nullable integerβUser ID of the setter (custom climbs only).
setter_name
nullable stringβName of the setter who posted the climb (custom climbs only).
unedited_image_url
nullable stringβThe original uploaded image URL, before hold highlights.
unset_at
nullable stringβWhen the climb was marked as unset (removed from the wall).
updated_at
stringβWhen the climb was last updated.
sends
array SendβList of sends for this climb.
ClimbHoldβ
id
integerβAn ID that uniquely identifies the resource across Crux.
mask
arrayβThe mask of the hold. The mask is a list of points that form a polygon. The points are relative to the width and height of the image provided by the API.
ClimbHold (on_climb)β
hold_type
stringβThe type of hold. One of [hand, hand_l, hand_r, foot, foot_l, foot_r, start, finish, zone]
id
integerβAn ID that uniquely identifies the resource across Crux.
mask
arrayβThe mask of the hold. The mask is a list of points that form a polygon. The points are relative to the width and height of the image provided by the API.
ClimbListβ
id
integerβAn ID that uniquely identifies the resource across Crux.
climb_count
integerβThe number of climbs in the list.
created_at
stringβTimestamp when the list was created.
icon
stringβIcon for this list. A single emoji.
name
stringβThe name of the climb list.
owned_by_gym
booleanβWhether this list is owned by the gym. Gym-owned lists can be edited by all gym staff.
pinned_at
nullable stringβTimestamp when the list was pinned (if applicable).
gym
nullable GymβThe gym that owns this list, if the list is gym-owned.
owner
nullable UserβThe user who owns the list, if the list is not gym-owned.
ClimbList (full)β
id
integerβAn ID that uniquely identifies the resource across Crux.
climb_count
integerβThe number of climbs in the list.
created_at
stringβTimestamp when the list was created.
icon
stringβIcon for this list. A single emoji.
name
stringβThe name of the climb list.
owned_by_gym
booleanβWhether this list is owned by the gym. Gym-owned lists can be edited by all gym staff.
pinned_at
nullable stringβTimestamp when the list was pinned (if applicable).
climbs
array ClimbβAll climbs in this list.
gym
nullable GymβThe gym that owns this list, if the list is gym-owned.
owner
nullable UserβThe user who owns the list, if the list is not gym-owned.
ClimbSessionβ
id
integerβAn ID that uniquely identifies the resource across Crux.
created_at
stringβTimestamp when the session was created.
date
stringβThe date of the climb session (YYYY-MM-DD). This can be different from the created_at timestamp if you are creating a session for a past date.
sends
array Send (full)βList of sends during the session.
Emptyβ
Gymβ
id
integerβAn ID that uniquely identifies the resource across Crux.
banner_url
nullable stringβThe banner URL of the gym.
description
nullable stringβThe description of the gym. This appears below the gym's name on the gym page and only applies to commercial gyms.
icon_url
nullable stringβThe icon URL of the gym.
location
nullable stringβThe location of the gym.
name
stringβThe name of the gym.
number_of_climbers
integerβThe number of distinct users who have used Crux at this gym.
number_of_sends
integerβThe cumulative number of sends at this gym across all climbs, including unset climbs.
GymWallβ
id
integerβAn ID that uniquely identifies the resource across Crux.
angle_adjustable
booleanβWhether the wall has an adjustable angle.
created_at
stringβTimestamp when the wall was created.
holds
nullable ClimbHoldβList of predicted holds on the wall.
image_height
nullable integerβThe height of the wall image in pixels.
image_url
nullable stringβThe URL of the wall's image.
image_width
nullable integerβThe width of the wall image in pixels.
maximum_angle
nullable integerβMaximum wall angle in degrees.
minimum_angle
nullable integerβMinimum wall angle in degrees.
name
stringβThe name of the wall.
updated_at
stringβTimestamp when the wall was last updated.
Sendβ
id
integerβAn ID that uniquely identifies the resource across Crux.
created_at
stringβTimestamp when the send was recorded.
repeat
booleanβWhether this was a repeat send of the climb.
send_date
stringβThe date of the session in which this send occurred.
user
UserβThe user who sent the climb.
Send (full)β
id
integerβAn ID that uniquely identifies the resource across Crux.
created_at
stringβTimestamp when the send was recorded.
repeat
booleanβWhether this was a repeat send of the climb.
send_date
stringβThe date of the session in which this send occurred.
climb
ClimbβThe climb that was sent.
user
UserβThe user who sent the climb.
User (authenticated)β
id
integerβAn ID that uniquely identifies the resource across Crux.
created_at
stringβTimestamp when the user account was created.
name
stringβThe display name of the user, or 'Unknown' if the user has not set a name.
profile_image_url
nullable stringβURL for the user's profile image.
administrated_gyms
array GymβList of gyms where the user is an admin.
viewed_gyms
array GymβList of gyms the user has viewed.
Userβ
id
integerβAn ID that uniquely identifies the resource across Crux.
created_at
stringβTimestamp when the user account was created.
name
stringβThe display name of the user, or 'Unknown' if the user has not set a name.
profile_image_url
nullable stringβURL for the user's profile image.
WebhookDeliveryβ
id
integerβAn ID that uniquely identifies the resource across Crux.
created_at
stringβTimestamp when the webhook delivery was scheduled.
delivered_at
nullable stringβTimestamp when the webhook delivery was delivered.
error
nullable stringβError message if the delivery failed.
payload
objectβParsed JSON payload that was delivered.
status
stringβStatus of the webhook delivery. One of [success, failure, pending, retrying]
webhook_registration
WebhookRegistrationβThe webhook registration associated with this delivery.
WebhookRegistrationβ
id
integerβAn ID that uniquely identifies the resource across Crux.
event_type
stringβThe type of event that triggers the webhook.
gym_url_slug
nullable stringβThe slug of the gym that owns this webhook (only present if owner is a Gym).
owner_id
integerβID of the resource that owns this webhook registratiom.
owner_type
stringβType of the owner resource. One of [Gym, User]
url
stringβThe endpoint URL where webhooks will be delivered.
WebhookRegistration (full)β
id
integerβAn ID that uniquely identifies the resource across Crux.
event_type
stringβThe type of event that triggers the webhook.
gym_url_slug
nullable stringβThe slug of the gym that owns this webhook (only present if owner is a Gym).
owner_id
integerβID of the resource that owns this webhook registratiom.
owner_type
stringβType of the owner resource. One of [Gym, User]
url
stringβThe endpoint URL where webhooks will be delivered.
recent_deliveries
array WebhookDeliveryβThe 10 most recent webhook deliveries for this registration.