Task metrics
Needs: Tasks, Read
Returns the Tasks page header totals for a period: billable hours and minutes (completed billable tasks, using charge minutes where there are charges, otherwise the task duration), task, completed, incomplete and overdue counts, scheduled minutes, and outstanding tasks from before the period.
Note:
groupsis only returned withgroup_by. Forclientandassigneeeach group also has aname.
curl -X GET "https://app.imploy.com.au/api/integrations/v1/tasks/metrics?from=example_string&to=example_string&client_id=123&assignee_id=123&group_by=example_string" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://app.imploy.com.au/api/integrations/v1/tasks/metrics?from=example_string&to=example_string&client_id=123&assignee_id=123&group_by=example_string"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://app.imploy.com.au/api/integrations/v1/tasks/metrics?from=example_string&to=example_string&client_id=123&assignee_id=123&group_by=example_string", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://app.imploy.com.au/api/integrations/v1/tasks/metrics?from=example_string&to=example_string&client_id=123&assignee_id=123&group_by=example_string", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://app.imploy.com.au/api/integrations/v1/tasks/metrics?from=example_string&to=example_string&client_id=123&assignee_id=123&group_by=example_string')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"from": "2026-03-02",
"to": "2026-03-08",
"totals": {
"tasks": 24,
"completed": 18,
"incomplete": 6,
"overdue": 2,
"billable_tasks": 20,
"billable_minutes": 540,
"billable_hours": 9,
"scheduled_minutes": 720,
"outstanding_before_period": 3
},
"groups": [
{
"key": "2026-03-02",
"tasks": 5,
"completed": 4,
"incomplete": 1,
"overdue": 0,
"billable_tasks": 4,
"billable_minutes": 120,
"billable_hours": 2,
"scheduled_minutes": 150
}
]
}
{
"message": "Invalid or expired access token."
}
{
"message": "Access token does not permit this action."
}
{
"message": "Too many requests."
}
/tasks/metrics
Target server for requests. Edit to use your own host.
An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
imp_at_. Send it as Authorization: Bearer imp_at_XXXX.YYYY-MM-DD. Defaults to this week.
YYYY-MM-DD.
Only this client.
Only this staff member.
An optional breakdown: client, assignee, day or week.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
Query Parameters
YYYY-MM-DD. Defaults to this week.
YYYY-MM-DD.
Only this client.
Only this staff member.
An optional breakdown: client, assignee, day or week.
Responses
OK