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/climbs/customβ
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.
pageβThe page number to retrieve (defaults to 1). This parameter is optional.
Authorization:β
Public.
Response:β
GET /api/v1/gyms/:gym_slug/climbs/officialβ
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.
pageβThe page number to retrieve (defaults to 1). This parameter is optional.
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/gym_walls/:id/active_climbβ
Returns the active climb for the specified 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/gyms/:gym_slug/active_climbβ
Returns the active climb for any wall on the specified gym.
Parameters:β
gym_slugβURL slug for the gym. This parameter is required.
Authorization:β
Public.
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β
idintegerβAn ID that uniquely identifies the resource across Crux.
anglenullable stringβThe angle this climb was set at. Only for climbs on adjustable walls.
colornullable stringβThe color of the climb. Only for official climbs in commercial gyms.
created_atstringβWhen the climb was created.
descriptionnullable stringβOptional climber-provided description of the climb.
foot_rulesnullable stringβFoot rules for the climb. One of [feet_follow_hands, any_feet, campus, feet_follow_hands_open_kicker, only_marked_feet]
gradenullable stringβThe grade of the climb. This will be one of the gym's available grades.
image_heightnullable integerβHeight of the cropped image in pixels. Hold masks are relative to this height.
image_urlnullable stringβThe final (edited) image URL for the climb.
image_widthnullable integerβWidth of the cropped image in pixels. Hold masks are relative to this width.
namestringβThe name of the climb.
number_of_commentsintegerβThe number of comments on this climb.
number_of_sendsintegerβThe number of times this climb has been sent.
unedited_image_urlnullable stringβThe original uploaded image URL, before hold highlights.
unset_atnullable stringβWhen the climb was marked as unset (removed from the wall).
updated_atstringβWhen the climb was last updated.
Climb (full)β
idintegerβAn ID that uniquely identifies the resource across Crux.
anglenullable stringβThe angle this climb was set at. Only for climbs on adjustable walls.
colornullable stringβThe color of the climb. Only for official climbs in commercial gyms.
created_atstringβWhen the climb was created.
descriptionnullable stringβOptional climber-provided description of the climb.
foot_rulesnullable stringβFoot rules for the climb. One of [feet_follow_hands, any_feet, campus, feet_follow_hands_open_kicker, only_marked_feet]
gradenullable stringβThe grade of the climb. This will be one of the gym's available grades.
gym_namestringβThe name of the gym where the climb is located.
gym_slugstringβThe URL slug of the gym where the climb is located.
holdsClimbHold (on_climb)βList of holds in the climb.
image_heightnullable integerβHeight of the cropped image in pixels. Hold masks are relative to this height.
image_urlnullable stringβThe final (edited) image URL for the climb.
image_widthnullable integerβWidth of the cropped image in pixels. Hold masks are relative to this width.
namestringβThe name of the climb.
number_of_commentsintegerβThe number of comments on this climb.
number_of_sendsintegerβThe number of times this climb has been sent.
setter_idnullable integerβUser ID of the setter (custom climbs only).
setter_namenullable stringβName of the setter who posted the climb (custom climbs only).
unedited_image_urlnullable stringβThe original uploaded image URL, before hold highlights.
unset_atnullable stringβWhen the climb was marked as unset (removed from the wall).
updated_atstringβWhen the climb was last updated.
sendsarray SendβList of sends for this climb.
ClimbHoldβ
idintegerβAn ID that uniquely identifies the resource across Crux.
maskarrayβ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_typestringβThe type of hold. One of [hand, hand_l, hand_r, foot, foot_l, foot_r, start, finish, zone]
idintegerβAn ID that uniquely identifies the resource across Crux.
maskarrayβ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β
idintegerβAn ID that uniquely identifies the resource across Crux.
climb_countintegerβThe number of climbs in the list.
created_atstringβTimestamp when the list was created.
iconstringβIcon for this list. A single emoji.
namestringβThe name of the climb list.
owned_by_gymbooleanβWhether this list is owned by the gym. Gym-owned lists can be edited by all gym staff.
pinned_atnullable stringβTimestamp when the list was pinned (if applicable).
gymnullable GymβThe gym that owns this list, if the list is gym-owned.
ownernullable UserβThe user who owns the list, if the list is not gym-owned.
ClimbList (full)β
idintegerβAn ID that uniquely identifies the resource across Crux.
climb_countintegerβThe number of climbs in the list.
created_atstringβTimestamp when the list was created.
iconstringβIcon for this list. A single emoji.
namestringβThe name of the climb list.
owned_by_gymbooleanβWhether this list is owned by the gym. Gym-owned lists can be edited by all gym staff.
pinned_atnullable stringβTimestamp when the list was pinned (if applicable).
climbsarray ClimbβAll climbs in this list.
gymnullable GymβThe gym that owns this list, if the list is gym-owned.
ownernullable UserβThe user who owns the list, if the list is not gym-owned.
ClimbSessionβ
idintegerβAn ID that uniquely identifies the resource across Crux.
created_atstringβTimestamp when the session was created.
datestringβ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.
sendsarray Send (full)βList of sends during the session.
Emptyβ
Gymβ
idintegerβAn ID that uniquely identifies the resource across Crux.
banner_urlnullable stringβThe banner URL of the gym.
descriptionnullable stringβThe description of the gym. This appears below the gym's name on the gym page and only applies to commercial gyms.
icon_urlnullable stringβThe icon URL of the gym.
locationnullable stringβThe location of the gym.
namestringβThe name of the gym.
number_of_climbersintegerβThe number of distinct users who have used Crux at this gym.
number_of_sendsintegerβThe cumulative number of sends at this gym across all climbs, including unset climbs.
url_slugstringβThe URL slug of the gym.
GymWallβ
idintegerβAn ID that uniquely identifies the resource across Crux.
angle_adjustablebooleanβWhether the wall has an adjustable angle.
created_atstringβTimestamp when the wall was created.
holdsnullable ClimbHoldβList of predicted holds on the wall.
image_heightnullable integerβThe height of the wall image in pixels.
image_urlnullable stringβThe URL of the wall's image.
image_widthnullable integerβThe width of the wall image in pixels.
maximum_anglenullable integerβMaximum wall angle in degrees.
minimum_anglenullable integerβMinimum wall angle in degrees.
namestringβThe name of the wall.
updated_atstringβTimestamp when the wall was last updated.
Sendβ
idintegerβAn ID that uniquely identifies the resource across Crux.
created_atstringβTimestamp when the send was recorded.
repeatbooleanβWhether this was a repeat send of the climb.
send_datestringβThe date of the session in which this send occurred.
userUserβThe user who sent the climb.
Send (full)β
idintegerβAn ID that uniquely identifies the resource across Crux.
created_atstringβTimestamp when the send was recorded.
repeatbooleanβWhether this was a repeat send of the climb.
send_datestringβThe date of the session in which this send occurred.
climbClimbβThe climb that was sent.
userUserβThe user who sent the climb.
User (authenticated)β
idintegerβAn ID that uniquely identifies the resource across Crux.
created_atstringβTimestamp when the user account was created.
namestringβThe display name of the user, or 'Unknown' if the user has not set a name.
profile_image_urlnullable stringβURL for the user's profile image.
administrated_gymsarray GymβList of gyms where the user is an admin.
viewed_gymsarray GymβList of gyms the user has viewed.
Userβ
idintegerβAn ID that uniquely identifies the resource across Crux.
created_atstringβTimestamp when the user account was created.
namestringβThe display name of the user, or 'Unknown' if the user has not set a name.
profile_image_urlnullable stringβURL for the user's profile image.
WebhookDeliveryβ
idintegerβAn ID that uniquely identifies the resource across Crux.
created_atstringβTimestamp when the webhook delivery was scheduled.
delivered_atnullable stringβTimestamp when the webhook delivery was delivered.
errornullable stringβError message if the delivery failed.
payloadobjectβParsed JSON payload that was delivered.
statusstringβStatus of the webhook delivery. One of [success, failure, pending, retrying]
webhook_registrationWebhookRegistrationβThe webhook registration associated with this delivery.
WebhookRegistrationβ
idintegerβAn ID that uniquely identifies the resource across Crux.
event_typestringβThe type of event that triggers the webhook.
gym_url_slugnullable stringβThe slug of the gym that owns this webhook (only present if owner is a Gym).
owner_idintegerβID of the resource that owns this webhook registratiom.
owner_typestringβType of the owner resource. One of [Gym, User]
urlstringβThe endpoint URL where webhooks will be delivered.
WebhookRegistration (full)β
idintegerβAn ID that uniquely identifies the resource across Crux.
event_typestringβThe type of event that triggers the webhook.
gym_url_slugnullable stringβThe slug of the gym that owns this webhook (only present if owner is a Gym).
owner_idintegerβID of the resource that owns this webhook registratiom.
owner_typestringβType of the owner resource. One of [Gym, User]
urlstringβThe endpoint URL where webhooks will be delivered.
recent_deliveriesarray WebhookDeliveryβThe 10 most recent webhook deliveries for this registration.