Time tracking
Stop a timer
Stops the active timer for the authenticated user and creates a time entry as a side effect. Returns the created time entry.
DELETE
/
{team_id}
/
time
/
timer
Stop the current user's timer
curl --request DELETE \
--url https://api.superthread.com/v1/{team_id}/time/timer \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superthread.com/v1/{team_id}/time/timer"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.superthread.com/v1/{team_id}/time/timer', 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.superthread.com/v1/{team_id}/time/timer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.superthread.com/v1/{team_id}/time/timer"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.superthread.com/v1/{team_id}/time/timer")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superthread.com/v1/{team_id}/time/timer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"time_entry": {
"id": "01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"team_id": "tDsu0j19",
"card_id": "2700",
"user_id": "uR2dws11",
"started_at": 1608742037016,
"duration_seconds": 1800,
"billable": true,
"rate_snapshot_cents": 12500,
"currency_snapshot": "GBP",
"source": "manual",
"version": 1,
"type": "time_entry",
"scope_type": "card",
"scope_id": "<string>",
"card_title_snapshot": "Prepare September campaign",
"space_id_snapshot": "space_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"project_id_snapshot": "2701",
"board_id_snapshot": "board_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"sprint_id_snapshot": "sprint_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"ancestor_card_ids_snapshot": [
"<string>"
],
"time_category_id": "tc_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"category_id": "<string>",
"description": "Pairing with Alex on the API spec",
"needs_review": true,
"review_reason": "abandoned_timer",
"reviewed_at": 1608742037016,
"reviewed_by": "<string>",
"deleted_at": 1608742037016,
"locked_at": 1608742037016,
"time_created": 1608742037016,
"time_updated": 1608742037016
}
}{
"error": {
"id": "err5f744ab",
"code": 403,
"sec": "SEC:000-00014",
"message": "You do not have access to this resource",
"date": 1608742037016
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Client-generated ULID used to replay a time mutation safely. Optional only for legacy clients during rolling migration.
Path Parameters
Team ID is an alphanumerical string that identifies a Team. This is externally referred to as a "Workspace".
Response
Timer stopped; created time entry returned
A durable work record. Card ownership metadata is captured when the entry is created, so later card moves or renames do not retroactively change historical reports.
Show child attributes
Show child attributes
⌘I
Stop the current user's timer
curl --request DELETE \
--url https://api.superthread.com/v1/{team_id}/time/timer \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superthread.com/v1/{team_id}/time/timer"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.superthread.com/v1/{team_id}/time/timer', 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.superthread.com/v1/{team_id}/time/timer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.superthread.com/v1/{team_id}/time/timer"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.superthread.com/v1/{team_id}/time/timer")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superthread.com/v1/{team_id}/time/timer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"time_entry": {
"id": "01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"team_id": "tDsu0j19",
"card_id": "2700",
"user_id": "uR2dws11",
"started_at": 1608742037016,
"duration_seconds": 1800,
"billable": true,
"rate_snapshot_cents": 12500,
"currency_snapshot": "GBP",
"source": "manual",
"version": 1,
"type": "time_entry",
"scope_type": "card",
"scope_id": "<string>",
"card_title_snapshot": "Prepare September campaign",
"space_id_snapshot": "space_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"project_id_snapshot": "2701",
"board_id_snapshot": "board_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"sprint_id_snapshot": "sprint_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"ancestor_card_ids_snapshot": [
"<string>"
],
"time_category_id": "tc_01HQK6Z9YJZ4M9JX8FVB6QXYAB",
"category_id": "<string>",
"description": "Pairing with Alex on the API spec",
"needs_review": true,
"review_reason": "abandoned_timer",
"reviewed_at": 1608742037016,
"reviewed_by": "<string>",
"deleted_at": 1608742037016,
"locked_at": 1608742037016,
"time_created": 1608742037016,
"time_updated": 1608742037016
}
}{
"error": {
"id": "err5f744ab",
"code": 403,
"sec": "SEC:000-00014",
"message": "You do not have access to this resource",
"date": 1608742037016
}
}