curl --request PUT \
--url https://api.everhour.com/tasks/{task_id} \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"name": "Task Name",
"section": 1234,
"labels": [
"high",
"bug"
],
"status": "open",
"color": "#fdb301",
"dueOn": "2018-03-05",
"startOn": "2018-03-01",
"description": "<string>",
"assignees": [
{
"userId": 123,
"accountId": "<string>"
}
],
"tags": [
123
],
"fields": [
{}
],
"cover": {
"coverId": 123,
"coverPick": "recent"
}
}
'import requests
url = "https://api.everhour.com/tasks/{task_id}"
payload = {
"name": "Task Name",
"section": 1234,
"labels": ["high", "bug"],
"status": "open",
"color": "#fdb301",
"dueOn": "2018-03-05",
"startOn": "2018-03-01",
"description": "<string>",
"assignees": [
{
"userId": 123,
"accountId": "<string>"
}
],
"tags": [123],
"fields": [{}],
"cover": {
"coverId": 123,
"coverPick": "recent"
}
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Task Name',
section: 1234,
labels: ['high', 'bug'],
status: 'open',
color: '#fdb301',
dueOn: '2018-03-05',
startOn: '2018-03-01',
description: '<string>',
assignees: [{userId: 123, accountId: '<string>'}],
tags: [123],
fields: [{}],
cover: {coverId: 123, coverPick: 'recent'}
})
};
fetch('https://api.everhour.com/tasks/{task_id}', 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.everhour.com/tasks/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Task Name',
'section' => 1234,
'labels' => [
'high',
'bug'
],
'status' => 'open',
'color' => '#fdb301',
'dueOn' => '2018-03-05',
'startOn' => '2018-03-01',
'description' => '<string>',
'assignees' => [
[
'userId' => 123,
'accountId' => '<string>'
]
],
'tags' => [
123
],
'fields' => [
[
]
],
'cover' => [
'coverId' => 123,
'coverPick' => 'recent'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.everhour.com/tasks/{task_id}"
payload := strings.NewReader("{\n \"name\": \"Task Name\",\n \"section\": 1234,\n \"labels\": [\n \"high\",\n \"bug\"\n ],\n \"status\": \"open\",\n \"color\": \"#fdb301\",\n \"dueOn\": \"2018-03-05\",\n \"startOn\": \"2018-03-01\",\n \"description\": \"<string>\",\n \"assignees\": [\n {\n \"userId\": 123,\n \"accountId\": \"<string>\"\n }\n ],\n \"tags\": [\n 123\n ],\n \"fields\": [\n {}\n ],\n \"cover\": {\n \"coverId\": 123,\n \"coverPick\": \"recent\"\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.put("https://api.everhour.com/tasks/{task_id}")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Task Name\",\n \"section\": 1234,\n \"labels\": [\n \"high\",\n \"bug\"\n ],\n \"status\": \"open\",\n \"color\": \"#fdb301\",\n \"dueOn\": \"2018-03-05\",\n \"startOn\": \"2018-03-01\",\n \"description\": \"<string>\",\n \"assignees\": [\n {\n \"userId\": 123,\n \"accountId\": \"<string>\"\n }\n ],\n \"tags\": [\n 123\n ],\n \"fields\": [\n {}\n ],\n \"cover\": {\n \"coverId\": 123,\n \"coverPick\": \"recent\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.everhour.com/tasks/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Task Name\",\n \"section\": 1234,\n \"labels\": [\n \"high\",\n \"bug\"\n ],\n \"status\": \"open\",\n \"color\": \"#fdb301\",\n \"dueOn\": \"2018-03-05\",\n \"startOn\": \"2018-03-01\",\n \"description\": \"<string>\",\n \"assignees\": [\n {\n \"userId\": 123,\n \"accountId\": \"<string>\"\n }\n ],\n \"tags\": [\n 123\n ],\n \"fields\": [\n {}\n ],\n \"cover\": {\n \"coverId\": 123,\n \"coverPick\": \"recent\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "ev:9876543210",
"name": "Task Name",
"projects": [
"ev:1234567890"
],
"type": "task",
"url": "https://github.com/acme/web/issues/8688",
"number": "ED-774",
"section": 1234,
"labels": [
"high",
"bug"
],
"position": 1,
"description": "<string>",
"dueAt": "2018-03-05 16:00:00",
"dueOn": "2024-10-31",
"status": "open",
"completed": false,
"completedAt": "2024-01-24 14:36:20",
"createdAt": "2023-04-07 13:11:20",
"createdBy": 1304,
"favorite": false,
"assignees": [
{
"userId": 1304,
"accountId": "gh:313991",
"accountName": "jbender"
}
],
"iteration": "In Progress",
"color": "#edacc7",
"comments": 1,
"time": {
"total": 7200,
"users": {
"1304": 3600,
"1543": 3600
},
"timerTime": 5400
},
"estimate": {
"total": 7200,
"type": "overall",
"users": {
"1304": 3600,
"1543": 3600
}
},
"attributes": {
"Client": "Everhour",
"Priority": "high"
},
"metrics": {
"efforts": 42,
"expenses": 199
},
"unbillable": false
}Update Task
Update task fields (name, status, due date, section, labels).
curl --request PUT \
--url https://api.everhour.com/tasks/{task_id} \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"name": "Task Name",
"section": 1234,
"labels": [
"high",
"bug"
],
"status": "open",
"color": "#fdb301",
"dueOn": "2018-03-05",
"startOn": "2018-03-01",
"description": "<string>",
"assignees": [
{
"userId": 123,
"accountId": "<string>"
}
],
"tags": [
123
],
"fields": [
{}
],
"cover": {
"coverId": 123,
"coverPick": "recent"
}
}
'import requests
url = "https://api.everhour.com/tasks/{task_id}"
payload = {
"name": "Task Name",
"section": 1234,
"labels": ["high", "bug"],
"status": "open",
"color": "#fdb301",
"dueOn": "2018-03-05",
"startOn": "2018-03-01",
"description": "<string>",
"assignees": [
{
"userId": 123,
"accountId": "<string>"
}
],
"tags": [123],
"fields": [{}],
"cover": {
"coverId": 123,
"coverPick": "recent"
}
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Task Name',
section: 1234,
labels: ['high', 'bug'],
status: 'open',
color: '#fdb301',
dueOn: '2018-03-05',
startOn: '2018-03-01',
description: '<string>',
assignees: [{userId: 123, accountId: '<string>'}],
tags: [123],
fields: [{}],
cover: {coverId: 123, coverPick: 'recent'}
})
};
fetch('https://api.everhour.com/tasks/{task_id}', 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.everhour.com/tasks/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Task Name',
'section' => 1234,
'labels' => [
'high',
'bug'
],
'status' => 'open',
'color' => '#fdb301',
'dueOn' => '2018-03-05',
'startOn' => '2018-03-01',
'description' => '<string>',
'assignees' => [
[
'userId' => 123,
'accountId' => '<string>'
]
],
'tags' => [
123
],
'fields' => [
[
]
],
'cover' => [
'coverId' => 123,
'coverPick' => 'recent'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.everhour.com/tasks/{task_id}"
payload := strings.NewReader("{\n \"name\": \"Task Name\",\n \"section\": 1234,\n \"labels\": [\n \"high\",\n \"bug\"\n ],\n \"status\": \"open\",\n \"color\": \"#fdb301\",\n \"dueOn\": \"2018-03-05\",\n \"startOn\": \"2018-03-01\",\n \"description\": \"<string>\",\n \"assignees\": [\n {\n \"userId\": 123,\n \"accountId\": \"<string>\"\n }\n ],\n \"tags\": [\n 123\n ],\n \"fields\": [\n {}\n ],\n \"cover\": {\n \"coverId\": 123,\n \"coverPick\": \"recent\"\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.put("https://api.everhour.com/tasks/{task_id}")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Task Name\",\n \"section\": 1234,\n \"labels\": [\n \"high\",\n \"bug\"\n ],\n \"status\": \"open\",\n \"color\": \"#fdb301\",\n \"dueOn\": \"2018-03-05\",\n \"startOn\": \"2018-03-01\",\n \"description\": \"<string>\",\n \"assignees\": [\n {\n \"userId\": 123,\n \"accountId\": \"<string>\"\n }\n ],\n \"tags\": [\n 123\n ],\n \"fields\": [\n {}\n ],\n \"cover\": {\n \"coverId\": 123,\n \"coverPick\": \"recent\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.everhour.com/tasks/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Task Name\",\n \"section\": 1234,\n \"labels\": [\n \"high\",\n \"bug\"\n ],\n \"status\": \"open\",\n \"color\": \"#fdb301\",\n \"dueOn\": \"2018-03-05\",\n \"startOn\": \"2018-03-01\",\n \"description\": \"<string>\",\n \"assignees\": [\n {\n \"userId\": 123,\n \"accountId\": \"<string>\"\n }\n ],\n \"tags\": [\n 123\n ],\n \"fields\": [\n {}\n ],\n \"cover\": {\n \"coverId\": 123,\n \"coverPick\": \"recent\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "ev:9876543210",
"name": "Task Name",
"projects": [
"ev:1234567890"
],
"type": "task",
"url": "https://github.com/acme/web/issues/8688",
"number": "ED-774",
"section": 1234,
"labels": [
"high",
"bug"
],
"position": 1,
"description": "<string>",
"dueAt": "2018-03-05 16:00:00",
"dueOn": "2024-10-31",
"status": "open",
"completed": false,
"completedAt": "2024-01-24 14:36:20",
"createdAt": "2023-04-07 13:11:20",
"createdBy": 1304,
"favorite": false,
"assignees": [
{
"userId": 1304,
"accountId": "gh:313991",
"accountName": "jbender"
}
],
"iteration": "In Progress",
"color": "#edacc7",
"comments": 1,
"time": {
"total": 7200,
"users": {
"1304": 3600,
"1543": 3600
},
"timerTime": 5400
},
"estimate": {
"total": 7200,
"type": "overall",
"users": {
"1304": 3600,
"1543": 3600
}
},
"attributes": {
"Client": "Everhour",
"Priority": "high"
},
"metrics": {
"efforts": 42,
"expenses": 199
},
"unbillable": false
}Authorizations
Path Parameters
Task ID
"ev:3000010034"
Body
"Task Name"
Section ID
1234
["high", "bug"]
open, closed "open"
Label color, max 15 chars.
"#fdb301"
Due date, format Y-m-d. Send "" to clear.
"2018-03-05"
Start date, format Y-m-d. Send "" to clear.
"2018-03-01"
Plain-text description, max 2000 chars.
Task assignees.
Show child attributes
Show child attributes
Tag IDs, max 10.
Custom field values.
Show child attributes
Show child attributes
Response
OK
"ev:9876543210"
"Task Name"
List of projects ID
["ev:1234567890"]
Object kind reported by the source platform.
"task"
Link to the task in the source platform. Absent for native Everhour tasks.
"https://github.com/acme/web/issues/8688"
Issue number or key in the source platform. Absent for native Everhour tasks.
"ED-774"
Section ID
1234
["high", "bug"]
1
Format: Y-m-d H:i:s
"2018-03-05 16:00:00"
Due date without a time component. Format: Y-m-d
"2024-10-31"
open, completed, closed "open"
Mirrors status — true when the task is done in the source platform.
false
When the task was completed. Format: Y-m-d H:i:s
"2024-01-24 14:36:20"
Format: Y-m-d H:i:s
"2023-04-07 13:11:20"
ID of the user who created the task. Native Everhour tasks only.
1304
Whether you marked this task as a favorite.
false
Who the task is assigned to. null when the source platform reports no assignee data, and an empty array when the task is unassigned.
Show child attributes
Show child attributes
Sprint, board column, or section the task sits in, as reported by the source platform.
"In Progress"
Task color as a hex value. Native Everhour tasks only.
"#edacc7"
Number of comments on the task.
1
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Custom attributes from integration
Show child attributes
Show child attributes
{ "Client": "Everhour", "Priority": "high" }
Custom metrics from integration
Show child attributes
Show child attributes
{ "efforts": 42, "expenses": 199 }
true when the task is marked as non-billable.
false
