curl --request POST \
--url https://api.wodup.dev/api/public/workouts \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": null,
"reps": "5"
}
],
"rest": {
"type": "as_needed"
},
"type": "Strength"
},
"type": "Strength"
}
'import requests
url = "https://api.wodup.dev/api/public/workouts"
payload = {
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": None,
"reps": "5"
}
],
"rest": { "type": "as_needed" },
"type": "Strength"
},
"type": "Strength"
}
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({
details: {
movements: [{id: 'mv_fT0m3viH', load: null, reps: '5'}],
rest: {type: 'as_needed'},
type: 'Strength'
},
type: 'Strength'
})
};
fetch('https://api.wodup.dev/api/public/workouts', 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/workouts",
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([
'details' => [
'movements' => [
[
'id' => 'mv_fT0m3viH',
'load' => null,
'reps' => '5'
]
],
'rest' => [
'type' => 'as_needed'
],
'type' => 'Strength'
],
'type' => 'Strength'
]),
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/workouts"
payload := strings.NewReader("{\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}")
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/workouts")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\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}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wodup.dev/api/public/workouts")
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 \"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}"
response = http.request(request)
puts response.read_body{
"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"
}{
"errors": {}
}{
"errors": {}
}Create a workout
curl --request POST \
--url https://api.wodup.dev/api/public/workouts \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": null,
"reps": "5"
}
],
"rest": {
"type": "as_needed"
},
"type": "Strength"
},
"type": "Strength"
}
'import requests
url = "https://api.wodup.dev/api/public/workouts"
payload = {
"details": {
"movements": [
{
"id": "mv_fT0m3viH",
"load": None,
"reps": "5"
}
],
"rest": { "type": "as_needed" },
"type": "Strength"
},
"type": "Strength"
}
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({
details: {
movements: [{id: 'mv_fT0m3viH', load: null, reps: '5'}],
rest: {type: 'as_needed'},
type: 'Strength'
},
type: 'Strength'
})
};
fetch('https://api.wodup.dev/api/public/workouts', 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/workouts",
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([
'details' => [
'movements' => [
[
'id' => 'mv_fT0m3viH',
'load' => null,
'reps' => '5'
]
],
'rest' => [
'type' => 'as_needed'
],
'type' => 'Strength'
],
'type' => 'Strength'
]),
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/workouts"
payload := strings.NewReader("{\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}")
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/workouts")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\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}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wodup.dev/api/public/workouts")
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 \"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}"
response = http.request(request)
puts response.read_body{
"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"
}{
"errors": {}
}{
"errors": {}
}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
"gym_123abc"
Body
POST body for creating a workout
A workout's structure, one object shape per workout type, discriminated by type.
- AmrapDetails
- CardioDetails
- CardioIntervalsDetails
- DeathByDetails
- EmomDetails
- FgbDetails
- ForTimeDetails
- FranStyleDetails
- GenericDetails
- MaxRepsDetails
- RoundsForTimeDetails
- StrengthDetails
- TabataDetails
- TwelveDaysDetails
- WarmUpDetails
Show child attributes
Show child attributes
Workout type
Amrap, Cardio, CardioIntervals, DeathBy, Emom, Fgb, ForTime, FranStyle, Generic, MaxReps, RoundsForTime, Strength, Tabata, TwelveDays, WarmUp Response
Workout
Workout object
A human readable description of the workout
A workout's structure, one object shape per workout type, discriminated by type. The AccessoryWorkDetails and WeightliftingTotalDetails members are deprecated and appear only in historical workouts.
- AmrapDetails
- CardioDetails
- CardioIntervalsDetails
- DeathByDetails
- EmomDetails
- FgbDetails
- ForTimeDetails
- FranStyleDetails
- GenericDetails
- MaxRepsDetails
- RoundsForTimeDetails
- StrengthDetails
- TabataDetails
- TwelveDaysDetails
- WarmUpDetails
- AccessoryWorkDetails
- WeightliftingTotalDetails
Show child attributes
Show child attributes
Movement objects referenced by this workout
Show child attributes
Show child attributes
Workout type. AccessoryWork and WeightliftingTotal are deprecated legacy types returned only for historical workouts; they cannot be created.
Amrap, Cardio, CardioIntervals, DeathBy, Emom, Fgb, ForTime, FranStyle, Generic, MaxReps, RoundsForTime, Strength, Tabata, TwelveDays, WarmUp, AccessoryWork, WeightliftingTotal An official name for the workout