Skip to main content

When my app attempts to update an athlete’s activity (title, description), the API is returning an HTML page saying that Strava is temporarily unavailable. This is accompanied with a 503 error. Two things worth noting are:

  1. The activity is actually updated, so that seems to rule out any authentication/authorization issues.
  2. As of now, the status page at strava.status.com shows all systems are online. 

Is anyone else experiencing this? And is this really a Strava issue or might there be something I need to change on my end?

Here’s the response text I’ve been receiving:

<!DOCTYPE html>
<html>
<head>
<title>Strava is temporarily unavailable</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1' />
<meta name='robots' content='noindex' />
<link href='http://strava.static.s3.amazonaws.com/images/favicon.ico' rel='icon' type='image/x-icon'>

<style>
/* Resets */
* {
box-sizing: border-box;
}
body {
background-color: #fff;
color: #333;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.45em;
margin: 0;
padding: 0;
}

/* Scaffolding */
header, footer, main {
display: block;
}
header, footer {
background-color: #fff;
}
header {
border-bottom: 1px solid #ddd;
padding: 15px 0;
}
main {
flex: 1 1 auto;
min-height: 80vh;
}
footer {
border-top: 1px solid #eee;
color: #999;
font-size: 12px;
padding: 30px 0;
}

/* Typography */
h1, h2 {
line-height: 1.2em;
font-weight: 300;
}
h2 {
font-size: 30px;
margin-top: 0;
}

/* Components */
.branding svg {
display: block;
height: 24px;
}
.container {
margin: 0 auto;
padding: 0 20px;
max-width: 992px;
}

/* Canary */
.canary {
margin: 30px 0 0;
}
button {
border: 0;
font-size: 14px;
padding: 10px 20px;
color: #fff;
background-color: #fc4c02;
cursor: pointer;
transition: background-color 0.1s ease, box-shadow 0.1s ease;
}
button:hover {
background-color: #c93d02;
box-shadow: 0px 2px 5px rgba(0,0,0,0.33);
}

/* Page Styles */
.main {
background-image: url(http://strava.static.s3.amazonaws.com/images/img-error-500.svg);
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.main,
.error-container {
display: flex;
align-items: center;
}
.error-container {
margin-left: 50%;
width: 100%;
}

/* Media Query Styles */
@media (max-width: 768px) {
.error-container {
display: block;
margin: 0;
}
.main {
background: none;
flex-direction: column;
min-height: 100vw;
}
.main:after {
content: '';
display: block;
background-image: url(http://strava.static.s3.amazonaws.com/images/img-error-500.svg);
background-repeat: no-repeat;
background-size: cover;
background-position: left center;
flex: 1 1 auto;
width: 100%;
min-height: 75vw;
}
.error-container {
padding-bottom: 30px;
border-bottom: 1px solid #eee;
}
}
</style>
</head>

<body>
<div class='view'>
<header>
<div class='container'>
<div class='branding'>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0" y="0" viewBox="0 0 200 42" xml:space="preserve">
<path d="M19.16 40.4c-3.81 0-7.36-0.53-10.65-1.58C5.22 37.77 2.38 36.2 0 34.1l6.67-7.95c2.03 1.56 4.17 2.69 6.4 3.36 2.24 0.68 4.47 1.01 6.67 1.01 1.14 0 1.96-0.14 2.46-0.42 0.5-0.29 0.75-0.68 0.75-1.17V28.82c0-0.54-0.37-0.99-1.09-1.34 -0.73-0.36-2.09-0.73-4.08-1.12 -2.1-0.43-4.1-0.93-6-1.5 -1.9-0.56-3.58-1.3-5.02-2.19 -1.44-0.89-2.59-2.01-3.44-3.36 -0.85-1.35-1.28-3.01-1.28-4.96v-0.11c0-1.78 0.35-3.44 1.04-4.96C3.76 7.75 4.77 6.41 6.11 5.28c1.34-1.14 2.99-2.03 4.97-2.67 1.97-0.64 4.24-0.96 6.8-0.96 3.63 0 6.8 0.43 9.52 1.29 2.72 0.85 5.17 2.13 7.34 3.84l-6.08 8.44c-1.78-1.28-3.66-2.22-5.63-2.81 -1.98-0.59-3.83-0.88-5.58-0.88 -0.92 0-1.61 0.14-2.05 0.43 -0.45 0.28-0.67 0.66-0.67 1.12v0.11c0 0.5 0.33 0.93 1.01 1.29 0.68 0.35 1.99 0.73 3.95 1.12 2.38 0.43 4.55 0.94 6.52 1.54 1.95 0.61 3.64 1.38 5.04 2.33 1.41 0.94 2.49 2.07 3.26 3.39 0.76 1.32 1.15 2.92 1.15 4.8v0.11c0 1.95-0.39 3.72-1.18 5.28 -0.78 1.57-1.89 2.89-3.31 3.98 -1.42 1.08-3.15 1.92-5.18 2.51C23.97 40.1 21.69 40.4 19.16 40.4L19.16 40.4z" fill="#FC4C02"/><polygon points="45.96 12.9 34.96 12.9 34.96 2.34 69.45 2.34 69.45 12.9 58.45 12.9 58.45 39.7 45.96 39.7 " fill="#FC4C02"/><path d="M89.09 20.11c1.5 0 2.67-0.32 3.52-0.96 0.85-0.64 1.28-1.53 1.28-2.67v-0.11c0-1.21-0.43-2.11-1.28-2.69 -0.85-0.59-2.01-0.88-3.47-0.88h-5.45v7.31H89.09L89.09 20.11zM71.2 2.34h18.26c3.34 0 6.09 0.38 8.24 1.15 2.16 0.76 3.89 1.81 5.21 3.12 1.14 1.14 2 2.42 2.57 3.84 0.57 1.42 0.85 3.1 0.85 5.01v0.11c0 2.74-0.66 5.05-1.98 6.94 -1.31 1.89-3.11 3.39-5.39 4.48l8.7 12.7H93.41l-7.05-10.67H86.26h-2.57v10.67H71.2V2.34L71.2 2.34z" fill="#FC4C02"/><polygon points="179.89 23.63 188.03 39.7 200 39.7 179.89 0 159.78 39.7 171.75 39.7 " fill="#FC4C02"/><polygon points="123.92 23.63 132.06 39.7 144.03 39.7 123.92 0 103.82 39.7 115.78 39.7 " fill="#FC4C02"/><polygon points="151.91 18.41 143.77 2.34 131.8 2.34 151.91 42.04 172.01 2.34 160.05 2.34 " fill="#FC4C02"/>
</svg>
</div>
</div>
</header>

<main class='main'>
<div class='error-container container'>
<div class='error-content'>
<h1 id='status-title'>Strava is temporarily unavailable.</h1>
<p id='status-summary'></p>
<p>Check <a href='http://status.strava.com'>Strava Status</a> for more information. Thanks for your patience.</p>
</div>
</div>
</main>

<footer>
<div class='container'>
<div class='copyright'>© 2020 Strava, Inc.</div>
</div>
</footer>
</div>

<script src='https://code.jquery.com/jquery-1.11.2.min.js'></script>
<script src='https://statuspage-production.s3.amazonaws.com/se-v2.js'></script>
<script>
var messages = {
'maintenance': {
'title': "Strava is offline for scheduled maintenance",
'details': "The site's in the shop for a little tune-up."
},
'unavailable': {
'title': "Strava is temporarily unavailable",
'details': "We hit a road block, but our team is working on an alternate route."
}
};
function buildSummary(data) {
var active = data.scheduled_maintenances.filter(function(m) {
return m.status == "in_progress" || m.status == "verifying";
});
var category = (active.length > 0) ? "maintenance" : "unavailable";
showMessages(category);
}
function buildError() {
showMessages("unavailable");
}
function showMessages(category) {
$('#status-title').text(messages(category]c"title"]);
$('#status-summary').text(messages(category]c"details"]);

var cookies = document.cookie.split(';');
for(var i = 0; i < cookies.length; i++) {
var c = cookies=i].trim();
if (c.indexOf('_canary=') == 0) {
createCanaryButton();
}
if (c.indexOf('_sandbox') == 0) {
createSandboxButton();
}
}
}
function createCanaryButton() {
var button = document.createElement('button');
button.id = 'delete-cookie-button';
button.appendChild(document.createTextNode('Your canary has been recycled. Click here to delete your _canary cookie.'));

$('.error-content').append(button);

$(button).click(function() {
document.cookie = '_canary=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=.www.strava.com; path=/'

window.location.reload(false);
});
}
function createSandboxButton() {
var button = document.createElement('button');
button.id = 'delete-cookie-button';
button.appendChild(document.createTextNode('Your sandbox has been recycled. Click here to delete your _sandbox cookie.'));

$('.error-content').append(button);

$(button).click(function() {
document.cookie = '_sandbox=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=.www.dev.strava.com; path=/'

window.location.reload(false);
});
}
function onReady() {
try {
var sp = new StatusPage.page({page: 'frsctv3lx5sn'});
sp.summary({success: buildSummary, error: buildError});
}
catch(err) {
buildError();
}
}
$(document).ready(onReady);
</script>
</body>
</html>

 

Hello, if this still occurs, please reach out to developers@strava.com.