Create a WOD
curl --request POST \
--url https://api.wodup.dev/api/public/wods \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"components": [
{
"is_alternating": false,
"level": "Rx",
"notes": "Aim for an 80% effort today.",
"notes_for_coaches": "Try to complete this section in 10 minutes.",
"order": 0,
"partners": 0,
"post_instructions": null,
"pre_instructions": "Make sure to warm up your hips first.",
"prefix": "A",
"results_count": 0,
"workout": {
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": null,
"reps": "5"
}
],
"rest": {
"type": "as_needed"
},
"type": "Strength"
},
"type": "Strength"
}
}
],
"name": "Morning Workout",
"occurs_on": "2020-01-01",
"order": 0,
"program_id": "p_123abc",
"publish_at": "2020-01-01T00:00:00Z"
}
'import requests
url = "https://api.wodup.dev/api/public/wods"
payload = {
"components": [
{
"is_alternating": False,
"level": "Rx",
"notes": "Aim for an 80% effort today.",
"notes_for_coaches": "Try to complete this section in 10 minutes.",
"order": 0,
"partners": 0,
"post_instructions": None,
"pre_instructions": "Make sure to warm up your hips first.",
"prefix": "A",
"results_count": 0,
"workout": {
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": None,
"reps": "5"
}
],
"rest": { "type": "as_needed" },
"type": "Strength"
},
"type": "Strength"
}
}
],
"name": "Morning Workout",
"occurs_on": "2020-01-01",
"order": 0,
"program_id": "p_123abc",
"publish_at": "2020-01-01T00:00:00Z"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
components: [
{
is_alternating: false,
level: 'Rx',
notes: 'Aim for an 80% effort today.',
notes_for_coaches: 'Try to complete this section in 10 minutes.',
order: 0,
partners: 0,
post_instructions: null,
pre_instructions: 'Make sure to warm up your hips first.',
prefix: 'A',
results_count: 0,
workout: {
details: {
movements: [{id: 'mv_fT0m3viH', load: null, reps: '5'}],
rest: {type: 'as_needed'},
type: 'Strength'
},
type: 'Strength'
}
}
],
name: 'Morning Workout',
occurs_on: '2020-01-01',
order: 0,
program_id: 'p_123abc',
publish_at: '2020-01-01T00:00:00Z'
})
};
fetch('https://api.wodup.dev/api/public/wods', 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://api.wodup.dev/api/public/wods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'components' => [
[
'is_alternating' => false,
'level' => 'Rx',
'notes' => 'Aim for an 80% effort today.',
'notes_for_coaches' => 'Try to complete this section in 10 minutes.',
'order' => 0,
'partners' => 0,
'post_instructions' => null,
'pre_instructions' => 'Make sure to warm up your hips first.',
'prefix' => 'A',
'results_count' => 0,
'workout' => [
'details' => [
'movements' => [
[
'id' => 'mv_fT0m3viH',
'load' => null,
'reps' => '5'
]
],
'rest' => [
'type' => 'as_needed'
],
'type' => 'Strength'
],
'type' => 'Strength'
]
]
],
'name' => 'Morning Workout',
'occurs_on' => '2020-01-01',
'order' => 0,
'program_id' => 'p_123abc',
'publish_at' => '2020-01-01T00:00:00Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://api.wodup.dev/api/public/wods"
payload := strings.NewReader("{\n \"components\": [\n {\n \"is_alternating\": false,\n \"level\": \"Rx\",\n \"notes\": \"Aim for an 80% effort today.\",\n \"notes_for_coaches\": \"Try to complete this section in 10 minutes.\",\n \"order\": 0,\n \"partners\": 0,\n \"post_instructions\": null,\n \"pre_instructions\": \"Make sure to warm up your hips first.\",\n \"prefix\": \"A\",\n \"results_count\": 0,\n \"workout\": {\n \"details\": {\n \"movements\": [\n {\n \"id\": \"mv_fT0m3viH\",\n \"load\": null,\n \"reps\": \"5\"\n }\n ],\n \"rest\": {\n \"type\": \"as_needed\"\n },\n \"type\": \"Strength\"\n },\n \"type\": \"Strength\"\n }\n }\n ],\n \"name\": \"Morning Workout\",\n \"occurs_on\": \"2020-01-01\",\n \"order\": 0,\n \"program_id\": \"p_123abc\",\n \"publish_at\": \"2020-01-01T00:00:00Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.post("https://api.wodup.dev/api/public/wods")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"components\": [\n {\n \"is_alternating\": false,\n \"level\": \"Rx\",\n \"notes\": \"Aim for an 80% effort today.\",\n \"notes_for_coaches\": \"Try to complete this section in 10 minutes.\",\n \"order\": 0,\n \"partners\": 0,\n \"post_instructions\": null,\n \"pre_instructions\": \"Make sure to warm up your hips first.\",\n \"prefix\": \"A\",\n \"results_count\": 0,\n \"workout\": {\n \"details\": {\n \"movements\": [\n {\n \"id\": \"mv_fT0m3viH\",\n \"load\": null,\n \"reps\": \"5\"\n }\n ],\n \"rest\": {\n \"type\": \"as_needed\"\n },\n \"type\": \"Strength\"\n },\n \"type\": \"Strength\"\n }\n }\n ],\n \"name\": \"Morning Workout\",\n \"occurs_on\": \"2020-01-01\",\n \"order\": 0,\n \"program_id\": \"p_123abc\",\n \"publish_at\": \"2020-01-01T00:00:00Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wodup.dev/api/public/wods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"components\": [\n {\n \"is_alternating\": false,\n \"level\": \"Rx\",\n \"notes\": \"Aim for an 80% effort today.\",\n \"notes_for_coaches\": \"Try to complete this section in 10 minutes.\",\n \"order\": 0,\n \"partners\": 0,\n \"post_instructions\": null,\n \"pre_instructions\": \"Make sure to warm up your hips first.\",\n \"prefix\": \"A\",\n \"results_count\": 0,\n \"workout\": {\n \"details\": {\n \"movements\": [\n {\n \"id\": \"mv_fT0m3viH\",\n \"load\": null,\n \"reps\": \"5\"\n }\n ],\n \"rest\": {\n \"type\": \"as_needed\"\n },\n \"type\": \"Strength\"\n },\n \"type\": \"Strength\"\n }\n }\n ],\n \"name\": \"Morning Workout\",\n \"occurs_on\": \"2020-01-01\",\n \"order\": 0,\n \"program_id\": \"p_123abc\",\n \"publish_at\": \"2020-01-01T00:00:00Z\"\n}"
response = http.request(request)
puts response.read_body{
"components": [
{
"id": "wc_123abc",
"is_alternating": false,
"level": "Rx",
"notes": "Aim for an 80% effort today.",
"notes_for_coaches": "Try to complete this section in 10 minutes.",
"order": 0,
"partners": 0,
"post_instructions": null,
"pre_instructions": "Make sure to warm up your hips first.",
"prefix": "A",
"results_count": 0,
"workout": {
"description": "Back Squat 5 reps",
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": null,
"reps": "5"
}
],
"rest": {
"type": "as_needed"
},
"type": "Strength"
},
"movements": [
{
"complex_details": null,
"description": null,
"has_calories": false,
"has_distance": false,
"has_duration": false,
"has_height": false,
"has_load": true,
"has_power": false,
"has_reps": true,
"id": "mv_fT0m3viH",
"name": "Back Squat",
"source": "wodup",
"video": {
"id": "dQw4w9WgXcQ",
"service": "youtube"
}
}
],
"name": null,
"type": "Strength"
}
}
],
"id": "wod_123abc",
"name": "Morning Workout",
"occurs_on": "2020-01-01",
"order": 0,
"program": {
"access": "private",
"id": "p_123abc",
"name": "Strength and Conditioning",
"period": "continuous",
"status": "active"
},
"publish_at": "2020-01-01T00:00:00Z"
}Wods
Create a WOD
POST
/
api
/
public
/
wods
Create a WOD
curl --request POST \
--url https://api.wodup.dev/api/public/wods \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"components": [
{
"is_alternating": false,
"level": "Rx",
"notes": "Aim for an 80% effort today.",
"notes_for_coaches": "Try to complete this section in 10 minutes.",
"order": 0,
"partners": 0,
"post_instructions": null,
"pre_instructions": "Make sure to warm up your hips first.",
"prefix": "A",
"results_count": 0,
"workout": {
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": null,
"reps": "5"
}
],
"rest": {
"type": "as_needed"
},
"type": "Strength"
},
"type": "Strength"
}
}
],
"name": "Morning Workout",
"occurs_on": "2020-01-01",
"order": 0,
"program_id": "p_123abc",
"publish_at": "2020-01-01T00:00:00Z"
}
'import requests
url = "https://api.wodup.dev/api/public/wods"
payload = {
"components": [
{
"is_alternating": False,
"level": "Rx",
"notes": "Aim for an 80% effort today.",
"notes_for_coaches": "Try to complete this section in 10 minutes.",
"order": 0,
"partners": 0,
"post_instructions": None,
"pre_instructions": "Make sure to warm up your hips first.",
"prefix": "A",
"results_count": 0,
"workout": {
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": None,
"reps": "5"
}
],
"rest": { "type": "as_needed" },
"type": "Strength"
},
"type": "Strength"
}
}
],
"name": "Morning Workout",
"occurs_on": "2020-01-01",
"order": 0,
"program_id": "p_123abc",
"publish_at": "2020-01-01T00:00:00Z"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
components: [
{
is_alternating: false,
level: 'Rx',
notes: 'Aim for an 80% effort today.',
notes_for_coaches: 'Try to complete this section in 10 minutes.',
order: 0,
partners: 0,
post_instructions: null,
pre_instructions: 'Make sure to warm up your hips first.',
prefix: 'A',
results_count: 0,
workout: {
details: {
movements: [{id: 'mv_fT0m3viH', load: null, reps: '5'}],
rest: {type: 'as_needed'},
type: 'Strength'
},
type: 'Strength'
}
}
],
name: 'Morning Workout',
occurs_on: '2020-01-01',
order: 0,
program_id: 'p_123abc',
publish_at: '2020-01-01T00:00:00Z'
})
};
fetch('https://api.wodup.dev/api/public/wods', 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://api.wodup.dev/api/public/wods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'components' => [
[
'is_alternating' => false,
'level' => 'Rx',
'notes' => 'Aim for an 80% effort today.',
'notes_for_coaches' => 'Try to complete this section in 10 minutes.',
'order' => 0,
'partners' => 0,
'post_instructions' => null,
'pre_instructions' => 'Make sure to warm up your hips first.',
'prefix' => 'A',
'results_count' => 0,
'workout' => [
'details' => [
'movements' => [
[
'id' => 'mv_fT0m3viH',
'load' => null,
'reps' => '5'
]
],
'rest' => [
'type' => 'as_needed'
],
'type' => 'Strength'
],
'type' => 'Strength'
]
]
],
'name' => 'Morning Workout',
'occurs_on' => '2020-01-01',
'order' => 0,
'program_id' => 'p_123abc',
'publish_at' => '2020-01-01T00:00:00Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://api.wodup.dev/api/public/wods"
payload := strings.NewReader("{\n \"components\": [\n {\n \"is_alternating\": false,\n \"level\": \"Rx\",\n \"notes\": \"Aim for an 80% effort today.\",\n \"notes_for_coaches\": \"Try to complete this section in 10 minutes.\",\n \"order\": 0,\n \"partners\": 0,\n \"post_instructions\": null,\n \"pre_instructions\": \"Make sure to warm up your hips first.\",\n \"prefix\": \"A\",\n \"results_count\": 0,\n \"workout\": {\n \"details\": {\n \"movements\": [\n {\n \"id\": \"mv_fT0m3viH\",\n \"load\": null,\n \"reps\": \"5\"\n }\n ],\n \"rest\": {\n \"type\": \"as_needed\"\n },\n \"type\": \"Strength\"\n },\n \"type\": \"Strength\"\n }\n }\n ],\n \"name\": \"Morning Workout\",\n \"occurs_on\": \"2020-01-01\",\n \"order\": 0,\n \"program_id\": \"p_123abc\",\n \"publish_at\": \"2020-01-01T00:00:00Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.post("https://api.wodup.dev/api/public/wods")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"components\": [\n {\n \"is_alternating\": false,\n \"level\": \"Rx\",\n \"notes\": \"Aim for an 80% effort today.\",\n \"notes_for_coaches\": \"Try to complete this section in 10 minutes.\",\n \"order\": 0,\n \"partners\": 0,\n \"post_instructions\": null,\n \"pre_instructions\": \"Make sure to warm up your hips first.\",\n \"prefix\": \"A\",\n \"results_count\": 0,\n \"workout\": {\n \"details\": {\n \"movements\": [\n {\n \"id\": \"mv_fT0m3viH\",\n \"load\": null,\n \"reps\": \"5\"\n }\n ],\n \"rest\": {\n \"type\": \"as_needed\"\n },\n \"type\": \"Strength\"\n },\n \"type\": \"Strength\"\n }\n }\n ],\n \"name\": \"Morning Workout\",\n \"occurs_on\": \"2020-01-01\",\n \"order\": 0,\n \"program_id\": \"p_123abc\",\n \"publish_at\": \"2020-01-01T00:00:00Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wodup.dev/api/public/wods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"components\": [\n {\n \"is_alternating\": false,\n \"level\": \"Rx\",\n \"notes\": \"Aim for an 80% effort today.\",\n \"notes_for_coaches\": \"Try to complete this section in 10 minutes.\",\n \"order\": 0,\n \"partners\": 0,\n \"post_instructions\": null,\n \"pre_instructions\": \"Make sure to warm up your hips first.\",\n \"prefix\": \"A\",\n \"results_count\": 0,\n \"workout\": {\n \"details\": {\n \"movements\": [\n {\n \"id\": \"mv_fT0m3viH\",\n \"load\": null,\n \"reps\": \"5\"\n }\n ],\n \"rest\": {\n \"type\": \"as_needed\"\n },\n \"type\": \"Strength\"\n },\n \"type\": \"Strength\"\n }\n }\n ],\n \"name\": \"Morning Workout\",\n \"occurs_on\": \"2020-01-01\",\n \"order\": 0,\n \"program_id\": \"p_123abc\",\n \"publish_at\": \"2020-01-01T00:00:00Z\"\n}"
response = http.request(request)
puts response.read_body{
"components": [
{
"id": "wc_123abc",
"is_alternating": false,
"level": "Rx",
"notes": "Aim for an 80% effort today.",
"notes_for_coaches": "Try to complete this section in 10 minutes.",
"order": 0,
"partners": 0,
"post_instructions": null,
"pre_instructions": "Make sure to warm up your hips first.",
"prefix": "A",
"results_count": 0,
"workout": {
"description": "Back Squat 5 reps",
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": null,
"reps": "5"
}
],
"rest": {
"type": "as_needed"
},
"type": "Strength"
},
"movements": [
{
"complex_details": null,
"description": null,
"has_calories": false,
"has_distance": false,
"has_duration": false,
"has_height": false,
"has_load": true,
"has_power": false,
"has_reps": true,
"id": "mv_fT0m3viH",
"name": "Back Squat",
"source": "wodup",
"video": {
"id": "dQw4w9WgXcQ",
"service": "youtube"
}
}
],
"name": null,
"type": "Strength"
}
}
],
"id": "wod_123abc",
"name": "Morning Workout",
"occurs_on": "2020-01-01",
"order": 0,
"program": {
"access": "private",
"id": "p_123abc",
"name": "Strength and Conditioning",
"period": "continuous",
"status": "active"
},
"publish_at": "2020-01-01T00:00:00Z"
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Headers
Only used by platform integrations
ID of gym to execute on behalf of
Body
application/json
WOD params
POST body for creating a wod
Date WOD is programmed on
Time when WOD is visible
ID of athlete to program WOD for
Components in this WOD
Show child attributes
Show child attributes
WOD name
WOD order if multiple WODs on same day
ID of program to program WOD for
Response
201 - application/json
Create WOD response
⌘I