dev.phoenix.betimely.com Open in urlscan Pro
2606:4700:3035::ac43:ab74  Public Scan

URL: https://dev.phoenix.betimely.com/
Submission: On March 06 via api from US — Scanned from US

Form analysis 0 forms found in the DOM

Text Content

NAV
cURL

 * Introduction
 * Authentication
 * Authorization
   * OAuth Code
   * OAuth Token
 * Accounts
   * List all accounts
   * Retrieve activities
   * Retrieve an account
 * Clients
   * Create a client
   * List all clients
   * Show client
   * Update a client
 * Events
   * Create an event
   * Create an event for a project
   * Create an event for another user
   * Create bulk events
   * Delete an event
   * Delete bulk events
   * List all events
   * List all events for a project
   * List all events for a user
   * Logged in user updating details and user of an event
   * Loggedin user updating details and project of their event
   * Retrieve an event
   * Start timer on an event
   * Stop timer on an event
   * Update an event
   * Update bulk events
 * Forecasts (Tasks)
   * Create a forecast
   * Delete a forecast
   * List all forecasts
   * Update a forecast
 * Labels
   * Create a label
   * Delete a label
   * List all child labels
   * List all labels
   * Retrieve a label
   * Update a label
 * Permissions
   * Retrieve current user's permissions
   * Retrieve user's permissions by id
 * Projects
   * Create a project
   * Delete a project
   * List all projects
   * Retrieve a project
   * Update a project
 * Reports
   * All Reports
   * Filter reports
 * Roles
   * List roles
 * Teams
   * Create a team
   * Delete a team
   * List all teams
   * Retrieve a team
   * Update a team
 * UserCapacities
   * Retrieve capacities
   * Retrieve user's capacities
 * Users
   * Create/Invite a user
   * Delete a user
   * List all users
   * Retrieve a user
   * Retrieve current user
   * Update a user
 * Webhooks
   * Create a webhook
   * Delete a webhook
   * List all webhooks
   * Retrieve a webhook
   * Update a webhook
 * Errors


INTRODUCTION

Welcome! This document provides a full list of all Timely APIs currently
available, so you can start integrating Timely with your favorite applications.

Got questions? Please send them to support@timelyapp.com.


AUTHENTICATION

OAuth2 Authentication: http://tools.ietf.org/html/rfc6749

Create an OAuth Application (only available to the Admin User):
https://app.timelyapp.com/:account_id/oauth_applications

Enter your application name and the redirect_url to your application.

Acquire the Application Id and Secret.

> The base URL for all API's is: https://api.timelyapp.com/1.1


AUTHORIZATION

Timely's OAuth implementation supports the standard authorization code grant
type. You should implement the application flow described below to obtain an
authorization code and then exchange it for a token.


OAUTH CODE

Example Request: (try this in your web browser)
https://api.timelyapp.com/1.1/oauth/authorize?response_type=code
&redirect_uri=your_redirect_uri&client_id=your_client_id


Users are redirected to request their Timely identity.


HTTP REQUEST

GET /oauth/authorize


COMPULSORY PARAMETERS

Parameter Description response_type code redirect_uri http://your-redirect-url/
client_id your_application_id

If the user accepts your request, Timely will redirect back with the code
parameter, which you need to use to get the token.


OAUTH TOKEN

Example Request:
curl -X POST --data "redirect_uri=https://your-redirect_url/&code=your_response_code
&client_id=application_id&client_secret=application_secret&grant_type=authorization_code"
https://api.timelyapp.com/1.1/oauth/token


{
  "access_token":"1886f011cd72eabc88d087eabd741b51a9059f5ba57c7bc439285fe86a4e465a",
  "token_type":"bearer",
  "refresh_token":"9db4d1a5d87c707b8125d8f93ad08091fb3ff8b93be901dbeaba968cf532ed9b"
}


200 OK


Users are redirected to request their Timely identity.


HTTP REQUEST

POST /oauth/token


COMPULSORY PARAMETERS

Parameter Description redirect_uri http://your-redirect-url/ code
your_response_code client_id your_application_id client_secret
your_application_secret grant_type authorization_code

The response will be a token with a refresh token. Use the token to use the
following API.

Use Timely API to integrate with your apps

Timely API helps you integrate your application with Timely. Following are the
list of API’s available. For any help or support email support@timelyapp.com


ACCOUNTS


LIST ALL ACCOUNTS

Returns all the accounts created against one email address.


REQUEST

curl -g "https://api.timelyapp.com/1.1/accounts" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer aO3K0iihHE-rMKV76ueatVdsQO-Xg9xN-NoiV9dB__s" \
    -H "Cookie: "


ENDPOINT

GET /1.1/accounts

GET /1.1/accounts
Accept: application/json
Content-Type: application/json
Authorization: Bearer aO3K0iihHE-rMKV76ueatVdsQO-Xg9xN-NoiV9dB__s


PARAMETERS

None known.


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 18,
    "name": "Timely",
    "color": "44505e",
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "logo": {
      "large_retina": "/assets/account_thumbs/account_large_retina-8bc212c450af14b3a0ea49098cdddbe4f90d5eb5fc57adfeade6ac1ad8fb1d4a.png",
      "medium_retina": "/assets/account_thumbs/account_medium_retina-10dfbcc6733ccba1d485971f63c5eb7f9b7ed1a942a0ebd140e292bcb1e4dbea.png",
      "small_retina": "/assets/account_thumbs/account_small_retina-ea5df153b4cd96fc801e2361afc7d1b06d7b95ce5c358250b81149e1a20689df.png",
      "brand_logo": false
    },
    "from": "Web",
    "max_users": 0,
    "seats": 1,
    "max_projects": 0,
    "plan_id": 18,
    "plan_name": "Essential",
    "next_charge": "2023-08-13",
    "start_of_week": 0,
    "created_at": 1689251103,
    "payment_mode": "web",
    "paid": true,
    "company_size": "10-49",
    "plan_code": "essential",
    "plan_custom": false,
    "appstore_transaction_id": null,
    "owner_id": 40,
    "weekly_user_capacity": 40.0,
    "default_work_days": "MON,TUE,WED,THU,FRI",
    "default_hour_rate": 0.0,
    "support_email": "support@timelyapp.com",
    "estimated_company_size": null,
    "industry": null,
    "memory_retention_days": 0,
    "num_users": 1,
    "num_projects": 0,
    "active_projects_count": 0,
    "total_projects_count": 0,
    "capacity": {
      "hours": 40,
      "minutes": 0,
      "seconds": 0.0,
      "formatted": "40:00",
      "total_hours": 40.0,
      "total_seconds": 144000.0,
      "total_minutes": 2400.0
    },
    "status": "active",
    "beta": false,
    "azure_ad_enabled": true,
    "expired": false,
    "trial": false,
    "days_to_end_trial": 0,
    "features": [
      {
        "name": "control",
        "days": -1
      },
      {
        "name": "memories",
        "days": -1
      },
      {
        "name": "billing",
        "days": -1
      },
      {
        "name": "project_required_fields",
        "days": -1
      },
      {
        "name": "teams",
        "days": -1
      },
      {
        "name": "recurring_budget",
        "days": -1
      },
      {
        "name": "notifications_project_budget",
        "days": -1
      },
      {
        "name": "weekly_user_capacity",
        "days": -1
      },
      {
        "name": "company_view",
        "days": -1
      },
      {
        "name": "anomalies",
        "days": -1
      },
      {
        "name": "log_hours_for_others",
        "days": -1
      },
      {
        "name": "project_budget",
        "days": -1
      },
      {
        "name": "budgets_hourly_rates",
        "days": -1
      },
      {
        "name": "account_branding",
        "days": -1
      },
      {
        "name": "team_lead",
        "days": -1
      },
      {
        "name": "ai_timesheet_creation",
        "days": -1
      },
      {
        "name": "in_app_support",
        "days": -1
      },
      {
        "name": "people_dashboard",
        "days": -1
      },
      {
        "name": "people_notify",
        "days": -1
      },
      {
        "name": "premium_integrations",
        "days": -1
      },
      {
        "name": "individual_capacity",
        "days": -1
      },
      {
        "name": "audits",
        "days": -1
      },
      {
        "name": "project_dashboard",
        "days": -1
      },
      {
        "name": "high_level_reports",
        "days": -1
      },
      {
        "name": "live_reports",
        "days": -1
      },
      {
        "name": "invoices",
        "days": -1
      },
      {
        "name": "planned_entries",
        "days": -1
      },
      {
        "name": "internal_costs",
        "days": -1
      },
      {
        "name": "memory_retention",
        "days": -1
      },
      {
        "name": "custom_project_currencies",
        "days": -1
      },
      {
        "name": "capacity_reports",
        "days": -1
      },
      {
        "name": "tasks",
        "days": -1
      },
      {
        "name": "planning",
        "days": -1
      },
      {
        "name": "batch_log_planned_time",
        "days": -1
      },
      {
        "name": "ai_labels_suggestions",
        "days": -1
      }
    ]
  }
]



RETRIEVE ACTIVITIES

This endpoint shows you all activities tied to you and/or any other users you
have permission to view. Activities include: logged hours, created a report,
shared a report.


REQUEST

curl -g "https://api.timelyapp.com/1.1/16/activities" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer m5Hhd2G6BSxrbko0XXddT5xnv7ZZrnTqBrIsuHo-qqY" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/activities

GET /1.1/16/activities
Accept: application/json
Content-Type: application/json
Authorization: Bearer m5Hhd2G6BSxrbko0XXddT5xnv7ZZrnTqBrIsuHo-qqY


PARAMETERS

Name Description account_id The ID of the account you want to retrieve limit
Retrieve a limited number of activities offset Retrieve activities from offset
order Sorting order on created_at filter Filter activities by entity_type - Ex:
filter=projects


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 2,
    "user": {
      "id": 35,
      "email": "marijaryxzrltn@timelyapp.com",
      "name": "Marija Petrovic",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:03+02:00"
    },
    "message": "archived",
    "activity_type": "archive_project",
    "url": "http://app.timelyapp.local:3002/16/projects/11?type=archived_project",
    "updated_at": "2023-07-06T14:25:03+02:00",
    "detail": null,
    "associated_ids": [],
    "entity_type": "Project",
    "entity_deleted": false,
    "parent_entity_name": "",
    "entity": {
      "id": 11,
      "active": true,
      "name": "Timely",
      "color": "67a3bc",
      "client": {
        "id": 11,
        "name": "Commodi eos vel quis.",
        "active": true,
        "external_id": null,
        "updated_at": "2023-07-13T14:25:03+02:00"
      },
      "updated_at": "2023-07-13T14:25:03+02:00"
    },
    "anomaly": false
  },
  {
    "id": 1,
    "user": {
      "id": 35,
      "email": "marijaryxzrltn@timelyapp.com",
      "name": "Marija Petrovic",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/96251d20808052ace928c0e4253143e5?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:03+02:00"
    },
    "message": "50% of budget used",
    "activity_type": "project_budget_progress_fifty",
    "url": "http://app.timelyapp.local:3002/16/projects/11?type=budget_progress",
    "updated_at": "2023-07-13T14:25:03+02:00",
    "detail": null,
    "associated_ids": [],
    "entity_type": "Project",
    "entity_deleted": false,
    "parent_entity_name": "",
    "entity": {
      "id": 11,
      "active": true,
      "name": "Timely",
      "color": "67a3bc",
      "client": {
        "id": 11,
        "name": "Commodi eos vel quis.",
        "active": true,
        "external_id": null,
        "updated_at": "2023-07-13T14:25:03+02:00"
      },
      "updated_at": "2023-07-13T14:25:03+02:00"
    },
    "anomaly": false
  }
]



RETRIEVE AN ACCOUNT

Returns one account object related to one company and one subscription plan.


REQUEST

curl -g "https://api.timelyapp.com/1.1/accounts/17" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer kwdo84KkMj2MNkCPhQi7y405FVaOZWx_J46gV5ptBdg" \
    -H "Cookie: "


ENDPOINT

GET /1.1/accounts/:id

GET /1.1/accounts/17
Accept: application/json
Content-Type: application/json
Authorization: Bearer kwdo84KkMj2MNkCPhQi7y405FVaOZWx_J46gV5ptBdg


PARAMETERS

Name Description id The id of the account to be retrieved


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 17,
  "name": "Timely",
  "color": "44505e",
  "currency": {
    "id": "usd",
    "name": "United States Dollar",
    "iso_code": "USD",
    "symbol": "$",
    "symbol_first": true
  },
  "logo": {
    "large_retina": "/assets/account_thumbs/account_large_retina-8bc212c450af14b3a0ea49098cdddbe4f90d5eb5fc57adfeade6ac1ad8fb1d4a.png",
    "medium_retina": "/assets/account_thumbs/account_medium_retina-10dfbcc6733ccba1d485971f63c5eb7f9b7ed1a942a0ebd140e292bcb1e4dbea.png",
    "small_retina": "/assets/account_thumbs/account_small_retina-ea5df153b4cd96fc801e2361afc7d1b06d7b95ce5c358250b81149e1a20689df.png",
    "brand_logo": false
  },
  "from": "Web",
  "max_users": 0,
  "seats": 1,
  "max_projects": 0,
  "plan_id": 17,
  "plan_name": "Essential",
  "next_charge": "2023-08-13",
  "start_of_week": 0,
  "created_at": 1689251103,
  "payment_mode": "web",
  "paid": true,
  "company_size": "10-49",
  "plan_code": "essential",
  "plan_custom": false,
  "appstore_transaction_id": null,
  "owner_id": 38,
  "weekly_user_capacity": 40.0,
  "default_work_days": "MON,TUE,WED,THU,FRI",
  "default_hour_rate": 0.0,
  "support_email": "support@timelyapp.com",
  "estimated_company_size": null,
  "industry": null,
  "memory_retention_days": 0,
  "num_users": 1,
  "num_projects": 0,
  "active_projects_count": 0,
  "total_projects_count": 0,
  "capacity": {
    "hours": 40,
    "minutes": 0,
    "seconds": 0.0,
    "formatted": "40:00",
    "total_hours": 40.0,
    "total_seconds": 144000.0,
    "total_minutes": 2400.0
  },
  "status": "active",
  "beta": false,
  "azure_ad_enabled": true,
  "expired": false,
  "trial": false,
  "days_to_end_trial": 0,
  "features": [
    {
      "name": "control",
      "days": -1
    },
    {
      "name": "memories",
      "days": -1
    },
    {
      "name": "billing",
      "days": -1
    },
    {
      "name": "project_required_fields",
      "days": -1
    },
    {
      "name": "teams",
      "days": -1
    },
    {
      "name": "recurring_budget",
      "days": -1
    },
    {
      "name": "notifications_project_budget",
      "days": -1
    },
    {
      "name": "weekly_user_capacity",
      "days": -1
    },
    {
      "name": "company_view",
      "days": -1
    },
    {
      "name": "anomalies",
      "days": -1
    },
    {
      "name": "log_hours_for_others",
      "days": -1
    },
    {
      "name": "project_budget",
      "days": -1
    },
    {
      "name": "budgets_hourly_rates",
      "days": -1
    },
    {
      "name": "account_branding",
      "days": -1
    },
    {
      "name": "team_lead",
      "days": -1
    },
    {
      "name": "ai_timesheet_creation",
      "days": -1
    },
    {
      "name": "in_app_support",
      "days": -1
    },
    {
      "name": "people_dashboard",
      "days": -1
    },
    {
      "name": "people_notify",
      "days": -1
    },
    {
      "name": "premium_integrations",
      "days": -1
    },
    {
      "name": "individual_capacity",
      "days": -1
    },
    {
      "name": "audits",
      "days": -1
    },
    {
      "name": "project_dashboard",
      "days": -1
    },
    {
      "name": "high_level_reports",
      "days": -1
    },
    {
      "name": "live_reports",
      "days": -1
    },
    {
      "name": "invoices",
      "days": -1
    },
    {
      "name": "planned_entries",
      "days": -1
    },
    {
      "name": "internal_costs",
      "days": -1
    },
    {
      "name": "memory_retention",
      "days": -1
    },
    {
      "name": "custom_project_currencies",
      "days": -1
    },
    {
      "name": "capacity_reports",
      "days": -1
    },
    {
      "name": "tasks",
      "days": -1
    },
    {
      "name": "planning",
      "days": -1
    },
    {
      "name": "batch_log_planned_time",
      "days": -1
    },
    {
      "name": "ai_labels_suggestions",
      "days": -1
    }
  ]
}



CLIENTS

Clients are the companies that you work for. An account can have multiple
clients.


CREATE A CLIENT

This API lets you create a client for an account.


REQUEST

curl "https://api.timelyapp.com/1.1/36/clients" -d '{"name":null,"client":{"name":"Uniq name","active":true,"external_id":null}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer Np8LDwFKr5qeXb8E2rAL4tGRnE7Ko6r7CqwrUK8Prso" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/clients

POST /1.1/36/clients
Accept: application/json
Content-Type: application/json
Authorization: Bearer Np8LDwFKr5qeXb8E2rAL4tGRnE7Ko6r7CqwrUK8Prso


PARAMETERS

{"name":null,"client":{"name":"Uniq name","active":true,"external_id":null}}


Name Description name required Specifies the client name active Example values:
"true" or "false". Using "false" changes the client state to "archived"
external_id The external_id can be used to reference external resource IDs to
Timely resources, and should be alphanumeric (max. 512 characters)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 27,
  "name": "Uniq name",
  "active": true,
  "external_id": null,
  "updated_at": "2023-07-13T14:25:06+02:00"
}



LIST ALL CLIENTS

NOTE: Client list will return recently updated 10000 clients. Additionally, you
can add the “limit”, “offset”, “filter” and “order” optional parameters to
change the result.


REQUEST

curl -g "https://api.timelyapp.com/1.1/37/clients" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer CQVoyupS20A4Zcbudd_eGqQ89efu0eXsfx3KGr2PIlk" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/clients

GET /1.1/37/clients
Accept: application/json
Content-Type: application/json
Authorization: Bearer CQVoyupS20A4Zcbudd_eGqQ89efu0eXsfx3KGr2PIlk


PARAMETERS

Name Description account_id Account ID for the clients you want to retrieve
offset Retrieve clients from offset limit Retrieve number of clients show
Specifies which records to retrieve. The default shows a current account’s
active clients (show=active). Example: "show=all" or "show=active" or
"show=archived"


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 28,
    "name": "Reiciendis ut ex vitae.",
    "active": true,
    "external_id": null,
    "updated_at": "2023-07-13T14:25:06+02:00",
    "external_references": []
  }
]



SHOW CLIENT


REQUEST

curl -g "https://api.timelyapp.com/1.1/39/clients/30" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer aRRYdg_1xoYyoQhINP754MU__bYTOW9HfILSnB-QzRA" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/clients/:id

GET /1.1/39/clients/30
Accept: application/json
Content-Type: application/json
Authorization: Bearer aRRYdg_1xoYyoQhINP754MU__bYTOW9HfILSnB-QzRA


PARAMETERS

Name Description account_id Account ID for the client you want to retrieve id
Client ID to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 30,
  "name": "Et doloribus et neque.",
  "active": true,
  "external_id": null,
  "updated_at": "2023-07-13T14:25:07+02:00",
  "external_references": []
}



UPDATE A CLIENT

Update client details just by using a client’s ID.


REQUEST

curl "https://api.timelyapp.com/1.1/41/clients/32" -d '{"name":null,"client":{"name":"Updated name","active":true}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer eSa3-Mfloph2q4yrO0J5tGc3ysQFurPZelv3U1U92dc" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/clients/:id

PUT /1.1/41/clients/32
Accept: application/json
Content-Type: application/json
Authorization: Bearer eSa3-Mfloph2q4yrO0J5tGc3ysQFurPZelv3U1U92dc


PARAMETERS

{"name":null,"client":{"name":"Updated name","active":true}}


Name Description id required Client ID name required Specifies the client name
active Example values: “true” or “false”. Using “false” changes the client state
to “archived” external_id The external_id can be used to reference external
resource IDs to Timely resources, and should be alphanumeric (max. 512
characters)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 32,
  "name": "Updated name",
  "active": true,
  "external_id": null,
  "updated_at": "2023-07-13T14:25:07+02:00"
}



EVENTS

Events are all the entries a user makes. Users can add, delete and edit all
entries. Some user’s actions are restricted based on their access level in
Timely.


CREATE AN EVENT

When a user creates an event on their own timesheet.

Note: By default, the event is created for a user’s first active project, or the
project they last logged time to.


REQUEST

curl "https://api.timelyapp.com/1.1/60/events" -d '{"event":{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:09.494+02:00","to":"2023-07-13T17:55:09.494+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","project_id":38}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 6FswkqwDQm8FFEQRC6tmgey1CCbbm7TFoQGkMUpZqEE" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/events

POST /1.1/60/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer 6FswkqwDQm8FFEQRC6tmgey1CCbbm7TFoQGkMUpZqEE


PARAMETERS

{"event":{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:09.494+02:00","to":"2023-07-13T17:55:09.494+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","project_id":38}}


Name Description user_id The numerical ID for the user who the event is created
for. Note: the default value is the user_id connected to the API token. Example
value: 123 day required Event day hours required Event hours minutes required
Event minutes estimated_minutes Specifies estimated minutes for an event.
Example values: 0-60 estimated_hours Specifies estimated hours for an event.
Example values: 0-12 note Specifies notes for an event from Specifies the “from”
time in a timestamp. Example values: from: "2017-05-26T10:00:00+05:30" to
Specifies the “to” time in a timestamp. Example values: to:
"2017-05-26T12:00:00+05:30" label_ids Specifies label IDs for an event. Example
values: label_ids:[2,3,4] project_id Specifies the project ID for an event
external_id The external_id can be used to reference external resource IDs to
Timely resources, and should be alphanumeric (max. 512 characters)


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 64,
  "uid": "ea5d2f1c4608232e07d3aa3d998e5135",
  "user": {
    "id": 129,
    "email": "marijazbrepllh@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/fab6d98dbaa1f8137c28336b8915c096?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/fab6d98dbaa1f8137c28336b8915c096?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/fab6d98dbaa1f8137c28336b8915c096?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/fab6d98dbaa1f8137c28336b8915c096?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/fab6d98dbaa1f8137c28336b8915c096?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:09+02:00"
  },
  "project": {
    "id": 38,
    "active": true,
    "account_id": 60,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251109,
    "updated_at": 1689251109,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 39,
      "name": "Sint consequatur deserunt ut.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:09+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 3,
    "minutes": 30,
    "seconds": 0,
    "formatted": "03:30",
    "total_hours": 3.5,
    "total_seconds": 12600,
    "total_minutes": 210
  },
  "estimated_duration": {
    "hours": 4,
    "minutes": 0,
    "seconds": 0,
    "formatted": "04:00",
    "total_hours": 4.0,
    "total_seconds": 14400,
    "total_minutes": 240
  },
  "cost": {
    "fractional": 35000,
    "formatted": "$350.00",
    "amount": 350.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 40000,
    "formatted": "$400.00",
    "amount": 400.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Notes for testing with some random #hash in it.",
  "sequence": 1,
  "estimated": false,
  "timer_state": "default",
  "timer_started_on": 0,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251109,
  "created_at": 1689251109,
  "created_from": "Timely",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:09+02:00",
  "from": "2023-07-13T14:25:09+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": 129,
  "updater_id": 129,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



CREATE AN EVENT FOR A PROJECT


REQUEST

curl "https://api.timelyapp.com/1.1/59/projects/37/events" -d '{"event":{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:09.317+02:00","to":"2023-07-13T17:55:09.317+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","project_id":37}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer G38OuugVFgDmeAdYuUMFHcLUaiBtVX0y1ti50UP79dA" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/projects/:project_id/events

POST /1.1/59/projects/37/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer G38OuugVFgDmeAdYuUMFHcLUaiBtVX0y1ti50UP79dA


PARAMETERS

{"event":{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:09.317+02:00","to":"2023-07-13T17:55:09.317+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","project_id":37}}


Name Description user_id The numerical ID for the user who the event is created
for. Note: the default value is the user_id connected to the API token. Example
value: 123 day required Event day hours required Event hours minutes required
Event minutes project_id required The numerical ID of the desired project.
Example values: 123


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 63,
  "uid": "03afdbd66e7929b125f8597834fa83a4",
  "user": {
    "id": 127,
    "email": "marijabsjoxjem@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/265aae113d9b99ae708b0a32a22e9660?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/265aae113d9b99ae708b0a32a22e9660?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/265aae113d9b99ae708b0a32a22e9660?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/265aae113d9b99ae708b0a32a22e9660?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/265aae113d9b99ae708b0a32a22e9660?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:09+02:00"
  },
  "project": {
    "id": 37,
    "active": true,
    "account_id": 59,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251109,
    "updated_at": 1689251109,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 38,
      "name": "Molestiae est in ut.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:09+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 3,
    "minutes": 30,
    "seconds": 0,
    "formatted": "03:30",
    "total_hours": 3.5,
    "total_seconds": 12600,
    "total_minutes": 210
  },
  "estimated_duration": {
    "hours": 4,
    "minutes": 0,
    "seconds": 0,
    "formatted": "04:00",
    "total_hours": 4.0,
    "total_seconds": 14400,
    "total_minutes": 240
  },
  "cost": {
    "fractional": 35000,
    "formatted": "$350.00",
    "amount": 350.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 40000,
    "formatted": "$400.00",
    "amount": 400.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Notes for testing with some random #hash in it.",
  "sequence": 1,
  "estimated": false,
  "timer_state": "default",
  "timer_started_on": 0,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251109,
  "created_at": 1689251109,
  "created_from": "Timely",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:09+02:00",
  "from": "2023-07-13T14:25:09+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": 127,
  "updater_id": 127,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



CREATE AN EVENT FOR ANOTHER USER

Note: Normal users can add hours for any user. If a project_id is not provided,
the event is created against a user’s first active project, or the project they
logged an event to in the last hour.


REQUEST

curl "https://api.timelyapp.com/1.1/58/users/125/events" -d '{"event":{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:09.101+02:00","to":"2023-07-13T17:55:09.101+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","user_id":125}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer xWaP0j2HVaUD2ko8p75r0yrh3IY3hBGtYmslOmCKdrE" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/users/:user_id/events

POST /1.1/58/users/125/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer xWaP0j2HVaUD2ko8p75r0yrh3IY3hBGtYmslOmCKdrE


PARAMETERS

{"event":{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:09.101+02:00","to":"2023-07-13T17:55:09.101+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","user_id":125}}


Name Description user_id required The numerical ID for the user who the event is
created for. Note: the default value is the user_id connected to the API token.
Example value: 123 day required Event day hours required Event hours minutes
required Event minutes


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 62,
  "uid": "44f683a84163b3523afe57c2e008bc8c",
  "user": {
    "id": 125,
    "email": "marijaueqlnmti@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/c1094bce12dd38a8b3ac376baf03df3d?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/c1094bce12dd38a8b3ac376baf03df3d?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/c1094bce12dd38a8b3ac376baf03df3d?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/c1094bce12dd38a8b3ac376baf03df3d?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/c1094bce12dd38a8b3ac376baf03df3d?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:08+02:00"
  },
  "project": {
    "id": 36,
    "active": true,
    "account_id": 58,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251109,
    "updated_at": 1689251109,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 37,
      "name": "Et error nemo veritatis.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:09+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 3,
    "minutes": 30,
    "seconds": 0,
    "formatted": "03:30",
    "total_hours": 3.5,
    "total_seconds": 12600,
    "total_minutes": 210
  },
  "estimated_duration": {
    "hours": 4,
    "minutes": 0,
    "seconds": 0,
    "formatted": "04:00",
    "total_hours": 4.0,
    "total_seconds": 14400,
    "total_minutes": 240
  },
  "cost": {
    "fractional": 35000,
    "formatted": "$350.00",
    "amount": 350.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 40000,
    "formatted": "$400.00",
    "amount": 400.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Notes for testing with some random #hash in it.",
  "sequence": 1,
  "estimated": false,
  "timer_state": "default",
  "timer_started_on": 0,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251109,
  "created_at": 1689251109,
  "created_from": "Timely",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:09+02:00",
  "from": "2023-07-13T14:25:09+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": 125,
  "updater_id": 125,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



CREATE BULK EVENTS

Note: Use the same list of sub-parameters inside your "create" parameter as
specified on Create an event. You can create up to 100 events at a time.


REQUEST

curl "https://api.timelyapp.com/1.1/57/bulk/events" -d '{"create":[{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:08.904+02:00","to":"2023-07-13T17:55:08.904+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","user_id":123,"account_id":57,"project_id":35}]}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 4iv5c_ny-x7kDG0jrQ0ttXZ4LeOUFGUFjj-G89WHVlc" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/bulk/events

POST /1.1/57/bulk/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer 4iv5c_ny-x7kDG0jrQ0ttXZ4LeOUFGUFjj-G89WHVlc


PARAMETERS

{"create":[{"hours":3,"minutes":30,"seconds":0,"estimated_hours":4,"estimated_minutes":0,"from":"2023-07-13T14:25:08.904+02:00","to":"2023-07-13T17:55:08.904+02:00","day":"2023-07-13","note":"Notes for testing with some random #hash in it.","hour_rate":100,"internal_hour_rate":150,"timer_state":0,"created_from":"Web","updated_from":"Web","user_id":123,"account_id":57,"project_id":35}]}


Name Description create Specifies the parameters for creating a group of events.
Example: [{ "hours": 3, "minutes": 30, "seconds": 0, "estimated_hours": 4,
"estimated_minutes": 0, "from": "2021-03-04T11:33:36.570+01:00", "to":
"2021-03-04T15:03:36.570+01:00", "day": "2021-03-04", "note": "Describe what you
worked on here!", "hour_rate": 100, "timer_state": 0, "billed": true, "user_id":
1616, "account_id": 651, "project_id": 620}]


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "deleted_ids": [],
  "created_ids": [
    61
  ],
  "updated_ids": [],
  "errors": {
    "create": [],
    "update": [],
    "delete": []
  }
}



DELETE AN EVENT

Note: Normal users can delete events logged to other projects by other users on
an account. Limited users can only delete their own events.


REQUEST

curl "https://api.timelyapp.com/1.1/62/events/66" -d '' -X DELETE \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer fTQg7nSPCeMo6cB1IGZGf_NsvSZJOBFeqvUgD_dvaSo" \
    -H "Cookie: "


ENDPOINT

DELETE /1.1/:account_id/events/:id

DELETE /1.1/62/events/66
Accept: application/json
Content-Type: application/json
Authorization: Bearer fTQg7nSPCeMo6cB1IGZGf_NsvSZJOBFeqvUgD_dvaSo


PARAMETERS

Name Description account_id The account ID containing the hour you want to
delete id required The ID for the hour you want to delete


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{}



DELETE BULK EVENTS

Note: You can delete up to 100 events at a time.


REQUEST

curl "https://api.timelyapp.com/1.1/61/bulk/events" -d '{"delete":[65]}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 2fSGm2-IS-_-XyLIn1C0u3XrfY41u9SZ7u2ow-IARvg" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/bulk/events

POST /1.1/61/bulk/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer 2fSGm2-IS-_-XyLIn1C0u3XrfY41u9SZ7u2ow-IARvg


PARAMETERS

{"delete":[65]}


Name Description delete Specifies the parameters for deleting a group of events.
Example: [ 320, 333 ]


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "deleted_ids": [
    65
  ],
  "created_ids": [],
  "updated_ids": [],
  "errors": {
    "create": [],
    "update": [],
    "delete": []
  }
}



LIST ALL EVENTS

Get all events linked to active projects on a user’s account.

Note: If “since” and “upto” parameters are not passed, the period will default
to the date of access.


REQUEST

curl -g "https://api.timelyapp.com/1.1/67/events" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer UJOxW71Sjet4k9UiAqQF1WD_Ea-YcwO_irX6XjhgGLQ" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/events

GET /1.1/67/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer UJOxW71Sjet4k9UiAqQF1WD_Ea-YcwO_irX6XjhgGLQ


PARAMETERS

Name Description account_id The account ID containing the hours you want to
retrieve day Specifies the day date for returned results. Example:
day=2014-08-24 since Specifies the start date for returned results. Example:
since=2014-08-18 upto Specifies the end date for returned results. Example:
upto=2014-08-24 filter Specifies which records to retrieve (Default logged).
Example: filter=logged or filter=all sort Field to sort projects by (Default
updated_at) order Order to retrieve records (Default updated_at DESC) per_page
Records per page (Default 100) page Page number (Default 1)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 71,
    "uid": "e2c420d928d4bf8ce0ff2ec19b371514",
    "user": {
      "id": 143,
      "email": "marijaapxgnfod@timelyapp.com",
      "name": "Marija Petrovic",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/18bb21bcbf431e4452c17ea864ae310e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/18bb21bcbf431e4452c17ea864ae310e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/18bb21bcbf431e4452c17ea864ae310e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/18bb21bcbf431e4452c17ea864ae310e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/18bb21bcbf431e4452c17ea864ae310e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:10+02:00"
    },
    "project": {
      "id": 45,
      "active": true,
      "account_id": 67,
      "name": "Timely",
      "color": "67a3bc",
      "rate_type": "project",
      "billable": true,
      "created_at": 1689251110,
      "updated_at": 1689251110,
      "external_id": null,
      "budget_scope": null,
      "client": {
        "id": 46,
        "name": "Dolorem accusamus consequuntur nihil.",
        "active": true,
        "external_id": null,
        "updated_at": "2023-07-13T14:25:10+02:00"
      },
      "required_notes": false,
      "required_labels": false,
      "budget_expired_on": null,
      "has_recurrence": false,
      "enable_labels": "all",
      "default_labels": false,
      "currency": {
        "id": "usd",
        "name": "United States Dollar",
        "iso_code": "USD",
        "symbol": "$",
        "symbol_first": true
      },
      "budget": 0,
      "budget_type": "",
      "budget_calculation": "completed",
      "hour_rate": 50.0,
      "hour_rate_in_cents": 5000.0,
      "budget_progress": 0.0,
      "budget_percent": 0.0,
      "invoice_by_budget": false,
      "labels": [],
      "label_ids": [],
      "required_label_ids": [],
      "default_label_ids": [],
      "created_from": "Web"
    },
    "duration": {
      "hours": 3,
      "minutes": 30,
      "seconds": 0,
      "formatted": "03:30",
      "total_hours": 3.5,
      "total_seconds": 12600,
      "total_minutes": 210
    },
    "estimated_duration": {
      "hours": 4,
      "minutes": 0,
      "seconds": 0,
      "formatted": "04:00",
      "total_hours": 4.0,
      "total_seconds": 14400,
      "total_minutes": 240
    },
    "cost": {
      "fractional": 35000,
      "formatted": "$350.00",
      "amount": 350.0,
      "currency_code": "usd"
    },
    "estimated_cost": {
      "fractional": 40000,
      "formatted": "$400.00",
      "amount": 400.0,
      "currency_code": "usd"
    },
    "day": "2023-07-13",
    "note": "Notes for testing with some random #hash in it.",
    "sequence": 1,
    "estimated": false,
    "timer_state": "default",
    "timer_started_on": 0,
    "timer_stopped_on": 0,
    "label_ids": [],
    "user_ids": [],
    "updated_at": 1689251110,
    "created_at": 1689251110,
    "created_from": "Web",
    "updated_from": "Web",
    "billed": false,
    "billable": true,
    "to": "2023-07-13T17:55:10+02:00",
    "from": "2023-07-13T14:25:10+02:00",
    "deleted": false,
    "hour_rate": 100.0,
    "hour_rate_in_cents": 10000,
    "creator_id": null,
    "updater_id": null,
    "external_id": null,
    "entry_ids": [],
    "suggestion_id": null,
    "draft": false,
    "manage": true,
    "forecast_id": null,
    "billed_at": null,
    "locked_reason": null,
    "locked": false,
    "invoice_id": null,
    "timestamps": []
  }
]



LIST ALL EVENTS FOR A PROJECT

Note: Normal users can access events logged to all projects on an account.
Limited users can only access events in projects they belong to.


REQUEST

curl -g "https://api.timelyapp.com/1.1/70/projects/48/events" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer N0nfX29tpuzxqw2GIGqwcL7p7n4mM93Iu_1KFh4COrU" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/projects/:project_id/events

GET /1.1/70/projects/48/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer N0nfX29tpuzxqw2GIGqwcL7p7n4mM93Iu_1KFh4COrU


PARAMETERS

Name Description account_id The account ID containing the hours you want to
retrieve project_id The project ID for the hours you want to retrieve since
Specifies the start date for returned results. Example: since=2014-08-18 upto
Specifies the end date for returned results. Example: upto=2014-08-24 day
Specifies the day date for returned results. Example: day=2014-08-24 sort Field
to sort projects by (Default updated_at) order Order to retrieve records
(Default updated_at DESC) per_page Records per page (Default 100) page Page
number (Default 1)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 74,
    "uid": "ad61ab143223efbc24c7d2583be69251",
    "user": {
      "id": 149,
      "email": "marijaklhgqqqt@timelyapp.com",
      "name": "Marija Petrovic",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/95fbc13d508edf294cf8cc18207315e7?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/95fbc13d508edf294cf8cc18207315e7?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/95fbc13d508edf294cf8cc18207315e7?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/95fbc13d508edf294cf8cc18207315e7?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/95fbc13d508edf294cf8cc18207315e7?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:11+02:00"
    },
    "project": {
      "id": 48,
      "active": true,
      "account_id": 70,
      "name": "Timely",
      "color": "67a3bc",
      "rate_type": "project",
      "billable": true,
      "created_at": 1689251111,
      "updated_at": 1689251111,
      "external_id": null,
      "budget_scope": null,
      "client": {
        "id": 49,
        "name": "Ab blanditiis fugiat vero.",
        "active": true,
        "external_id": null,
        "updated_at": "2023-07-13T14:25:11+02:00"
      },
      "required_notes": false,
      "required_labels": false,
      "budget_expired_on": null,
      "has_recurrence": false,
      "enable_labels": "all",
      "default_labels": false,
      "currency": {
        "id": "usd",
        "name": "United States Dollar",
        "iso_code": "USD",
        "symbol": "$",
        "symbol_first": true
      },
      "budget": 0,
      "budget_type": "",
      "budget_calculation": "completed",
      "hour_rate": 50.0,
      "hour_rate_in_cents": 5000.0,
      "budget_progress": 0.0,
      "budget_percent": 0.0,
      "invoice_by_budget": false,
      "labels": [],
      "label_ids": [],
      "required_label_ids": [],
      "default_label_ids": [],
      "created_from": "Web"
    },
    "duration": {
      "hours": 3,
      "minutes": 30,
      "seconds": 0,
      "formatted": "03:30",
      "total_hours": 3.5,
      "total_seconds": 12600,
      "total_minutes": 210
    },
    "estimated_duration": {
      "hours": 4,
      "minutes": 0,
      "seconds": 0,
      "formatted": "04:00",
      "total_hours": 4.0,
      "total_seconds": 14400,
      "total_minutes": 240
    },
    "cost": {
      "fractional": 35000,
      "formatted": "$350.00",
      "amount": 350.0,
      "currency_code": "usd"
    },
    "estimated_cost": {
      "fractional": 40000,
      "formatted": "$400.00",
      "amount": 400.0,
      "currency_code": "usd"
    },
    "day": "2023-07-13",
    "note": "Notes for testing with some random #hash in it.",
    "sequence": 1,
    "estimated": false,
    "timer_state": "default",
    "timer_started_on": 0,
    "timer_stopped_on": 0,
    "label_ids": [],
    "user_ids": [],
    "updated_at": 1689251111,
    "created_at": 1689251111,
    "created_from": "Web",
    "updated_from": "Web",
    "billed": false,
    "billable": true,
    "to": "2023-07-13T17:55:11+02:00",
    "from": "2023-07-13T14:25:11+02:00",
    "deleted": false,
    "hour_rate": 100.0,
    "hour_rate_in_cents": 10000,
    "creator_id": null,
    "updater_id": null,
    "external_id": null,
    "entry_ids": [],
    "suggestion_id": null,
    "draft": false,
    "manage": true,
    "forecast_id": null,
    "billed_at": null,
    "locked_reason": null,
    "locked": false,
    "invoice_id": null,
    "timestamps": []
  }
]



LIST ALL EVENTS FOR A USER

Note: Normal users can access events logged by other users on an account.
Limited users can only access their own logged events.


REQUEST

curl -g "https://api.timelyapp.com/1.1/69/users/147/events" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YWkPeDSFaMXHa4X53BLC99NNhtSzkZi3UWkn1tiacDQ" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users/:user_id/events

GET /1.1/69/users/147/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer YWkPeDSFaMXHa4X53BLC99NNhtSzkZi3UWkn1tiacDQ


PARAMETERS

Name Description account_id The account ID containing the hours you want to
retrieve user_id The user ID for the hours you want to retrieve since Specifies
the start date for returned results. Example: since=2014-08-18 upto Specifies
the end date for returned results. Example: upto=2014-08-24 day Specifies the
day date for returned results. Example: day=2014-08-24 sort Field to sort
projects by (Default updated_at) order Order to retrieve records (Default
updated_at DESC) per_page Records per page (Default 100) page Page number
(Default 1)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 73,
    "uid": "d2ddea18f00665ce8623e36bd4e3c7c5",
    "user": {
      "id": 147,
      "email": "marijarfjjzqkf@timelyapp.com",
      "name": "Marija Petrovic",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/0d76026c4913fe7e954ff19da895e43e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/0d76026c4913fe7e954ff19da895e43e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/0d76026c4913fe7e954ff19da895e43e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/0d76026c4913fe7e954ff19da895e43e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/0d76026c4913fe7e954ff19da895e43e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:11+02:00"
    },
    "project": {
      "id": 47,
      "active": true,
      "account_id": 69,
      "name": "Timely",
      "color": "67a3bc",
      "rate_type": "project",
      "billable": true,
      "created_at": 1689251111,
      "updated_at": 1689251111,
      "external_id": null,
      "budget_scope": null,
      "client": {
        "id": 48,
        "name": "Nostrum est ea nesciunt.",
        "active": true,
        "external_id": null,
        "updated_at": "2023-07-13T14:25:11+02:00"
      },
      "required_notes": false,
      "required_labels": false,
      "budget_expired_on": null,
      "has_recurrence": false,
      "enable_labels": "all",
      "default_labels": false,
      "currency": {
        "id": "usd",
        "name": "United States Dollar",
        "iso_code": "USD",
        "symbol": "$",
        "symbol_first": true
      },
      "budget": 0,
      "budget_type": "",
      "budget_calculation": "completed",
      "hour_rate": 50.0,
      "hour_rate_in_cents": 5000.0,
      "budget_progress": 0.0,
      "budget_percent": 0.0,
      "invoice_by_budget": false,
      "labels": [],
      "label_ids": [],
      "required_label_ids": [],
      "default_label_ids": [],
      "created_from": "Web"
    },
    "duration": {
      "hours": 3,
      "minutes": 30,
      "seconds": 0,
      "formatted": "03:30",
      "total_hours": 3.5,
      "total_seconds": 12600,
      "total_minutes": 210
    },
    "estimated_duration": {
      "hours": 4,
      "minutes": 0,
      "seconds": 0,
      "formatted": "04:00",
      "total_hours": 4.0,
      "total_seconds": 14400,
      "total_minutes": 240
    },
    "cost": {
      "fractional": 35000,
      "formatted": "$350.00",
      "amount": 350.0,
      "currency_code": "usd"
    },
    "estimated_cost": {
      "fractional": 40000,
      "formatted": "$400.00",
      "amount": 400.0,
      "currency_code": "usd"
    },
    "day": "2023-07-13",
    "note": "Notes for testing with some random #hash in it.",
    "sequence": 1,
    "estimated": false,
    "timer_state": "default",
    "timer_started_on": 0,
    "timer_stopped_on": 0,
    "label_ids": [],
    "user_ids": [],
    "updated_at": 1689251111,
    "created_at": 1689251111,
    "created_from": "Web",
    "updated_from": "Web",
    "billed": false,
    "billable": true,
    "to": "2023-07-13T17:55:11+02:00",
    "from": "2023-07-13T14:25:11+02:00",
    "deleted": false,
    "hour_rate": 100.0,
    "hour_rate_in_cents": 10000,
    "creator_id": null,
    "updater_id": null,
    "external_id": null,
    "entry_ids": [],
    "suggestion_id": null,
    "draft": false,
    "manage": true,
    "forecast_id": null,
    "billed_at": null,
    "locked_reason": null,
    "locked": false,
    "invoice_id": null,
    "timestamps": []
  }
]



LOGGED IN USER UPDATING DETAILS AND USER OF AN EVENT


REQUEST

curl "https://api.timelyapp.com/1.1/78/users/165/events/82" -d '{"event":{"note":"Updated details and project","minutes":0,"hours":0,"estimated":true,"estimated_minutes":0,"estimated_hours":2}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 0djjmPHf2g8r98SDXqKZqUGwcHSBKuXu2tGLUN7K92c" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/users/:user_id/events/:id

PUT /1.1/78/users/165/events/82
Accept: application/json
Content-Type: application/json
Authorization: Bearer 0djjmPHf2g8r98SDXqKZqUGwcHSBKuXu2tGLUN7K92c


PARAMETERS

{"event":{"note":"Updated details and project","minutes":0,"hours":0,"estimated":true,"estimated_minutes":0,"estimated_hours":2}}


Name Description id required Event ID day required Event day hours required
Event hours minutes required Event minutes estimated_minutes Specifies estimated
minutes for an event. Example values: 0-60 estimated_hours Specifies estimated
hours for an event. Example values: 0-12 note Specifies notes for an event from
Specifies the “from” time in a timestamp. Example values: from:
"2017-05-26T10:00:00+05:30" to Specifies the “to” time in a timestamp. Example
values: to: "2017-05-26T12:00:00+05:30" label_ids Specifies label IDs for an
event. Example values: label_ids:[2,3,4] project_id Specifies the project ID for
an event external_id The external_id can be used to reference external resource
IDs to Timely resources, and should be alphanumeric (max. 512 characters)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 82,
  "uid": "9778d5d219c5080b9a6a17bef029331c",
  "user": {
    "id": 165,
    "email": "marijaxaoqosdy@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/6108ab9835c88713dd44fb895ce505f3?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/6108ab9835c88713dd44fb895ce505f3?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/6108ab9835c88713dd44fb895ce505f3?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/6108ab9835c88713dd44fb895ce505f3?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/6108ab9835c88713dd44fb895ce505f3?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:12+02:00"
  },
  "project": {
    "id": 56,
    "active": true,
    "account_id": 78,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251112,
    "updated_at": 1689251112,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 57,
      "name": "Cupiditate illo et vitae.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:12+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "estimated_duration": {
    "hours": 2,
    "minutes": 0,
    "seconds": 0,
    "formatted": "02:00",
    "total_hours": 2.0,
    "total_seconds": 7200,
    "total_minutes": 120
  },
  "cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 20000,
    "formatted": "$200.00",
    "amount": 200.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Updated details and project",
  "sequence": 1,
  "estimated": true,
  "timer_state": "default",
  "timer_started_on": 0,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251112,
  "created_at": 1689251112,
  "created_from": "Web",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:12+02:00",
  "from": "2023-07-13T14:25:12+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": null,
  "updater_id": 165,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



LOGGEDIN USER UPDATING DETAILS AND PROJECT OF THEIR EVENT


REQUEST

curl "https://api.timelyapp.com/1.1/77/projects/55/events/81" -d '{"event":{"note":"Updated details and project","minutes":0,"hours":0,"estimated":true,"estimated_minutes":0,"estimated_hours":2}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 3UFGyifb7UoEU0R5yZB0ESs70tMBpln91o-mILfh5K8" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/projects/:project_id/events/:id

PUT /1.1/77/projects/55/events/81
Accept: application/json
Content-Type: application/json
Authorization: Bearer 3UFGyifb7UoEU0R5yZB0ESs70tMBpln91o-mILfh5K8


PARAMETERS

{"event":{"note":"Updated details and project","minutes":0,"hours":0,"estimated":true,"estimated_minutes":0,"estimated_hours":2}}


Name Description id required Event ID project_id required Project ID day
required Event day hours required Event hours minutes required Event minutes
estimated_minutes Specifies estimated minutes for an event. Example values: 0-60
estimated_hours Specifies estimated hours for an event. Example values: 0-12
note Specifies notes for an event from Specifies the “from” time in a timestamp.
Example values: from: "2017-05-26T10:00:00+05:30" to Specifies the “to” time in
a timestamp. Example values: to: "2017-05-26T12:00:00+05:30" label_ids Specifies
label IDs for an event. Example values: label_ids:[2,3,4] external_id The
external_id can be used to reference external resource IDs to Timely resources,
and should be alphanumeric (max. 512 characters)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 81,
  "uid": "43ec517d68b6edd3015b3edc9a11367b",
  "user": {
    "id": 163,
    "email": "marijasjzjiwxw@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/870d75cf8ebcffd547644f1b13b3b909?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/870d75cf8ebcffd547644f1b13b3b909?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/870d75cf8ebcffd547644f1b13b3b909?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/870d75cf8ebcffd547644f1b13b3b909?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/870d75cf8ebcffd547644f1b13b3b909?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:12+02:00"
  },
  "project": {
    "id": 55,
    "active": true,
    "account_id": 77,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251112,
    "updated_at": 1689251112,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 56,
      "name": "Sunt repellendus autem temporibus.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:12+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "estimated_duration": {
    "hours": 2,
    "minutes": 0,
    "seconds": 0,
    "formatted": "02:00",
    "total_hours": 2.0,
    "total_seconds": 7200,
    "total_minutes": 120
  },
  "cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 20000,
    "formatted": "$200.00",
    "amount": 200.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Updated details and project",
  "sequence": 1,
  "estimated": true,
  "timer_state": "default",
  "timer_started_on": 0,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251112,
  "created_at": 1689251112,
  "created_from": "Web",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:12+02:00",
  "from": "2023-07-13T14:25:12+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": null,
  "updater_id": 163,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



RETRIEVE AN EVENT


REQUEST

curl -g "https://api.timelyapp.com/1.1/65/events/69" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer M-b8ATqvSDPzcVafxW6yFj2kb1da0wpRqLtF3nRVj0I" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/events/:id

GET /1.1/65/events/69
Accept: application/json
Content-Type: application/json
Authorization: Bearer M-b8ATqvSDPzcVafxW6yFj2kb1da0wpRqLtF3nRVj0I


PARAMETERS

Name Description account_id The account ID containing the hour you want to
retrieve id The ID of the hour you want to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 69,
  "uid": "14bfa6bb14875e45bba028a21ed38046",
  "user": {
    "id": 139,
    "email": "marijapgbswnne@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/4ceba4818a65a75bc6ae2fefac6ab0f9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/4ceba4818a65a75bc6ae2fefac6ab0f9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/4ceba4818a65a75bc6ae2fefac6ab0f9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/4ceba4818a65a75bc6ae2fefac6ab0f9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/4ceba4818a65a75bc6ae2fefac6ab0f9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:10+02:00"
  },
  "project": {
    "id": 43,
    "active": true,
    "account_id": 65,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251110,
    "updated_at": 1689251110,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 44,
      "name": "Voluptatibus tempora rerum recusandae.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:10+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 3,
    "minutes": 30,
    "seconds": 0,
    "formatted": "03:30",
    "total_hours": 3.5,
    "total_seconds": 12600,
    "total_minutes": 210
  },
  "estimated_duration": {
    "hours": 4,
    "minutes": 0,
    "seconds": 0,
    "formatted": "04:00",
    "total_hours": 4.0,
    "total_seconds": 14400,
    "total_minutes": 240
  },
  "cost": {
    "fractional": 35000,
    "formatted": "$350.00",
    "amount": 350.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 40000,
    "formatted": "$400.00",
    "amount": 400.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Notes for testing with some random #hash in it.",
  "sequence": 1,
  "estimated": false,
  "timer_state": "default",
  "timer_started_on": 0,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251110,
  "created_at": 1689251110,
  "created_from": "Web",
  "updated_from": "Web",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:10+02:00",
  "from": "2023-07-13T14:25:10+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": null,
  "updater_id": null,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



START TIMER ON AN EVENT


REQUEST

curl "https://api.timelyapp.com/1.1/71/events/75/start" -d '' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer dE80tC8wTGNCiwHe8uLNAcZdguLZbRtaHn3SHgkTD1M" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/events/:id/start

PUT /1.1/71/events/75/start
Accept: application/json
Content-Type: application/json
Authorization: Bearer dE80tC8wTGNCiwHe8uLNAcZdguLZbRtaHn3SHgkTD1M


PARAMETERS

Name Description id required Event ID


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 75,
  "uid": "d09bf41544a3365a46c9077ebb5e35c3",
  "user": {
    "id": 151,
    "email": "marijamxujulal@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/f927a3ef7eada47bed7d4b35fa43fe8e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/f927a3ef7eada47bed7d4b35fa43fe8e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/f927a3ef7eada47bed7d4b35fa43fe8e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/f927a3ef7eada47bed7d4b35fa43fe8e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/f927a3ef7eada47bed7d4b35fa43fe8e?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:11+02:00"
  },
  "project": {
    "id": 49,
    "active": true,
    "account_id": 71,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251111,
    "updated_at": 1689251111,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 50,
      "name": "Quo omnis ut similique.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:11+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 3,
    "minutes": 30,
    "seconds": 0,
    "formatted": "03:30",
    "total_hours": 3.5,
    "total_seconds": 12600,
    "total_minutes": 210
  },
  "estimated_duration": {
    "hours": 4,
    "minutes": 0,
    "seconds": 0,
    "formatted": "04:00",
    "total_hours": 4.0,
    "total_seconds": 14400,
    "total_minutes": 240
  },
  "cost": {
    "fractional": 35000,
    "formatted": "$350.00",
    "amount": 350.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 40000,
    "formatted": "$400.00",
    "amount": 400.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Notes for testing with some random #hash in it.",
  "sequence": 1,
  "estimated": false,
  "timer_state": "start",
  "timer_started_on": 1689251111,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251111,
  "created_at": 1689251111,
  "created_from": "Web",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:11+02:00",
  "from": "2023-07-13T14:25:11+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": null,
  "updater_id": 151,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": [
    {
      "id": 1,
      "hour_id": 75,
      "from": "2023-07-13T10:55:11+02:00",
      "to": "2023-07-13T14:25:11+02:00",
      "entry_ids": []
    }
  ]
}



STOP TIMER ON AN EVENT


REQUEST

curl "https://api.timelyapp.com/1.1/72/events/76/stop" -d '' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer KF1vvk4jbAJRoaobTNZKJnDsIfvXycwcA-M3PAWLE2w" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/events/:id/stop

PUT /1.1/72/events/76/stop
Accept: application/json
Content-Type: application/json
Authorization: Bearer KF1vvk4jbAJRoaobTNZKJnDsIfvXycwcA-M3PAWLE2w


PARAMETERS

Name Description id required Event ID


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 76,
  "uid": "fbd7939d674997cdb4692d34de8633c4",
  "user": {
    "id": 153,
    "email": "marijaallmzbdw@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/4c97b2473134750c1ecebfe47fb05e09?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/4c97b2473134750c1ecebfe47fb05e09?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/4c97b2473134750c1ecebfe47fb05e09?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/4c97b2473134750c1ecebfe47fb05e09?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/4c97b2473134750c1ecebfe47fb05e09?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:11+02:00"
  },
  "project": {
    "id": 50,
    "active": true,
    "account_id": 72,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251111,
    "updated_at": 1689251111,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 51,
      "name": "Iusto vero est minus.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:11+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 4,
    "minutes": 30,
    "seconds": 0,
    "formatted": "04:30",
    "total_hours": 4.5,
    "total_seconds": 16200,
    "total_minutes": 270
  },
  "estimated_duration": {
    "hours": 4,
    "minutes": 0,
    "seconds": 0,
    "formatted": "04:00",
    "total_hours": 4.0,
    "total_seconds": 14400,
    "total_minutes": 240
  },
  "cost": {
    "fractional": 45000,
    "formatted": "$450.00",
    "amount": 450.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 40000,
    "formatted": "$400.00",
    "amount": 400.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Notes for testing with some random #hash in it.",
  "sequence": 1,
  "estimated": false,
  "timer_state": "stop",
  "timer_started_on": 0,
  "timer_stopped_on": 1689251111,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251111,
  "created_at": 1689251111,
  "created_from": "Web",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:11+02:00",
  "from": "2023-07-13T14:25:11+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": null,
  "updater_id": 153,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



UPDATE AN EVENT


REQUEST

curl "https://api.timelyapp.com/1.1/76/events/80" -d '{"event":{"note":"Updated notes","minutes":0,"hours":0,"estimated":true,"estimated_minutes":0,"estimated_hours":2}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer VhgzCadM83MTrUxNdY2oeObI8TZ2E82Nr6V3uKPRR44" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/events/:id

PUT /1.1/76/events/80
Accept: application/json
Content-Type: application/json
Authorization: Bearer VhgzCadM83MTrUxNdY2oeObI8TZ2E82Nr6V3uKPRR44


PARAMETERS

{"event":{"note":"Updated notes","minutes":0,"hours":0,"estimated":true,"estimated_minutes":0,"estimated_hours":2}}


Name Description user_id The numerical ID for the user who the event is updated
for. Note: the default value is the user_id connected to the API token. Example
value: 123 id required Event ID day required Event day hours required Event
hours minutes required Event minutes project_id Project ID estimated_minutes
Specifies estimated minutes for an event. Example values: 0-60 estimated_hours
Specifies estimated hours for an event. Example values: 0-12 note Specifies
notes for an event from Specifies the “from” time in a timestamp. Example
values: from: "2017-05-26T10:00:00+05:30" to Specifies the “to” time in a
timestamp. Example values: to: "2017-05-26T12:00:00+05:30" label_ids Specifies
label IDs for an event. Example values: label_ids:[2,3,4] external_id The
external_id can be used to reference external resource ids to Timely resources,
should be alphanumeric 512 characters billed Specifies whether you want an event
to be marked as billed. For example: 'billed': false or 'billed': true billable
Specifies whether you want an event to be billable or non-billable. For example:
'billable': false or 'billable': true


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 80,
  "uid": "f033ab37c30201f73f142449d037028d",
  "user": {
    "id": 161,
    "email": "marijafaadobox@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/78d8bc6aadd061f0e4458bfed79b80f2?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/78d8bc6aadd061f0e4458bfed79b80f2?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/78d8bc6aadd061f0e4458bfed79b80f2?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/78d8bc6aadd061f0e4458bfed79b80f2?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/78d8bc6aadd061f0e4458bfed79b80f2?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:12+02:00"
  },
  "project": {
    "id": 54,
    "active": true,
    "account_id": 76,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251112,
    "updated_at": 1689251112,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 55,
      "name": "Dicta et excepturi non.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:12+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "created_from": "Web"
  },
  "duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "estimated_duration": {
    "hours": 2,
    "minutes": 0,
    "seconds": 0,
    "formatted": "02:00",
    "total_hours": 2.0,
    "total_seconds": 7200,
    "total_minutes": 120
  },
  "cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 20000,
    "formatted": "$200.00",
    "amount": 200.0,
    "currency_code": "usd"
  },
  "day": "2023-07-13",
  "note": "Updated notes",
  "sequence": 1,
  "estimated": true,
  "timer_state": "default",
  "timer_started_on": 0,
  "timer_stopped_on": 0,
  "label_ids": [],
  "user_ids": [],
  "updated_at": 1689251112,
  "created_at": 1689251112,
  "created_from": "Web",
  "updated_from": "Timely",
  "billed": false,
  "billable": true,
  "to": "2023-07-13T17:55:12+02:00",
  "from": "2023-07-13T14:25:12+02:00",
  "deleted": false,
  "hour_rate": 100.0,
  "hour_rate_in_cents": 10000,
  "creator_id": null,
  "updater_id": 161,
  "external_id": null,
  "entry_ids": [],
  "suggestion_id": null,
  "draft": false,
  "manage": true,
  "forecast_id": null,
  "billed_at": null,
  "locked_reason": null,
  "locked": false,
  "invoice_id": null,
  "timestamps": []
}



UPDATE BULK EVENTS

Note: Use the same list of sub-parameters inside your "update" parameter as
specified on Update an event. You can update up to 100 events at a time.


REQUEST

curl "https://api.timelyapp.com/1.1/73/bulk/events" -d '{"update":[{"id":77,"note":"updated","billed":true}]}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOZu-NGOmtbTbKAsNxIUQ0JJf8hsQyq5xXuQrNfY374" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/bulk/events

POST /1.1/73/bulk/events
Accept: application/json
Content-Type: application/json
Authorization: Bearer YOZu-NGOmtbTbKAsNxIUQ0JJf8hsQyq5xXuQrNfY374


PARAMETERS

{"update":[{"id":77,"note":"updated","billed":true}]}


Name Description update Specifies the parameters for updating a group of events.
Example: [{ "id": 1055, "note": "updated", "billed": true }]


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "deleted_ids": [],
  "created_ids": [],
  "updated_ids": [
    77
  ],
  "errors": {
    "create": [],
    "update": [],
    "delete": []
  }
}



FORECASTS (TASKS)

Forecasts (Tasks) lets you visualize upcoming work for all Timely users in one
clean calendar view. You can then quickly assign work or edit plans across your
different projects and teams.


CREATE A FORECAST


REQUEST

curl "https://api.timelyapp.com/1.1/110/forecasts" -d '{"forecast":{"from":"2022-05-10","to":"2022-05-16","estimated_minutes":150,"users":[{"id":228}],"project_id":71,"title":"Title"}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer JAlLj94kdb-zO1Q2xD7rNzgWGMOlBQ3qPgYtczkKiYk" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/forecasts

POST /1.1/110/forecasts
Accept: application/json
Content-Type: application/json
Authorization: Bearer JAlLj94kdb-zO1Q2xD7rNzgWGMOlBQ3qPgYtczkKiYk


PARAMETERS

{"forecast":{"from":"2022-05-10","to":"2022-05-16","estimated_minutes":150,"users":[{"id":228}],"project_id":71,"title":"Title"}}


Name Description estimated_minutes Forecast minutes title Specifies title for a
forecast from Specifies the “from” time in a timestamp. Example values: from:
"2022-05-26T10:00:00+05:30" to Specifies the “to” time in a timestamp. Example
values: to: "2022-05-26T12:00:00+05:30" users Forecast assignees. Example
values: [{ id: 1 }, { id: 3 }] project_id required The numerical ID of the
desired project. Example values: 123 label_ids Specifies label IDs for a
forecast. Example values: label_ids:[2,3,4]


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 9,
  "note": "Title",
  "title": "Title",
  "description": "",
  "from": "2022-05-10",
  "to": "2022-05-16",
  "user": {
    "id": 228,
    "email": "marijaurbxrsyk@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:14+02:00",
    "estimated_minutes": 150,
    "estimated_duration": {
      "hours": 2,
      "minutes": 30,
      "seconds": 0,
      "formatted": "02:30",
      "total_hours": 2.5,
      "total_seconds": 9000,
      "total_minutes": 150
    },
    "weekly_capacity": 40.0,
    "work_days": "MON,TUE,WED,THU,FRI",
    "weekdays": "MO,TU,WE,TH,FR"
  },
  "users": [
    {
      "id": 228,
      "email": "marijaurbxrsyk@timelyapp.com",
      "name": "Marija Petrovic",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/f8777cdac92fd00ebfbc9858ecd5fdc9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:14+02:00",
      "estimated_minutes": 0,
      "estimated_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "weekly_capacity": 40.0,
      "work_days": "MON,TUE,WED,THU,FRI",
      "weekdays": "MO,TU,WE,TH,FR"
    }
  ],
  "project": {
    "id": 71,
    "active": true,
    "name": "Timely",
    "color": "67a3bc",
    "client": {
      "id": 80,
      "name": "Iure corporis minus temporibus.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:14+02:00"
    },
    "updated_at": "2023-07-13T14:25:14+02:00"
  },
  "estimated_minutes": 150,
  "updated_at": "2023-07-13T14:25:14+02:00",
  "created_at": "2023-07-13T14:25:14+02:00",
  "label_ids": [],
  "estimated_duration": {
    "hours": 2,
    "minutes": 30,
    "seconds": 0,
    "formatted": "02:30",
    "total_hours": 2.5,
    "total_seconds": 9000,
    "total_minutes": 150
  },
  "planned_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "logged_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "completed": false,
  "completed_at": null,
  "manage": true
}



DELETE A FORECAST


REQUEST

curl "https://api.timelyapp.com/1.1/111/forecasts/10" -d '' -X DELETE \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer KE13kx5u8yiL6tCNynvv8Hypn4t9KiZN8p-FKgB9tQk" \
    -H "Cookie: "


ENDPOINT

DELETE /1.1/:account_id/forecasts/:id

DELETE /1.1/111/forecasts/10
Accept: application/json
Content-Type: application/json
Authorization: Bearer KE13kx5u8yiL6tCNynvv8Hypn4t9KiZN8p-FKgB9tQk


PARAMETERS

Name Description account_id The account ID containing the forecast you want to
delete id required The ID for the forecast you want to delete


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{}



LIST ALL FORECASTS


REQUEST

curl -g "https://api.timelyapp.com/1.1/112/forecasts" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer O4LHD2SnM-q7CuNsiujDDpcAtPW7Yvre9m2qFowZuRI" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/forecasts

GET /1.1/112/forecasts
Accept: application/json
Content-Type: application/json
Authorization: Bearer O4LHD2SnM-q7CuNsiujDDpcAtPW7Yvre9m2qFowZuRI


PARAMETERS

Name Description account_id The account ID containing the forecasts you want to
retrieve since Specifies the start date for returned results. Example:
since=2014-08-18 upto Specifies the end date for returned results. Example:
upto=2014-08-24 forecast_ids Specifies the forecasts for which you want results.
Numerical forecast IDs should separated by a comma, like so: "forecast_ids":
"175551,117861" user_ids Specifies the users for which you want results.
Numerical user IDs should separated by a comma, like so: "user_ids":
"175551,117861" project_ids Specifies the projects for which you want results.
Numerical project IDs should be separated by a comma, like so: "project_ids":
"1751,1171" page Page number (Default 1) per_page Records per page (Default 50)


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 11,
    "note": "title",
    "title": "title",
    "description": null,
    "from": "2023-07-10",
    "to": "2023-07-16",
    "user": {
      "id": 235,
      "email": "quentinovlliavw@timelyapp.com",
      "name": "Quintin Duponde",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/871c714712de640d0a67ed3c69099fec?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/871c714712de640d0a67ed3c69099fec?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/871c714712de640d0a67ed3c69099fec?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/871c714712de640d0a67ed3c69099fec?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/871c714712de640d0a67ed3c69099fec?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:15+02:00",
      "estimated_minutes": 360,
      "estimated_duration": {
        "hours": 6,
        "minutes": 0,
        "seconds": 0,
        "formatted": "06:00",
        "total_hours": 6.0,
        "total_seconds": 21600,
        "total_minutes": 360
      },
      "weekly_capacity": 40.0,
      "work_days": "MON,TUE,WED,THU,FRI",
      "weekdays": "MO,TU,WE,TH,FR"
    },
    "users": [
      {
        "id": 233,
        "email": "marijamnkkqrnj@timelyapp.com",
        "name": "Marija Petrovic",
        "avatar": {
          "large_retina": "https://www.gravatar.com/avatar/704f3944a3e1042c23769361e2450981?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
          "large": "https://www.gravatar.com/avatar/704f3944a3e1042c23769361e2450981?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
          "medium_retina": "https://www.gravatar.com/avatar/704f3944a3e1042c23769361e2450981?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
          "medium": "https://www.gravatar.com/avatar/704f3944a3e1042c23769361e2450981?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
          "timeline": "https://www.gravatar.com/avatar/704f3944a3e1042c23769361e2450981?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
        },
        "updated_at": "2023-07-13T14:25:15+02:00",
        "estimated_minutes": 0,
        "estimated_duration": {
          "hours": 0,
          "minutes": 0,
          "seconds": 0,
          "formatted": "00:00",
          "total_hours": 0.0,
          "total_seconds": 0,
          "total_minutes": 0
        },
        "weekly_capacity": 40.0,
        "work_days": "MON,TUE,WED,THU,FRI",
        "weekdays": "MO,TU,WE,TH,FR"
      }
    ],
    "project": {
      "id": 73,
      "active": true,
      "name": "Timely",
      "color": "67a3bc",
      "client": {
        "id": 82,
        "name": "Et et exercitationem quibusdam.",
        "active": true,
        "external_id": null,
        "updated_at": "2023-07-13T14:25:15+02:00"
      },
      "updated_at": "2023-07-13T14:25:15+02:00"
    },
    "estimated_minutes": 360,
    "updated_at": "2023-07-13T14:25:15+02:00",
    "created_at": "2023-07-13T14:25:15+02:00",
    "label_ids": [],
    "estimated_duration": {
      "hours": 6,
      "minutes": 0,
      "seconds": 0,
      "formatted": "06:00",
      "total_hours": 6.0,
      "total_seconds": 21600,
      "total_minutes": 360
    },
    "planned_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "logged_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "completed": false,
    "completed_at": null,
    "manage": true
  }
]



UPDATE A FORECAST


REQUEST

curl "https://api.timelyapp.com/1.1/113/forecasts/12" -d '{"forecast":{"from":"2022-05-10","to":"2022-05-16","estimated_minutes":30,"users":[{"id":236}],"project_id":74,"title":"new title"}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer vIIVtTjtXopImzWNEfdTEnl390HMT6UKbN2GrhnmSKk" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/forecasts/:id

PUT /1.1/113/forecasts/12
Accept: application/json
Content-Type: application/json
Authorization: Bearer vIIVtTjtXopImzWNEfdTEnl390HMT6UKbN2GrhnmSKk


PARAMETERS

{"forecast":{"from":"2022-05-10","to":"2022-05-16","estimated_minutes":30,"users":[{"id":236}],"project_id":74,"title":"new title"}}


Name Description id required Forecast ID estimated_minutes required Forecast
minutes title Specifies title for a forecast from Specifies the “from” time in a
timestamp. Example values: from: "2022-05-26T10:00:00+05:30" to Specifies the
“to” time in a timestamp. Example values: to: "2022-05-26T12:00:00+05:30" users
Forecast assignees. Example values: [{ id: 1 }, { id: 3 }] project_id required
The numerical ID of the desired project. Example values: 123 label_ids Specifies
label IDs for a forecast. Example values: label_ids:[2,3,4]


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 12,
  "note": "new title",
  "title": "new title",
  "description": "",
  "from": "2022-05-10",
  "to": "2022-05-16",
  "user": {
    "id": 236,
    "email": "marijakntcdqbp@timelyapp.com",
    "name": "Marija Petrovic",
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
      "medium_retina": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
      "timeline": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
    },
    "updated_at": "2023-07-13T14:25:15+02:00",
    "estimated_minutes": 30,
    "estimated_duration": {
      "hours": 0,
      "minutes": 30,
      "seconds": 0,
      "formatted": "00:30",
      "total_hours": 0.5,
      "total_seconds": 1800,
      "total_minutes": 30
    },
    "weekly_capacity": 40.0,
    "work_days": "MON,TUE,WED,THU,FRI",
    "weekdays": "MO,TU,WE,TH,FR"
  },
  "users": [
    {
      "id": 236,
      "email": "marijakntcdqbp@timelyapp.com",
      "name": "Marija Petrovic",
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/4f9fff7970add28aa55680ebb5870945?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "updated_at": "2023-07-13T14:25:15+02:00",
      "estimated_minutes": 0,
      "estimated_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "weekly_capacity": 40.0,
      "work_days": "MON,TUE,WED,THU,FRI",
      "weekdays": "MO,TU,WE,TH,FR"
    }
  ],
  "project": {
    "id": 74,
    "active": true,
    "name": "Timely",
    "color": "67a3bc",
    "client": {
      "id": 83,
      "name": "Doloremque fugiat aliquid consequatur.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:15+02:00"
    },
    "updated_at": "2023-07-13T14:25:15+02:00"
  },
  "estimated_minutes": 30,
  "updated_at": "2023-07-13T14:25:15+02:00",
  "created_at": "2023-07-13T14:25:15+02:00",
  "label_ids": [],
  "estimated_duration": {
    "hours": 0,
    "minutes": 30,
    "seconds": 0,
    "formatted": "00:30",
    "total_hours": 0.5,
    "total_seconds": 1800,
    "total_minutes": 30
  },
  "planned_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "logged_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "completed": false,
  "completed_at": null,
  "manage": true
}



LABELS

Labels (AKA Tags) help you classify work, group related tasks and require
certain information for events. This API lets you to create, list, update and
delete tags created on an account.


CREATE A LABEL


REQUEST

curl "https://api.timelyapp.com/1.1/151/labels" -d '{"name":null,"label":{"name":"Web Programming","active":true}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer Q3Jpak14cV28VWHOc4uVbTNS6W4UCoU-a3UeVqUdTW4" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/labels

POST /1.1/151/labels
Accept: application/json
Content-Type: application/json
Authorization: Bearer Q3Jpak14cV28VWHOc4uVbTNS6W4UCoU-a3UeVqUdTW4


PARAMETERS

{"name":null,"label":{"name":"Web Programming","active":true}}


Name Description name required Specifies the label name emoji Specifies the
emoji url for a label parent_id Set a parent_id if you want to create a child
label active Example values: "true" or "false". Using "false" changes the label
state to "archived"


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 1,
  "name": "Web Programming",
  "sequence": 1,
  "parent_id": null,
  "emoji": "https://emoji.memorycdn.com/tw64/1f3f7-fe0f.png",
  "active": true,
  "created_at": "2023-07-13T14:25:18+02:00",
  "updated_at": "2023-07-13T14:25:18+02:00",
  "children": []
}



DELETE A LABEL


REQUEST

curl "https://api.timelyapp.com/1.1/152/labels/2" -d '' -X DELETE \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer JRqmGLtG5Qg2oBLEjY6H5lmtYhbhJm1-DQBt6XaoCYU" \
    -H "Cookie: "


ENDPOINT

DELETE /1.1/:account_id/labels/:id

DELETE /1.1/152/labels/2
Accept: application/json
Content-Type: application/json
Authorization: Bearer JRqmGLtG5Qg2oBLEjY6H5lmtYhbhJm1-DQBt6XaoCYU


PARAMETERS

Name Description account_id The account ID containing the label you want to
delete id The ID of the label you want to delete


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{}



LIST ALL CHILD LABELS

Get the children of any tag on a user’s account.


REQUEST

curl -g "https://api.timelyapp.com/1.1/155/labels?parent_id=4" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer tZVM3-cDDMySI0q7tN2QUhMr4XMCk8z7GyaFTIeU4Co" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/labels

GET /1.1/155/labels?parent_id=4
Accept: application/json
Content-Type: application/json
Authorization: Bearer tZVM3-cDDMySI0q7tN2QUhMr4XMCk8z7GyaFTIeU4Co


PARAMETERS

parent_id: 4


Name Description account_id The account ID containing the label you want to.
retrieve parent_id The parent ID whose children you want to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 4,
  "name": "Web Programming",
  "sequence": 1,
  "parent_id": null,
  "emoji": null,
  "active": true,
  "created_at": "2023-07-13T14:25:19+02:00",
  "updated_at": "2023-07-13T14:25:19+02:00",
  "children": []
}



LIST ALL LABELS

Get all the tags present in user’s account.


REQUEST

curl -g "https://api.timelyapp.com/1.1/154/labels" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer k_Vxnqny49E6EES9-CnSAHTxiRrQLydMcsKoSXslL8s" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/labels

GET /1.1/154/labels
Accept: application/json
Content-Type: application/json
Authorization: Bearer k_Vxnqny49E6EES9-CnSAHTxiRrQLydMcsKoSXslL8s


PARAMETERS

Name Description account_id The account ID containing the label you want to.
retrieve offset Retrieve labels from offset limit Retrieve number of labels
filter Specifies which records to retrieve. The default shows a current
workspace’s all labels (filter=all). Example: "filter=all" or "filter=active" or
"filter=archived"


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[]



RETRIEVE A LABEL

Get single tags present in user’s account.


REQUEST

curl -g "https://api.timelyapp.com/1.1/153/labels/3" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer B_11Vcaqc8xLT1oUarPbovJ5Sz864aFC4Pw9ikXbiQo" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/labels/:id

GET /1.1/153/labels/3
Accept: application/json
Content-Type: application/json
Authorization: Bearer B_11Vcaqc8xLT1oUarPbovJ5Sz864aFC4Pw9ikXbiQo


PARAMETERS

Name Description account_id The account ID containing the label you want to.
retrieve id The ID of the label you want to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 3,
  "name": "Web Programming",
  "sequence": 1,
  "parent_id": null,
  "emoji": null,
  "active": true,
  "created_at": "2023-07-13T14:25:18+02:00",
  "updated_at": "2023-07-13T14:25:18+02:00",
  "children": []
}



UPDATE A LABEL


REQUEST

curl "https://api.timelyapp.com/1.1/156/labels/5" -d '{"name":null,"label":{"name":"updated name"}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer HGirn4Esxm0FwBJsvDnDU4cswQfSVWsnQk1mlIDu-M8" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/labels/:id

PUT /1.1/156/labels/5
Accept: application/json
Content-Type: application/json
Authorization: Bearer HGirn4Esxm0FwBJsvDnDU4cswQfSVWsnQk1mlIDu-M8


PARAMETERS

{"name":null,"label":{"name":"updated name"}}


Name Description id required Label ID name required Specifies the label name
emoji Specifies the emoji url for a tag parent_id Set a parent_id if you want to
create a child label active Example values: "true" or "false". Using "false"
changes the label state to "archived"


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 5,
  "name": "updated name",
  "sequence": 1,
  "parent_id": null,
  "emoji": "https://emoji.memorycdn.com/tw64/1f3f7-fe0f.png",
  "active": true,
  "created_at": "2023-07-13T14:25:19+02:00",
  "updated_at": "2023-07-13T14:25:19+02:00",
  "children": []
}



PERMISSIONS


RETRIEVE CURRENT USER'S PERMISSIONS

Using the account id one can see the currently logged user's permissions


REQUEST

curl -g "https://api.timelyapp.com/1.1/167/users/current/permissions" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer y28V5NY6EW9tLwl1eVukkPKnTlQToasN3pzoz9vu1B4" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users/current/permissions

GET /1.1/167/users/current/permissions
Accept: application/json
Content-Type: application/json
Authorization: Bearer y28V5NY6EW9tLwl1eVukkPKnTlQToasN3pzoz9vu1B4


PARAMETERS

Name Description account_id Account id for which current user's permissions are
to be retrieved


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "resource": "account",
    "permissions": [
      "create",
      "read",
      "update",
      "manage_plan",
      "manage_subscriptions",
      "manage_dev"
    ]
  },
  {
    "resource": "company",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "forecast",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "invoice",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "label",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "project",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "report",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "team",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "user",
    "permissions": [
      "create",
      "delete",
      "notify",
      "read",
      "update"
    ]
  }
]



RETRIEVE USER'S PERMISSIONS BY ID

Using the account id and user id one can see a specific user's permissions


REQUEST

curl -g "https://api.timelyapp.com/1.1/168/users/344/permissions" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 3zZo-JrwgZnSS-8zNUeKMJZUM7SUeQN_YDCpy50OrwE" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users/:user_id/permissions

GET /1.1/168/users/344/permissions
Accept: application/json
Content-Type: application/json
Authorization: Bearer 3zZo-JrwgZnSS-8zNUeKMJZUM7SUeQN_YDCpy50OrwE


PARAMETERS

Name Description account_id Account for which user's permissions are required
user_id User whose permissions are required


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "resource": "account",
    "permissions": [
      "create",
      "read",
      "update",
      "manage_plan",
      "manage_subscriptions",
      "manage_dev"
    ]
  },
  {
    "resource": "company",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "forecast",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "invoice",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "label",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "project",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "report",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "team",
    "permissions": [
      "create",
      "delete",
      "read",
      "update"
    ]
  },
  {
    "resource": "user",
    "permissions": [
      "create",
      "delete",
      "notify",
      "read",
      "update"
    ]
  }
]



PROJECTS

Projects contain all the project details on an account. With this API, you can
retrieve, update, create or delete a specific project, or list all projects.


CREATE A PROJECT


REQUEST

curl "https://api.timelyapp.com/1.1/174/projects" -d '{"project":{"name":"New Project","rate_type":"project","hour_rate":50.0,"active":true,"deleted":false,"currency_code":"usd","color":"67a3bc","enable_labels":"all","lock_hours_in":0,"client_id":126,"budget_type":"M","budget":300,"users":[{"user_id":356}],"budget_recurrence":{"recur":"week","start_date":"2018-09-21","end_date":"2019-09-21","recur_until":"end_date"},"labels":[{"label_id":6,"required":true},{"label_id":7,"required":true},{"label_id":8,"required":false},{"label_id":9,"required":false}]},"name":null}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer Tf2Imz7gnVkhzftKQ_R3WKboTPoYCMODIe5JKcJ1i6c" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/projects

POST /1.1/174/projects
Accept: application/json
Content-Type: application/json
Authorization: Bearer Tf2Imz7gnVkhzftKQ_R3WKboTPoYCMODIe5JKcJ1i6c


PARAMETERS

{"project":{"name":"New Project","rate_type":"project","hour_rate":50.0,"active":true,"deleted":false,"currency_code":"usd","color":"67a3bc","enable_labels":"all","lock_hours_in":0,"client_id":126,"budget_type":"M","budget":300,"users":[{"user_id":356}],"budget_recurrence":{"recur":"week","start_date":"2018-09-21","end_date":"2019-09-21","recur_until":"end_date"},"labels":[{"label_id":6,"required":true},{"label_id":7,"required":true},{"label_id":8,"required":false},{"label_id":9,"required":false}]},"name":null}


Name Description project required Project attributes name required Specifies the
project name color required Specifies the project color. Example values: 47b17c,
67a3bc, bd4c4f, d0915a, 866b9c, cdae4f, 5ab8b7, c697c0 client_id required
Specifies the numerical client ID users required Specifies the project users. It
should be an array of users, with numerical user IDs and an hour_rate. For
example: "users": [{ "user_id": 175551, "hour_rate": 25.0 },{ "user_id": 117861,
"hour_rate": 27.0 }] billable Specifies whether the project is billable or not.
It should be “true” or “false” budget Specifies the budget for the project. It
should be numeric value hour_rate Specifies the hourly rate for the project. It
should be numeric valu rate_type Specifies the hourly rate type for the project.
It should be “user” or “project” external_id The external_id can be used to
reference external resource IDs to Timely resources, and should be alphanumeric
(max. 512 characters) budget_recurrence Specifies when a recurring budget will
refresh send_invite Specifies if you want to send a project invite email. It
should be “true” or “false” required_notes Project hours notes to be required
for logging required_labels Project hours with atleast one label to be required
for logging labels Specifies the project labels, should be array of labels with
numerical label id and required flag Example: "labels": [{ "label_id": 1,
"required": true }, { "label_id": 2, "required": false }] enable_labels
Specifies the way labels will be allowed for logging for the project. It should
be “all”, “none” or “custom” invoice_by_budget Specifies if the project's
invoices are based on its budget instead of hours. It should be “true“ or
“false“


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 107,
  "active": true,
  "account_id": 174,
  "name": "New Project",
  "color": "67a3bc",
  "rate_type": "project",
  "billable": true,
  "created_at": 1689251120,
  "updated_at": 1689251120,
  "external_id": null,
  "budget_scope": null,
  "client": {
    "id": 126,
    "name": "Unde distinctio mollitia dolorum.",
    "active": true,
    "external_id": null,
    "updated_at": "2023-07-13T14:25:20+02:00"
  },
  "required_notes": false,
  "required_labels": false,
  "budget_expired_on": null,
  "has_recurrence": true,
  "enable_labels": "all",
  "default_labels": false,
  "currency": {
    "id": "usd",
    "name": "United States Dollar",
    "iso_code": "USD",
    "symbol": "$",
    "symbol_first": true
  },
  "budget": 300,
  "budget_type": "M",
  "budget_calculation": "completed",
  "hour_rate": 50.0,
  "hour_rate_in_cents": 5000.0,
  "budget_progress": 0.0,
  "budget_percent": 0.0,
  "invoice_by_budget": false,
  "users": [
    {
      "user_id": 356,
      "hour_rate": 50.0,
      "hour_rate_in_cents": 5000.0,
      "updated_at": "2023-07-13T14:25:20+02:00",
      "created_at": "2023-07-13T14:25:20+02:00",
      "deleted": false
    }
  ],
  "labels": [
    {
      "project_id": 107,
      "label_id": 6,
      "budget": 0,
      "required": true,
      "default": false,
      "updated_at": "2023-07-13T14:25:20+02:00"
    },
    {
      "project_id": 107,
      "label_id": 7,
      "budget": 0,
      "required": true,
      "default": false,
      "updated_at": "2023-07-13T14:25:20+02:00"
    },
    {
      "project_id": 107,
      "label_id": 8,
      "budget": 0,
      "required": false,
      "default": false,
      "updated_at": "2023-07-13T14:25:20+02:00"
    },
    {
      "project_id": 107,
      "label_id": 9,
      "budget": 0,
      "required": false,
      "default": false,
      "updated_at": "2023-07-13T14:25:20+02:00"
    }
  ],
  "label_ids": [
    6,
    7,
    8,
    9
  ],
  "required_label_ids": [
    6,
    7
  ],
  "default_label_ids": [],
  "cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "estimated_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "billed_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "billed_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "unbilled_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "unbilled_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "first_logged_on": null,
  "last_logged_on": null,
  "budget_recurrence": {
    "recur": "week",
    "start_date": "2018-09-21",
    "end_date": "2019-09-21",
    "recur_until": "end_date",
    "days_count": 365,
    "updated_at": "2023-07-13T14:25:20+02:00"
  },
  "created_from": "Timely"
}



DELETE A PROJECT


REQUEST

curl "https://api.timelyapp.com/1.1/175/projects/108" -d '' -X DELETE \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer jOVXl3SHsP1ZtpqlUjshqD9YUL59XdLP25bs_SWNP_8" \
    -H "Cookie: "


ENDPOINT

DELETE /1.1/:account_id/projects/:id

DELETE /1.1/175/projects/108
Accept: application/json
Content-Type: application/json
Authorization: Bearer jOVXl3SHsP1ZtpqlUjshqD9YUL59XdLP25bs_SWNP_8


PARAMETERS

Name Description account_id The account ID containing the project you want to
delete id The ID of the project you want to delete


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{}



LIST ALL PROJECTS

Note: Admin users can access all projects on an account. Other users can only
access the projects they belong to.

Project lists will return your 10000 most recently updated projects.
Additionally, you can add the “limit”, “filter”, ”sort” and “order” optional
parameters to change the result.


REQUEST

curl -g "https://api.timelyapp.com/1.1/177/projects" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer EFBr5alDNlVF0MGPrPmWbbNzgdikWTD-LSLzl_nXkP4" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/projects

GET /1.1/177/projects
Accept: application/json
Content-Type: application/json
Authorization: Bearer EFBr5alDNlVF0MGPrPmWbbNzgdikWTD-LSLzl_nXkP4


PARAMETERS

Name Description offset Retrieve projects from offset limit Retrieve number of
projects sort Field to sort projects by - updated_at, id, name (Default
updated_at) order Sorting order - desc, asc (Default desc) filter Filter
projects - mine, active, archived, all (Default mine) updated_after Retrieve
records updated after a certain timestamp project_ids Retrieve specific projects


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 110,
    "active": true,
    "account_id": 177,
    "name": "Timely",
    "color": "67a3bc",
    "rate_type": "project",
    "billable": true,
    "created_at": 1689251121,
    "updated_at": 1689251121,
    "external_id": null,
    "budget_scope": null,
    "client": {
      "id": 129,
      "name": "Aliquam magnam et distinctio.",
      "active": true,
      "external_id": null,
      "updated_at": "2023-07-13T14:25:21+02:00"
    },
    "required_notes": false,
    "required_labels": false,
    "budget_expired_on": null,
    "has_recurrence": false,
    "enable_labels": "all",
    "default_labels": false,
    "currency": {
      "id": "usd",
      "name": "United States Dollar",
      "iso_code": "USD",
      "symbol": "$",
      "symbol_first": true
    },
    "budget": 0,
    "budget_type": "",
    "budget_calculation": "completed",
    "hour_rate": 50.0,
    "hour_rate_in_cents": 5000.0,
    "budget_progress": 0.0,
    "budget_percent": 0.0,
    "invoice_by_budget": false,
    "users": [
      {
        "user_id": 362,
        "hour_rate": 100.0,
        "hour_rate_in_cents": 10000.0,
        "updated_at": "2023-07-13T14:25:21+02:00",
        "created_at": "2023-07-13T14:25:21+02:00",
        "deleted": false
      }
    ],
    "labels": [],
    "label_ids": [],
    "required_label_ids": [],
    "default_label_ids": [],
    "cost": {
      "fractional": 0,
      "formatted": "$0.00",
      "amount": 0.0,
      "currency_code": "usd"
    },
    "estimated_cost": {
      "fractional": 0,
      "formatted": "$0.00",
      "amount": 0.0,
      "currency_code": "usd"
    },
    "duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "estimated_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "billed_cost": {
      "fractional": 0,
      "formatted": "$0.00",
      "amount": 0.0,
      "currency_code": "usd"
    },
    "billed_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "unbilled_cost": {
      "fractional": 0,
      "formatted": "$0.00",
      "amount": 0.0,
      "currency_code": "usd"
    },
    "unbilled_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "created_from": "Web"
  }
]



RETRIEVE A PROJECT

Retrieve a single project by using its ID.


REQUEST

curl -g "https://api.timelyapp.com/1.1/176/projects/109" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer Xgpci-WHN0qL92Ih0Kc03h22xLS8SEfE2NuI0OekQxU" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/projects/:id

GET /1.1/176/projects/109
Accept: application/json
Content-Type: application/json
Authorization: Bearer Xgpci-WHN0qL92Ih0Kc03h22xLS8SEfE2NuI0OekQxU


PARAMETERS

Name Description account_id The account ID containing the project you want to
retrieve id The ID of the project you want to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 109,
  "active": true,
  "account_id": 176,
  "name": "Timely",
  "color": "67a3bc",
  "rate_type": "project",
  "billable": true,
  "created_at": 1689251121,
  "updated_at": 1689251121,
  "external_id": null,
  "budget_scope": null,
  "client": {
    "id": 128,
    "name": "Et totam quo commodi.",
    "active": true,
    "external_id": null,
    "updated_at": "2023-07-13T14:25:21+02:00"
  },
  "required_notes": false,
  "required_labels": false,
  "budget_expired_on": null,
  "has_recurrence": false,
  "enable_labels": "all",
  "default_labels": false,
  "currency": {
    "id": "usd",
    "name": "United States Dollar",
    "iso_code": "USD",
    "symbol": "$",
    "symbol_first": true
  },
  "budget": 0,
  "budget_type": "",
  "budget_calculation": "completed",
  "hour_rate": 50.0,
  "hour_rate_in_cents": 5000.0,
  "budget_progress": 0.0,
  "budget_percent": 0.0,
  "invoice_by_budget": false,
  "users": [
    {
      "user_id": 360,
      "hour_rate": 100.0,
      "hour_rate_in_cents": 10000.0,
      "updated_at": "2023-07-13T14:25:21+02:00",
      "created_at": "2023-07-13T14:25:21+02:00",
      "deleted": false
    }
  ],
  "labels": [],
  "label_ids": [],
  "required_label_ids": [],
  "default_label_ids": [],
  "cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "estimated_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "billed_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "billed_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "unbilled_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "unbilled_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "first_logged_on": null,
  "last_logged_on": null,
  "locked_hours": false,
  "created_from": "Web"
}



UPDATE A PROJECT


REQUEST

curl "https://api.timelyapp.com/1.1/179/projects/112" -d '{"project":{"name":"updated project name","name":null}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer VwCpiHaWAfpX4pm5Ade_jylpdHT8aADrYYLxc6W30qg" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/projects/:id

PUT /1.1/179/projects/112
Accept: application/json
Content-Type: application/json
Authorization: Bearer VwCpiHaWAfpX4pm5Ade_jylpdHT8aADrYYLxc6W30qg


PARAMETERS

{"project":{"name":"updated project name","name":null}}


Name Description id required Project ID project Project attributes project[name]
required Specifies the project name project[active] Example values: “true” or
“false”. Using “false” changes the project state to “archived” project[color]
required Specifies the project color. It should be one of these: 47b17c, 67a3bc,
bd4c4f, d0915a, 866b9c, cdae4f, 5ab8b7, c697c0 project[client_id] required
Specifies the numerical client ID project[users] required Specifies the project
users. It should be an array of users, with numerical user IDs and an hour_rate.
For example: "users": [{ "user_id": 175551, "hour_rate": 25.0 },{ "user_id":
117861, "hour_rate": 27.0 }] project[billable] Specifies whether the project is
billable or not. It should be “true” or “false” project[budget] Specifies the
budget for the project. It should be numeric value project[hour_rate] Specifies
the hourly rate for the project. It should be numeric value project[rate_type]
Specifies the hourly rate type for the project. It should be “user” or “project”
project[external_id] The external_id can be used to reference external resource
IDs to Timely resources, and should be alphanumeric (max. 512 characters)
project[send_invite] Specifies if you want to send a project invite email. It
should be “true” or “false” project[required_notes] Project hours notes to be
required for logging project[required_labels] Project hours with atleast one
label to be required for logging project[enable_labels] Specifies the way labels
will be allowed for logging the project. It should be “all”, “none” or “custom”
project[invoice_by_budget] Specifies if the project's invoices are based on its
budget instead of hours. It should be “true“ or “false“. update_existing_hours
Specifies if the rates of existing hours in the project should be updated. It
should be "true" or "false". Default: true update_unbilled_only Specifies if
only the rates of unbilled hours in the project should be updated. It is ignored
if "update_existing_hours" is false. It should be "true" or "false". Default:
false


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 112,
  "active": true,
  "account_id": 179,
  "name": "Timely",
  "color": "67a3bc",
  "rate_type": "project",
  "billable": true,
  "created_at": 1689251121,
  "updated_at": 1689251121,
  "external_id": null,
  "budget_scope": null,
  "client": {
    "id": 131,
    "name": "Explicabo ducimus autem ex.",
    "active": true,
    "external_id": null,
    "updated_at": "2023-07-13T14:25:21+02:00"
  },
  "required_notes": false,
  "required_labels": false,
  "budget_expired_on": null,
  "has_recurrence": false,
  "enable_labels": "none",
  "default_labels": false,
  "currency": {
    "id": "usd",
    "name": "United States Dollar",
    "iso_code": "USD",
    "symbol": "$",
    "symbol_first": true
  },
  "budget": 0,
  "budget_type": "",
  "budget_calculation": "pending",
  "hour_rate": 50.0,
  "hour_rate_in_cents": 5000.0,
  "budget_progress": 0.0,
  "budget_percent": 0.0,
  "invoice_by_budget": false,
  "users": [
    {
      "user_id": 366,
      "hour_rate": 50.0,
      "hour_rate_in_cents": 5000.0,
      "updated_at": "2023-07-13T14:25:21+02:00",
      "created_at": "2023-07-13T14:25:21+02:00",
      "deleted": false
    }
  ],
  "labels": [],
  "label_ids": [],
  "required_label_ids": [],
  "default_label_ids": [],
  "cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "estimated_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "estimated_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "billed_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "billed_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "unbilled_cost": {
    "fractional": 0,
    "formatted": "$0.00",
    "amount": 0.0,
    "currency_code": "usd"
  },
  "unbilled_duration": {
    "hours": 0,
    "minutes": 0,
    "seconds": 0,
    "formatted": "00:00",
    "total_hours": 0.0,
    "total_seconds": 0,
    "total_minutes": 0
  },
  "first_logged_on": null,
  "last_logged_on": null,
  "created_from": "Web"
}



REPORTS

Report on activity across your business, including individual and team
performance. Export report data from JSON to a format of your choice. Note:
.XLS, .CSV and .PDF report formats can only be downloaded from the web UI, not
the API.


ALL REPORTS

For a normal user accessing all account reports.

Note:

1) If start_date and end_date parameters are not passed, the period will default
to the beginning-to-end of a month. 2) If user and project parameters are not
passed, by default a normal user will get all reports on an account, and a
limited user will only get reports they have created. 3) Only normal users can
access reports created by other users on an account. Limited users can only
access reports they have created. 4) Only normal users can access reports for
other projects on an account. Limited users can only access reports for projects
they have created.


REQUEST

curl "https://api.timelyapp.com/1.1/215/reports" -d '{"user_ids":"471","since":"2018-01-01","until":"2019-01-01","project_ids":"197"}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer l5GYcjzdzqmggdJyvJC0xx19urOarnuChGDcJycyO1g" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/reports

POST /1.1/215/reports
Accept: application/json
Content-Type: application/json
Authorization: Bearer l5GYcjzdzqmggdJyvJC0xx19urOarnuChGDcJycyO1g


PARAMETERS

{"user_ids":"471","since":"2018-01-01","until":"2019-01-01","project_ids":"197"}


Name Description account_id The account ID containing the report you want to
retrieve user_ids Specifies the users for which you want reports. Numerical user
IDs should separated by a comma, like so: "user_ids": "175551,117861" since
Specifies the start date for a report: For example: "since" : "Jan 01, 2014"
until Specifies the end date for a report. For example: "until" : "Dec 31, 2014"
project_ids Specifies the projects for which you want reports. Numerical project
IDs should be separated by a comma, like so: "project_ids": "1751,1171" billed
Specifies whether you want to report to show estimated or billed events. For
example: "billed": false or "billed": true label_ids Specifies the labels
pertaining to a report you want to see. Numerical label IDs should be separated
by a comma, like so: "label_ids": [751,117] or "751,117". Result will include
any of provided values.


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 167,
    "name": "Qui rerum quasi perferendis.",
    "projects": [
      {
        "id": 197,
        "active": true,
        "account_id": 215,
        "name": "Timely",
        "color": "67a3bc",
        "rate_type": "project",
        "billable": true,
        "created_at": 1689251129,
        "updated_at": 1689251129,
        "external_id": null,
        "budget_scope": null,
        "client": {
          "id": 167,
          "name": "Qui rerum quasi perferendis.",
          "active": true,
          "external_id": null,
          "updated_at": "2023-07-13T14:25:29+02:00"
        },
        "required_notes": false,
        "required_labels": false,
        "budget_expired_on": null,
        "has_recurrence": false,
        "enable_labels": "all",
        "default_labels": false,
        "currency": {
          "id": "usd",
          "name": "United States Dollar",
          "iso_code": "USD",
          "symbol": "$",
          "symbol_first": true
        },
        "budget": 0,
        "budget_type": "",
        "budget_calculation": "completed",
        "hour_rate": 50.0,
        "hour_rate_in_cents": 5000.0,
        "budget_progress": 0.0,
        "budget_percent": 0.0,
        "invoice_by_budget": false,
        "duration": {
          "hours": 5,
          "minutes": 0,
          "seconds": 0,
          "formatted": "05:00",
          "total_hours": 5.0,
          "total_seconds": 18000,
          "total_minutes": 300
        },
        "estimated_duration": {
          "hours": 8,
          "minutes": 0,
          "seconds": 0,
          "formatted": "08:00",
          "total_hours": 8.0,
          "total_seconds": 28800,
          "total_minutes": 480
        },
        "billed_duration": {
          "hours": 0,
          "minutes": 0,
          "seconds": 0,
          "formatted": "00:00",
          "total_hours": 0.0,
          "total_seconds": 0,
          "total_minutes": 0
        },
        "unbilled_duration": {
          "hours": 5,
          "minutes": 0,
          "seconds": 0,
          "formatted": "05:00",
          "total_hours": 5.0,
          "total_seconds": 18000,
          "total_minutes": 300
        },
        "billable_duration": {
          "hours": 5,
          "minutes": 0,
          "seconds": 0,
          "formatted": "05:00",
          "total_hours": 5.0,
          "total_seconds": 18000,
          "total_minutes": 300
        },
        "non_billable_duration": {
          "hours": 0,
          "minutes": 0,
          "seconds": 0,
          "formatted": "00:00",
          "total_hours": 0.0,
          "total_seconds": 0,
          "total_minutes": 0
        },
        "cost": {
          "fractional": 50000,
          "formatted": "$500.00",
          "amount": 500.0,
          "currency_code": "usd"
        },
        "estimated_cost": {
          "fractional": 80000,
          "formatted": "$800.00",
          "amount": 800.0,
          "currency_code": "usd"
        },
        "billed_cost": {
          "fractional": 0,
          "formatted": "$0.00",
          "amount": 0.0,
          "currency_code": "usd"
        },
        "unbilled_cost": {
          "fractional": 50000,
          "formatted": "$500.00",
          "amount": 500.0,
          "currency_code": "usd"
        },
        "created_from": "Web"
      }
    ],
    "duration": {
      "hours": 5,
      "minutes": 0,
      "seconds": 0,
      "formatted": "05:00",
      "total_hours": 5.0,
      "total_seconds": 18000,
      "total_minutes": 300
    },
    "estimated_duration": {
      "hours": 8,
      "minutes": 0,
      "seconds": 0,
      "formatted": "08:00",
      "total_hours": 8.0,
      "total_seconds": 28800,
      "total_minutes": 480
    },
    "billed_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "unbilled_duration": {
      "hours": 5,
      "minutes": 0,
      "seconds": 0,
      "formatted": "05:00",
      "total_hours": 5.0,
      "total_seconds": 18000,
      "total_minutes": 300
    },
    "billable_duration": {
      "hours": 5,
      "minutes": 0,
      "seconds": 0,
      "formatted": "05:00",
      "total_hours": 5.0,
      "total_seconds": 18000,
      "total_minutes": 300
    },
    "non_billable_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "cost": {
      "fractional": 50000,
      "formatted": "$500.00",
      "amount": 500.0,
      "currency_code": "usd"
    },
    "estimated_cost": {
      "fractional": 80000,
      "formatted": "$800.00",
      "amount": 800.0,
      "currency_code": "usd"
    },
    "billed_cost": {
      "fractional": 0,
      "formatted": "$0.00",
      "amount": 0.0,
      "currency_code": "usd"
    },
    "unbilled_cost": {
      "fractional": 50000,
      "formatted": "$500.00",
      "amount": 500.0,
      "currency_code": "usd"
    }
  }
]



FILTER REPORTS

Use filter endpoints with parameters to limit returned data, so you only see the
values that you need.


REQUEST

curl "https://api.timelyapp.com/1.1/216/reports/filter" -d '{"user_ids":"473","since":"2018-01-01","until":"2019-01-01","project_ids":"198"}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer luYdeuv3hLU0nsmXaNIHgwga9EFjnzNrrxSnstjLPDs" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/reports/filter

POST /1.1/216/reports/filter
Accept: application/json
Content-Type: application/json
Authorization: Bearer luYdeuv3hLU0nsmXaNIHgwga9EFjnzNrrxSnstjLPDs


PARAMETERS

{"user_ids":"473","since":"2018-01-01","until":"2019-01-01","project_ids":"198"}


Name Description billed Retrieve billed hours only. Example: billed=true
label_ids Specifies the label IDs of the hours you want to retrieve. Label IDs
should be a numerical array, like so: label_ids: [3,4,2] or "3,4,2". Result will
include any of provided values. project_ids Specifies the project IDs of the
hours you want to retrieve. Project IDs should be a numerical array, like so:
project_ids: [3,4,2] since The start date of a report. For example:
'since=2019-01-01' team_ids Specifies the team IDs of the hours you want to
retrieve. Team IDs should be a numerical array, like so: team_ids: [3,4,2] until
The end date of a report. For example: 'until=2019-12-31'' user_ids Specifies
the user IDs of the hours you want to retrieve. User IDs should be a numerical
array, like so: user_ids: [3,4,2] group_by Specifies how to group the hours.
Default: group_by: ["clients", "users", "labels", "days", "teams"] scope
Retrieve events only. For example: 'scope=events' offset Retrieve records from
offset (Default 0). limit Retrieve number of records. Max 100 records. page Page
number (Default 1). locked Retrieve locked hours only. Example: locked=true


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "multiple_currency_report": false,
  "totals": {
    "duration": {
      "hours": 5,
      "minutes": 0,
      "seconds": 0,
      "formatted": "05:00",
      "total_hours": 5.0,
      "total_seconds": 18000,
      "total_minutes": 300
    },
    "estimated_duration": {
      "hours": 8,
      "minutes": 0,
      "seconds": 0,
      "formatted": "08:00",
      "total_hours": 8.0,
      "total_seconds": 28800,
      "total_minutes": 480
    },
    "billed_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "unbilled_duration": {
      "hours": 5,
      "minutes": 0,
      "seconds": 0,
      "formatted": "05:00",
      "total_hours": 5.0,
      "total_seconds": 18000,
      "total_minutes": 300
    },
    "billable_duration": {
      "hours": 5,
      "minutes": 0,
      "seconds": 0,
      "formatted": "05:00",
      "total_hours": 5.0,
      "total_seconds": 18000,
      "total_minutes": 300
    },
    "non_billable_duration": {
      "hours": 0,
      "minutes": 0,
      "seconds": 0,
      "formatted": "00:00",
      "total_hours": 0.0,
      "total_seconds": 0,
      "total_minutes": 0
    },
    "cost": {
      "fractional": 50000,
      "formatted": "$500.00",
      "amount": 500.0,
      "currency_code": "usd"
    },
    "estimated_cost": {
      "fractional": 80000,
      "formatted": "$800.00",
      "amount": 800.0,
      "currency_code": "usd"
    },
    "billed_cost": {
      "fractional": 0,
      "formatted": "$0.00",
      "amount": 0.0,
      "currency_code": "usd"
    },
    "unbilled_cost": {
      "fractional": 50000,
      "formatted": "$500.00",
      "amount": 500.0,
      "currency_code": "usd"
    }
  },
  "clients": [
    {
      "id": 168,
      "name": "Quam modi maiores facilis.",
      "projects": [
        {
          "id": 198,
          "active": true,
          "account_id": 216,
          "name": "Timely",
          "color": "67a3bc",
          "rate_type": "project",
          "billable": true,
          "created_at": 1689251129,
          "updated_at": 1689251129,
          "external_id": null,
          "budget_scope": null,
          "client": {
            "id": 168,
            "name": "Quam modi maiores facilis.",
            "active": true,
            "external_id": null,
            "updated_at": "2023-07-13T14:25:29+02:00"
          },
          "required_notes": false,
          "required_labels": false,
          "budget_expired_on": null,
          "has_recurrence": false,
          "enable_labels": "all",
          "default_labels": false,
          "currency": {
            "id": "usd",
            "name": "United States Dollar",
            "iso_code": "USD",
            "symbol": "$",
            "symbol_first": true
          },
          "budget": 0,
          "budget_type": "",
          "budget_calculation": "completed",
          "hour_rate": 50.0,
          "hour_rate_in_cents": 5000.0,
          "budget_progress": 0.0,
          "budget_percent": 0.0,
          "invoice_by_budget": false,
          "duration": {
            "hours": 5,
            "minutes": 0,
            "seconds": 0,
            "formatted": "05:00",
            "total_hours": 5.0,
            "total_seconds": 18000,
            "total_minutes": 300
          },
          "estimated_duration": {
            "hours": 8,
            "minutes": 0,
            "seconds": 0,
            "formatted": "08:00",
            "total_hours": 8.0,
            "total_seconds": 28800,
            "total_minutes": 480
          },
          "billed_duration": {
            "hours": 0,
            "minutes": 0,
            "seconds": 0,
            "formatted": "00:00",
            "total_hours": 0.0,
            "total_seconds": 0,
            "total_minutes": 0
          },
          "unbilled_duration": {
            "hours": 5,
            "minutes": 0,
            "seconds": 0,
            "formatted": "05:00",
            "total_hours": 5.0,
            "total_seconds": 18000,
            "total_minutes": 300
          },
          "billable_duration": {
            "hours": 5,
            "minutes": 0,
            "seconds": 0,
            "formatted": "05:00",
            "total_hours": 5.0,
            "total_seconds": 18000,
            "total_minutes": 300
          },
          "non_billable_duration": {
            "hours": 0,
            "minutes": 0,
            "seconds": 0,
            "formatted": "00:00",
            "total_hours": 0.0,
            "total_seconds": 0,
            "total_minutes": 0
          },
          "cost": {
            "fractional": 50000,
            "formatted": "$500.00",
            "amount": 500.0,
            "currency_code": "usd"
          },
          "estimated_cost": {
            "fractional": 80000,
            "formatted": "$800.00",
            "amount": 800.0,
            "currency_code": "usd"
          },
          "billed_cost": {
            "fractional": 0,
            "formatted": "$0.00",
            "amount": 0.0,
            "currency_code": "usd"
          },
          "unbilled_cost": {
            "fractional": 50000,
            "formatted": "$500.00",
            "amount": 500.0,
            "currency_code": "usd"
          },
          "created_from": "Web"
        }
      ],
      "duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "estimated_duration": {
        "hours": 8,
        "minutes": 0,
        "seconds": 0,
        "formatted": "08:00",
        "total_hours": 8.0,
        "total_seconds": 28800,
        "total_minutes": 480
      },
      "billed_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "unbilled_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "billable_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "non_billable_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      },
      "estimated_cost": {
        "fractional": 80000,
        "formatted": "$800.00",
        "amount": 800.0,
        "currency_code": "usd"
      },
      "billed_cost": {
        "fractional": 0,
        "formatted": "$0.00",
        "amount": 0.0,
        "currency_code": "usd"
      },
      "unbilled_cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      }
    }
  ],
  "users": [
    {
      "id": 473,
      "email": "marijatbkzztof@timelyapp.com",
      "name": "Marija Petrovic",
      "time_zone": "Europe/Paris",
      "updated_at": 1689251129,
      "active": false,
      "deleted": false,
      "memory_onboarded": true,
      "day_view_onboarded": true,
      "last_received_memories_date": null,
      "date_format": "dmy",
      "time_format": "24",
      "memory_retention_days": null,
      "avatar": {
        "large_retina": "https://www.gravatar.com/avatar/9bda2c56f02afc4d45a1c081cd3387a6?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
        "large": "https://www.gravatar.com/avatar/9bda2c56f02afc4d45a1c081cd3387a6?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=",
        "medium_retina": "https://www.gravatar.com/avatar/9bda2c56f02afc4d45a1c081cd3387a6?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
        "medium": "https://www.gravatar.com/avatar/9bda2c56f02afc4d45a1c081cd3387a6?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=",
        "timeline": "https://www.gravatar.com/avatar/9bda2c56f02afc4d45a1c081cd3387a6?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_timeline-e61ac46443487bd24fbaecab08cfacf5d0835b371cbe97a33b9e738744ef8334.jpg&s="
      },
      "duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "estimated_duration": {
        "hours": 8,
        "minutes": 0,
        "seconds": 0,
        "formatted": "08:00",
        "total_hours": 8.0,
        "total_seconds": 28800,
        "total_minutes": 480
      },
      "billed_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "unbilled_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "billable_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "non_billable_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      },
      "estimated_cost": {
        "fractional": 80000,
        "formatted": "$800.00",
        "amount": 800.0,
        "currency_code": "usd"
      },
      "billed_cost": {
        "fractional": 0,
        "formatted": "$0.00",
        "amount": 0.0,
        "currency_code": "usd"
      },
      "unbilled_cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      },
      "capacity": {
        "hours": 2096,
        "minutes": 0,
        "seconds": 0.0,
        "formatted": "2096:00",
        "total_hours": 2096.0,
        "total_seconds": 7545600.0,
        "total_minutes": 125760.0
      },
      "overtime": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "undertime": {
        "hours": 2091,
        "minutes": 0,
        "seconds": 0.0,
        "formatted": "2091:00",
        "total_hours": 2091.0,
        "total_seconds": 7527600.0,
        "total_minutes": 125460.0
      }
    }
  ],
  "labels": [
    {
      "id": 0,
      "name": "Untagged",
      "sequence": -1,
      "parent_id": null,
      "emoji": "https://emoji.memorycdn.com/tw64/1f3f7.png",
      "active": true,
      "created_at": null,
      "updated_at": null,
      "children": [],
      "duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "estimated_duration": {
        "hours": 8,
        "minutes": 0,
        "seconds": 0,
        "formatted": "08:00",
        "total_hours": 8.0,
        "total_seconds": 28800,
        "total_minutes": 480
      },
      "billed_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "unbilled_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "billable_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "non_billable_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      },
      "estimated_cost": {
        "fractional": 80000,
        "formatted": "$800.00",
        "amount": 800.0,
        "currency_code": "usd"
      },
      "billed_cost": {
        "fractional": 0,
        "formatted": "$0.00",
        "amount": 0.0,
        "currency_code": "usd"
      },
      "unbilled_cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      }
    }
  ],
  "days": [
    {
      "day": "2018-01-02",
      "duration": {
        "hours": 2,
        "minutes": 30,
        "seconds": 0,
        "formatted": "02:30",
        "total_hours": 2.5,
        "total_seconds": 9000,
        "total_minutes": 150
      },
      "estimated_duration": {
        "hours": 4,
        "minutes": 0,
        "seconds": 0,
        "formatted": "04:00",
        "total_hours": 4.0,
        "total_seconds": 14400,
        "total_minutes": 240
      },
      "billed_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "unbilled_duration": {
        "hours": 2,
        "minutes": 30,
        "seconds": 0,
        "formatted": "02:30",
        "total_hours": 2.5,
        "total_seconds": 9000,
        "total_minutes": 150
      },
      "billable_duration": {
        "hours": 2,
        "minutes": 30,
        "seconds": 0,
        "formatted": "02:30",
        "total_hours": 2.5,
        "total_seconds": 9000,
        "total_minutes": 150
      },
      "non_billable_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "cost": {
        "fractional": 25000,
        "formatted": "$250.00",
        "amount": 250.0,
        "currency_code": "usd"
      },
      "estimated_cost": {
        "fractional": 40000,
        "formatted": "$400.00",
        "amount": 400.0,
        "currency_code": "usd"
      },
      "billed_cost": {
        "fractional": 0,
        "formatted": "$0.00",
        "amount": 0.0,
        "currency_code": "usd"
      },
      "unbilled_cost": {
        "fractional": 25000,
        "formatted": "$250.00",
        "amount": 250.0,
        "currency_code": "usd"
      }
    },
    {
      "day": "2018-01-01",
      "duration": {
        "hours": 2,
        "minutes": 30,
        "seconds": 0,
        "formatted": "02:30",
        "total_hours": 2.5,
        "total_seconds": 9000,
        "total_minutes": 150
      },
      "estimated_duration": {
        "hours": 4,
        "minutes": 0,
        "seconds": 0,
        "formatted": "04:00",
        "total_hours": 4.0,
        "total_seconds": 14400,
        "total_minutes": 240
      },
      "billed_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "unbilled_duration": {
        "hours": 2,
        "minutes": 30,
        "seconds": 0,
        "formatted": "02:30",
        "total_hours": 2.5,
        "total_seconds": 9000,
        "total_minutes": 150
      },
      "billable_duration": {
        "hours": 2,
        "minutes": 30,
        "seconds": 0,
        "formatted": "02:30",
        "total_hours": 2.5,
        "total_seconds": 9000,
        "total_minutes": 150
      },
      "non_billable_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "cost": {
        "fractional": 25000,
        "formatted": "$250.00",
        "amount": 250.0,
        "currency_code": "usd"
      },
      "estimated_cost": {
        "fractional": 40000,
        "formatted": "$400.00",
        "amount": 400.0,
        "currency_code": "usd"
      },
      "billed_cost": {
        "fractional": 0,
        "formatted": "$0.00",
        "amount": 0.0,
        "currency_code": "usd"
      },
      "unbilled_cost": {
        "fractional": 25000,
        "formatted": "$250.00",
        "amount": 250.0,
        "currency_code": "usd"
      }
    }
  ],
  "teams": [
    {
      "id": 0,
      "name": "No team",
      "color": "866b9c",
      "emoji": "https://emoji.memorycdn.com/tw64/1f465.png",
      "external_id": null,
      "duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "estimated_duration": {
        "hours": 8,
        "minutes": 0,
        "seconds": 0,
        "formatted": "08:00",
        "total_hours": 8.0,
        "total_seconds": 28800,
        "total_minutes": 480
      },
      "billed_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "unbilled_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "billable_duration": {
        "hours": 5,
        "minutes": 0,
        "seconds": 0,
        "formatted": "05:00",
        "total_hours": 5.0,
        "total_seconds": 18000,
        "total_minutes": 300
      },
      "non_billable_duration": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      },
      "estimated_cost": {
        "fractional": 80000,
        "formatted": "$800.00",
        "amount": 800.0,
        "currency_code": "usd"
      },
      "billed_cost": {
        "fractional": 0,
        "formatted": "$0.00",
        "amount": 0.0,
        "currency_code": "usd"
      },
      "unbilled_cost": {
        "fractional": 50000,
        "formatted": "$500.00",
        "amount": 500.0,
        "currency_code": "usd"
      },
      "capacity": {
        "hours": 2096,
        "minutes": 0,
        "seconds": 0.0,
        "formatted": "2096:00",
        "total_hours": 2096.0,
        "total_seconds": 7545600.0,
        "total_minutes": 125760.0
      },
      "overtime": {
        "hours": 0,
        "minutes": 0,
        "seconds": 0,
        "formatted": "00:00",
        "total_hours": 0.0,
        "total_seconds": 0,
        "total_minutes": 0
      },
      "undertime": {
        "hours": 2091,
        "minutes": 0,
        "seconds": 0.0,
        "formatted": "2091:00",
        "total_hours": 2091.0,
        "total_seconds": 7527600.0,
        "total_minutes": 125460.0
      }
    }
  ]
}



ROLES


LIST ROLES

Note: default attribute shows which role to select by default


REQUEST

curl -g "https://api.timelyapp.com/1.1/217/roles" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer A5HaX_PGYDirW_K2QgRixvci1KNC5ikrA02qf1DH6ag" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/roles

GET /1.1/217/roles
Accept: application/json
Content-Type: application/json
Authorization: Bearer A5HaX_PGYDirW_K2QgRixvci1KNC5ikrA02qf1DH6ag


PARAMETERS

Name Description account_id Account id for which roles are required


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 649,
    "name": "admin",
    "display_name": "Admin",
    "description": "Can see, create and edit all hours, projects and teams.",
    "scopes": [
      {
        "name": "hide_hourly_rate",
        "display_name": "Hide billable rate",
        "description": "Hide hourly rates for this user",
        "default": false,
        "options": [
          false
        ]
      },
      {
        "name": "hide_internal_hourly_rate",
        "display_name": "Hide cost rate",
        "description": "Hide internal hourly rates for this user",
        "default": false,
        "options": [
          false
        ]
      }
    ],
    "default": false
  },
  {
    "id": 651,
    "name": "employee",
    "display_name": "Employee",
    "description": "Can only see, log and edit their own hours.",
    "scopes": [
      {
        "name": "hide_hourly_rate",
        "display_name": "Hide billable rate",
        "description": "Hide hourly rates for this user",
        "default": false,
        "options": [
          true,
          false
        ]
      },
      {
        "name": "hide_internal_hourly_rate",
        "display_name": "Hide cost rate",
        "description": "Hide internal hourly rates for this user",
        "default": true,
        "options": [
          true,
          false
        ]
      }
    ],
    "default": false
  },
  {
    "id": 650,
    "name": "manager",
    "display_name": "Manager",
    "description": "Can see, log and edit hours for anyone on the same project as them.",
    "scopes": [
      {
        "name": "hide_hourly_rate",
        "display_name": "Hide billable rate",
        "description": "Hide hourly rates for this user",
        "default": false,
        "options": [
          true,
          false
        ]
      },
      {
        "name": "hide_internal_hourly_rate",
        "display_name": "Hide cost rate",
        "description": "Hide internal hourly rates for this user",
        "default": true,
        "options": [
          true,
          false
        ]
      }
    ],
    "default": true
  }
]



TEAMS

The team object shows all teams available on an account.


CREATE A TEAM


REQUEST

curl "https://api.timelyapp.com/1.1/239/teams" -d '{"name":null,"team":{"name":"Timely","color":"67a3bc","emoji":"http://path.to/emoji.png","external_id":null,"users":[{"user_id":519,"lead":true},{"user_id":521,"lead":false}]}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 6TNkzGIfNzymwAWIrGegm7DVU3cIUXkZbarmAZOv_k8" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/teams

POST /1.1/239/teams
Accept: application/json
Content-Type: application/json
Authorization: Bearer 6TNkzGIfNzymwAWIrGegm7DVU3cIUXkZbarmAZOv_k8


PARAMETERS

{"name":null,"team":{"name":"Timely","color":"67a3bc","emoji":"http://path.to/emoji.png","external_id":null,"users":[{"user_id":519,"lead":true},{"user_id":521,"lead":false}]}}


Name Description name required Specifies the team name emoji Specifies the emoji
url for a team color Specifies the project color for a team external_id The
external_id can be used to reference external resource IDs to Timely resources,
and should be alphanumeric (max. 512 characters) users required Specifies users
and their role within a team. For example: users:[{'user_id': 1, 'lead': true}]


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 1,
  "name": "Timely",
  "color": "67a3bc",
  "emoji": "http://path.to/emoji.png",
  "external_id": null,
  "user_ids": [
    519,
    521
  ],
  "users": [
    {
      "id": 1,
      "user_id": 519,
      "team_id": 1,
      "lead": true
    },
    {
      "id": 2,
      "user_id": 521,
      "team_id": 1,
      "lead": false
    }
  ]
}



DELETE A TEAM


REQUEST

curl "https://api.timelyapp.com/1.1/240/teams/2" -d '' -X DELETE \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer rNfZ0_iugGlFrbvRrgfhjHd2NtK9fHiE4-gviiTiSRQ" \
    -H "Cookie: "


ENDPOINT

DELETE /1.1/:account_id/teams/:id

DELETE /1.1/240/teams/2
Accept: application/json
Content-Type: application/json
Authorization: Bearer rNfZ0_iugGlFrbvRrgfhjHd2NtK9fHiE4-gviiTiSRQ


PARAMETERS

Name Description account_id The account ID containing the team you want to
delete id The ID of the team you want to delete


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{}



LIST ALL TEAMS


REQUEST

curl -g "https://api.timelyapp.com/1.1/242/teams" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer p-AFuklEQa5b5NPM6cphWlZIKNd1jWd5yITxT5RgsMM" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/teams

GET /1.1/242/teams
Accept: application/json
Content-Type: application/json
Authorization: Bearer p-AFuklEQa5b5NPM6cphWlZIKNd1jWd5yITxT5RgsMM


PARAMETERS

Name Description page Page number (Default 1) per_page Records per page (Default
50) order Sorting order on name filter Filter teams - mine, all


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 4,
    "name": "Timely",
    "color": "67a3bc",
    "emoji": "http://path.to/emoji.png",
    "external_id": null,
    "user_ids": [],
    "users": []
  }
]



RETRIEVE A TEAM


REQUEST

curl -g "https://api.timelyapp.com/1.1/241/teams/3" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer TgoLRvWoujSKiF0LpQIl8Dwxt-08RnQCIpxC8OzhFks" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/teams/:id

GET /1.1/241/teams/3
Accept: application/json
Content-Type: application/json
Authorization: Bearer TgoLRvWoujSKiF0LpQIl8Dwxt-08RnQCIpxC8OzhFks


PARAMETERS

Name Description account_id The account ID containing the team you want to
retrieve id The ID of the team you want to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 3,
  "name": "Timely",
  "color": "67a3bc",
  "emoji": "http://path.to/emoji.png",
  "external_id": null,
  "user_ids": [],
  "users": []
}



UPDATE A TEAM


REQUEST

curl "https://api.timelyapp.com/1.1/243/teams/5" -d '{"name":null,"team":{"name":"Backend","color":"67a3bc","emoji":"http://path.to/emoji.png","external_id":null,"users":[{"user_id":528,"lead":true}]}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer WEONwISRucsboo3OM3nFWModC4a2UqZ6QJ1LM9ryzkQ" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/teams/:id

PUT /1.1/243/teams/5
Accept: application/json
Content-Type: application/json
Authorization: Bearer WEONwISRucsboo3OM3nFWModC4a2UqZ6QJ1LM9ryzkQ


PARAMETERS

{"name":null,"team":{"name":"Backend","color":"67a3bc","emoji":"http://path.to/emoji.png","external_id":null,"users":[{"user_id":528,"lead":true}]}}


Name Description name required Specifies the team name emoji Specifies the emoji
url for a team color Specifies the project color for a team external_id The
external_id can be used to reference external resource IDs to Timely resources,
and should be alphanumeric (max. 512 characters) users required Specific users
with their role in the team. Ex: users:[{'user_id': 1, 'lead': true}]


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 5,
  "name": "Backend",
  "color": "67a3bc",
  "emoji": "http://path.to/emoji.png",
  "external_id": null,
  "user_ids": [
    528
  ],
  "users": [
    {
      "id": 3,
      "user_id": 528,
      "team_id": 5,
      "lead": true
    }
  ]
}



USERCAPACITIES


RETRIEVE CAPACITIES

See capacities of multiple users in the account


REQUEST

curl -g "https://api.timelyapp.com/1.1/248/users/capacities" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer tusC3ntl-ZxL-xJKeFoUUnO0TF7aO9gUPSQ0mrGli-k" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users/capacities

GET /1.1/248/users/capacities
Accept: application/json
Content-Type: application/json
Authorization: Bearer tusC3ntl-ZxL-xJKeFoUUnO0TF7aO9gUPSQ0mrGli-k


PARAMETERS

Name Description account_id required Account for which users' capacities are
required user_ids Users whose capacities are required since Fetch capacities
after selected date until Fetch capacities before selected date


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "user_id": 538,
    "capacities": [
      {
        "id": null,
        "weekly_capacity": 40.0,
        "daily_capacity": 8.0,
        "weekdays": "MO,TU,WE,TH,FR",
        "work_days": "MON,TUE,WED,THU,FRI",
        "total_working_days": null,
        "weekly_working_days": 5,
        "current": true,
        "start_date": "1970-01-01",
        "end_date": null
      }
    ]
  }
]



RETRIEVE USER'S CAPACITIES

Using the user id one can see the user's capacities


REQUEST

curl -g "https://api.timelyapp.com/1.1/247/users/536/capacities" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer nDepcAjPFWt-oUnSfNLk_bqRqT7Qx0_iQJ272b7v2C8" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users/:user_id/capacities

GET /1.1/247/users/536/capacities
Accept: application/json
Content-Type: application/json
Authorization: Bearer nDepcAjPFWt-oUnSfNLk_bqRqT7Qx0_iQJ272b7v2C8


PARAMETERS

Name Description account_id required Account for which user's capacities are
required user_id required User whose capacities are required


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": null,
    "weekly_capacity": 40.0,
    "daily_capacity": 8.0,
    "weekdays": "MO,TU,WE,TH,FR",
    "work_days": "MON,TUE,WED,THU,FRI",
    "total_working_days": null,
    "weekly_working_days": 5,
    "current": true,
    "start_date": "1970-01-01",
    "end_date": null
  }
]



USERS

An account can have multiple users associated with it. All users have a specific
access level, and are usually created by an employer on behalf of an employee.


CREATE/INVITE A USER

Note: user_level can have values “normal” or “limited”. A user’s name and email
can only be updated by the user themself.


REQUEST

curl "https://api.timelyapp.com/1.1/250/users" -d '{"user":{"name":"Marija Petrovic","email":"marija@timely.com","user_level":"normal","admin":false,"projects":[{"project_id":231,"hour_rate":10}]},"name":null,"admin":{"id":211,"email":"notifications@timelyapp.com","created_at":"2023-07-13T14:25:34.000+02:00","updated_at":"2023-07-13T14:25:34.000+02:00","name":"Timely","notifier":false}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 896x2tC0hutEL9nUS5FFXaaTAURsktbOZu82djiEDQ0" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/users

POST /1.1/250/users
Accept: application/json
Content-Type: application/json
Authorization: Bearer 896x2tC0hutEL9nUS5FFXaaTAURsktbOZu82djiEDQ0


PARAMETERS

{"user":{"name":"Marija Petrovic","email":"marija@timely.com","user_level":"normal","admin":false,"projects":[{"project_id":231,"hour_rate":10}]},"name":null,"admin":{"id":211,"email":"notifications@timelyapp.com","created_at":"2023-07-13T14:25:34.000+02:00","updated_at":"2023-07-13T14:25:34.000+02:00","name":"Timely","notifier":false}}


Name Description user required User attributes name required Specifies the user
name email required Specifies the user email projects Description: Specifies the
projects that the user will be part of. For example: "projects": [
{"project_id": 11 , "hour_rate": 10 }, {"project_id": 12 , "hour_rate": 20 }]
role_id required Specifies the user's role in the account user_level
(Deprecated) Specifies the user level; either “normal” or “limited”. The default
is "normal". For example: "user_level": "normal" admin (Deprecated) Specifies
the user is an admin. In this case user_level should be “normal”. For example:
"admin": "true" external_id The external_id can be used to reference external
resource IDs to Timely resources, and should be alphanumeric (max. 512
characters) weekly_capacity Specifies the user's weekly hour capacity. The
default is account's weekly capacity. To avoid rounding issues, values are
allowed upto 1 decimal place and divisible by 5. add_to_all_projects Specifies
whether the user should be added to all projects in the account. For example:
"add_to_all_projects":true internal_hour_rate Specifies the internal hourly rate
for users in the account hide_internal_hourly_rate The hide_internal_hourly_rate
hides the internal hourly rate for users in the account. The default is true.
For example: "hide_internal_hourly_rate": true


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 544,
  "email": "marija@timely.com",
  "name": "Marija Petrovic",
  "active": false,
  "day_view_onboarded": false,
  "memory_onboarded": false,
  "created_at": 1689251135,
  "updated_at": 1689251135,
  "last_received_memories_date": null,
  "sign_in_count": null,
  "external_id": null,
  "time_zone": "Etc/UTC",
  "memory_retention_days": null,
  "avatar": {
    "large_retina": "https://www.gravatar.com/avatar/0a8763ca707efea0026580f1712c3fe0?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "large": "https://www.gravatar.com/avatar/0a8763ca707efea0026580f1712c3fe0?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "medium_retina": "https://www.gravatar.com/avatar/0a8763ca707efea0026580f1712c3fe0?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "medium": "https://www.gravatar.com/avatar/0a8763ca707efea0026580f1712c3fe0?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "small_retina": "https://www.gravatar.com/avatar/0a8763ca707efea0026580f1712c3fe0?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25",
    "small": "https://www.gravatar.com/avatar/0a8763ca707efea0026580f1712c3fe0?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25"
  },
  "type": "User",
  "work_days": "MON,TUE,WED,THU,FRI",
  "weekdays": "MO,TU,WE,TH,FR",
  "weekly_capacity": 40.0,
  "user_level": "manager",
  "admin": false,
  "hide_hourly_rate": false,
  "hide_internal_hourly_rate": false,
  "deleted": false,
  "default_hour_rate": 0.0,
  "internal_hour_rate": 0.0,
  "role_id": 749,
  "role": {
    "id": 749,
    "name": "manager"
  }
}



DELETE A USER


REQUEST

curl "https://api.timelyapp.com/1.1/251/users/545" -d '' -X DELETE \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer kzXPW1blsugSimjvFodsrP-0miDcJk9WTkWJt8svqDg" \
    -H "Cookie: "


ENDPOINT

DELETE /1.1/:account_id/users/:id

DELETE /1.1/251/users/545
Accept: application/json
Content-Type: application/json
Authorization: Bearer kzXPW1blsugSimjvFodsrP-0miDcJk9WTkWJt8svqDg


PARAMETERS

Name Description account_id The account ID containing the user you want to
delete id The ID of the user you want to delete


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{}



LIST ALL USERS

Note: The user list will return the 10 most recently updated users.


REQUEST

curl -g "https://api.timelyapp.com/1.1/254/users" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer KMHirIJDupzhlJeMxkOx4u8gTu4loh8_i2YKUijyaos" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users

GET /1.1/254/users
Accept: application/json
Content-Type: application/json
Authorization: Bearer KMHirIJDupzhlJeMxkOx4u8gTu4loh8_i2YKUijyaos


PARAMETERS

Name Description account_id The account ID containing the users you want to
retrieve limit Retrieve a limited number of users offset Retrieve users from
offset order Sorting order on updated_at filter Filter users - Ex:
filter=deleted


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[
  {
    "id": 551,
    "email": "marijamarystuc@timelyapp.com",
    "name": "Marija Petrovic",
    "active": false,
    "day_view_onboarded": true,
    "memory_onboarded": true,
    "created_at": 1689251135,
    "updated_at": 1689251135,
    "last_received_memories_date": null,
    "sign_in_count": null,
    "external_id": null,
    "time_zone": "Europe/Paris",
    "memory_retention_days": null,
    "avatar": {
      "large_retina": "https://www.gravatar.com/avatar/e5c48f971b861ec9ffa4c9f5a35ba45c?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "large": "https://www.gravatar.com/avatar/e5c48f971b861ec9ffa4c9f5a35ba45c?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
      "medium_retina": "https://www.gravatar.com/avatar/e5c48f971b861ec9ffa4c9f5a35ba45c?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "medium": "https://www.gravatar.com/avatar/e5c48f971b861ec9ffa4c9f5a35ba45c?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
      "small_retina": "https://www.gravatar.com/avatar/e5c48f971b861ec9ffa4c9f5a35ba45c?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25",
      "small": "https://www.gravatar.com/avatar/e5c48f971b861ec9ffa4c9f5a35ba45c?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25"
    },
    "type": "User",
    "work_days": "MON,TUE,WED,THU,FRI",
    "weekdays": "MO,TU,WE,TH,FR",
    "weekly_capacity": 40.0,
    "user_level": "admin",
    "admin": true,
    "hide_hourly_rate": false,
    "hide_internal_hourly_rate": true,
    "deleted": false,
    "default_hour_rate": 0.0,
    "internal_hour_rate": 0.0,
    "role_id": 760,
    "role": {
      "id": 760,
      "name": "admin"
    }
  }
]



RETRIEVE A USER


REQUEST

curl -g "https://api.timelyapp.com/1.1/252/users/547" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer L2DCIDyoDf_XDiYl2oZGzMVedgr9NZ5ckMgfltrDPVU" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users/:id

GET /1.1/252/users/547
Accept: application/json
Content-Type: application/json
Authorization: Bearer L2DCIDyoDf_XDiYl2oZGzMVedgr9NZ5ckMgfltrDPVU


PARAMETERS

Name Description account_id The account ID containing the users you want to
retrieve id The ID of the user you want to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 547,
  "email": "marijaasqxohwh@timelyapp.com",
  "name": "Marija Petrovic",
  "active": false,
  "day_view_onboarded": true,
  "memory_onboarded": true,
  "created_at": 1689251135,
  "updated_at": 1689251135,
  "last_received_memories_date": null,
  "sign_in_count": null,
  "external_id": null,
  "time_zone": "Europe/Paris",
  "memory_retention_days": null,
  "avatar": {
    "large_retina": "https://www.gravatar.com/avatar/5215a9b7ce684eda51b8eba2d71b0cfa?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "large": "https://www.gravatar.com/avatar/5215a9b7ce684eda51b8eba2d71b0cfa?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "medium_retina": "https://www.gravatar.com/avatar/5215a9b7ce684eda51b8eba2d71b0cfa?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "medium": "https://www.gravatar.com/avatar/5215a9b7ce684eda51b8eba2d71b0cfa?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "small_retina": "https://www.gravatar.com/avatar/5215a9b7ce684eda51b8eba2d71b0cfa?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25",
    "small": "https://www.gravatar.com/avatar/5215a9b7ce684eda51b8eba2d71b0cfa?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25"
  },
  "type": "User",
  "work_days": "MON,TUE,WED,THU,FRI",
  "weekdays": "MO,TU,WE,TH,FR",
  "weekly_capacity": 40.0,
  "active_projects_count": 1,
  "user_level": "admin",
  "admin": true,
  "hide_hourly_rate": false,
  "hide_internal_hourly_rate": true,
  "deleted": false,
  "default_hour_rate": 0.0,
  "internal_hour_rate": 0.0,
  "role_id": 754,
  "role": {
    "id": 754,
    "name": "admin"
  }
}



RETRIEVE CURRENT USER


REQUEST

curl -g "https://api.timelyapp.com/1.1/253/users/current" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer XyO4QifIiAtm3BZlIVuFexbnUCPiFDzlmb8CSx4czGI" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/users/current

GET /1.1/253/users/current
Accept: application/json
Content-Type: application/json
Authorization: Bearer XyO4QifIiAtm3BZlIVuFexbnUCPiFDzlmb8CSx4czGI


PARAMETERS

Name Description account_id The account ID containing the current user


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 549,
  "email": "marijadvhpbnil@timelyapp.com",
  "name": "Marija Petrovic",
  "active": false,
  "day_view_onboarded": true,
  "memory_onboarded": true,
  "created_at": 1689251135,
  "updated_at": 1689251135,
  "last_received_memories_date": null,
  "sign_in_count": null,
  "external_id": null,
  "time_zone": "Europe/Paris",
  "memory_retention_days": null,
  "avatar": {
    "large_retina": "https://www.gravatar.com/avatar/123063c63b34930990a1773b05fc80a9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "large": "https://www.gravatar.com/avatar/123063c63b34930990a1773b05fc80a9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "medium_retina": "https://www.gravatar.com/avatar/123063c63b34930990a1773b05fc80a9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "medium": "https://www.gravatar.com/avatar/123063c63b34930990a1773b05fc80a9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "small_retina": "https://www.gravatar.com/avatar/123063c63b34930990a1773b05fc80a9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25",
    "small": "https://www.gravatar.com/avatar/123063c63b34930990a1773b05fc80a9?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25"
  },
  "type": "User",
  "work_days": "MON,TUE,WED,THU,FRI",
  "weekdays": "MO,TU,WE,TH,FR",
  "weekly_capacity": 40.0,
  "user_level": "admin",
  "admin": true,
  "hide_hourly_rate": false,
  "hide_internal_hourly_rate": true,
  "deleted": false,
  "default_hour_rate": 0.0,
  "internal_hour_rate": 0.0,
  "role_id": 757,
  "role": {
    "id": 757,
    "name": "admin"
  }
}



UPDATE A USER

Note:

Please use the parameters mentioned in “Create/Invite a user”.

Only admins can edit “user_level” and “projects” fields for other users.


REQUEST

curl "https://api.timelyapp.com/1.1/255/users/553" -d '{"user":{"admin":{"id":216,"email":"notifications@timelyapp.com","created_at":"2023-07-13T14:25:36.000+02:00","updated_at":"2023-07-13T14:25:36.000+02:00","name":"Timely","notifier":false},"role_id":763,"projects":[{"project_id":236,"hour_rate":10}]}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 8kjEtzw9Bk1W7QS81uCw5cXnVMFiuP-6TOhrHZzI2Vk" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/users/:id

PUT /1.1/255/users/553
Accept: application/json
Content-Type: application/json
Authorization: Bearer 8kjEtzw9Bk1W7QS81uCw5cXnVMFiuP-6TOhrHZzI2Vk


PARAMETERS

{"user":{"admin":{"id":216,"email":"notifications@timelyapp.com","created_at":"2023-07-13T14:25:36.000+02:00","updated_at":"2023-07-13T14:25:36.000+02:00","name":"Timely","notifier":false},"role_id":763,"projects":[{"project_id":236,"hour_rate":10}]}}


Name Description id required The numerical ID of the user user required Label
attributes user[projects] Specifies the projects that the user will be part of.
For example: "projects": [ {"project_id": 11 , "hour_rate": 10 }, {"project_id":
12 , "hour_rate": 20 }] user[role_id] required Specifies the user's role in the
account user[user_level] (Deprecated) Specifies the user level; either “normal”
or “limited”. The default is "normal". For example: "user_level": "normal"
user[admin] (Deprecated) Specifies the user is an admin. In this case user_level
should be “normal”. For example: "admin": "true" user[weekly_capacity] Specifies
the user's weekly hour capacity. The default is the account's weekly capacity.
To avoid rounding issues, values are allowed upto 1 decimal place and divisible
by 5. user[add_to_all_projects] Specifies whether the user should be added to
all projects in the account. For example: "add_to_all_projects":true
user[internal_hour_rate] Specifies the internal hourly rate for users in the
account user[hide_internal_hourly_rate] The hide_internal_hourly_rate hides the
internal hourly rate for users in the account. The default is true. For example:
"hide_internal_hourly_rate": true update_existing_hours Specifies if the updated
hour rate should be applied to existing hours. For example:
"update_existing_hours":false. Default: true update_unbilled_only Specifies if
the updated hour rate should only be applied to unbilled hours. This is ignored
if "update_existing_hours" is false. For example: "update_unbilled_only":true.
Default: false update_existing_hours_internal_rate Specifies if the updated
internal hour rate should be applied to existing hours. For example:
"update_existing_hours_internal_rate":false. Default: true
update_unbilled_hours_internal_rate Specifies if the updated internal hour rate
should only be applied to unbilled hours. This is ignored if
"update_existing_hours_internal_rate" is false. For example:
"update_unbilled_hours_internal_rate":true. Default: false


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 553,
  "email": "marijanqomqrag@timelyapp.com",
  "name": "Marija Petrovic",
  "active": false,
  "day_view_onboarded": true,
  "memory_onboarded": true,
  "created_at": 1689251135,
  "updated_at": 1689251135,
  "last_received_memories_date": null,
  "sign_in_count": null,
  "external_id": null,
  "time_zone": "Europe/Paris",
  "memory_retention_days": null,
  "avatar": {
    "large_retina": "https://www.gravatar.com/avatar/aff9d3f5d99cd04b826c839c32c5ac80?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "large": "https://www.gravatar.com/avatar/aff9d3f5d99cd04b826c839c32c5ac80?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_large_retina-c403e04ad44c7d8b8c7904dc7e7c1893101f3672565370034edbe3dee9985509.jpg&s=200",
    "medium_retina": "https://www.gravatar.com/avatar/aff9d3f5d99cd04b826c839c32c5ac80?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "medium": "https://www.gravatar.com/avatar/aff9d3f5d99cd04b826c839c32c5ac80?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_medium_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=50",
    "small_retina": "https://www.gravatar.com/avatar/aff9d3f5d99cd04b826c839c32c5ac80?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25",
    "small": "https://www.gravatar.com/avatar/aff9d3f5d99cd04b826c839c32c5ac80?d=http%3A%2F%2Fapp.timelyapp.local%2Fassets%2Fthumbs%2Fuser_small_retina-459a8b7582a7417f4b47a0064f692ffcd161fb11eda9dcc359f1b5e63fe51235.jpg&s=25"
  },
  "type": "User",
  "work_days": "MON,TUE,WED,THU,FRI",
  "weekdays": "MO,TU,WE,TH,FR",
  "weekly_capacity": 40.0,
  "user_level": "admin",
  "admin": true,
  "hide_hourly_rate": false,
  "hide_internal_hourly_rate": false,
  "deleted": false,
  "default_hour_rate": 0.0,
  "internal_hour_rate": 0.0,
  "role_id": 763,
  "role": {
    "id": 763,
    "name": "admin"
  }
}



WEBHOOKS

Webhooks allow external services to be notified when certain events happen. When
the specified events happen, we’ll send a POST request to each of the URLs you
provide.


CREATE A WEBHOOK


REQUEST

curl "https://api.timelyapp.com/1.1/260/webhooks" -d '{"webhook":{"url":"https://kilback-davis.co/marci_kozey","subscriptions":["projects:created"],"active":true,"secret_token":"deadbeef"}}' -X POST \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer b_y6whWB_hwvIRPcFQZVxmKOIPpAtAhW4mPmy7QXJWg" \
    -H "Cookie: "


ENDPOINT

POST /1.1/:account_id/webhooks

POST /1.1/260/webhooks
Accept: application/json
Content-Type: application/json
Authorization: Bearer b_y6whWB_hwvIRPcFQZVxmKOIPpAtAhW4mPmy7QXJWg


PARAMETERS

{"webhook":{"url":"https://kilback-davis.co/marci_kozey","subscriptions":["projects:created"],"active":true,"secret_token":"deadbeef"}}


Name Description url required The URL of the endpoint that will receive the
webhook POST requests. (HTTPS required) secret_token Setting a webhook secret
allows you to ensure that requests sent to the above webhook endpoint are from
us. You'll receive a signature in the X-Signature header value. Calculate a
SHA256 hash for the received payload using your provided SECRET_TOKEN on your
end, and ensure that the result matches the X-Signature value. subscriptions
Specifies the array of events should it listen to. The format is
['entity:action', ...]. Eg. ['project:created']. Use the wildcard (*) character
for all events or all actions of an entity.
Support subscriptions:
 * forecasts:created
 * forecasts:updated
 * forecasts:deleted
 * hours:created
 * hours:updated
 * hours:deleted
 * labels:created
 * labels:updated
 * labels:deleted
 * projects:created
 * projects:updated
 * projects:deleted

active By default, webhook deliveries are active. You can choose to disable the
delivery of webhook payloads by disable this.


RESPONSE

Content-Type: application/json; charset=utf-8
201 Created


{
  "id": 1,
  "account_id": 260,
  "url": "https://kilback-davis.co/marci_kozey",
  "subscriptions": [
    "projects:created"
  ],
  "secret_token": "deadbeef",
  "active": true,
  "created_at": "2023-07-13T14:25:36+02:00",
  "updated_at": "2023-07-13T14:25:36+02:00"
}



DELETE A WEBHOOK


REQUEST

curl "https://api.timelyapp.com/1.1/261/webhooks/2" -d '' -X DELETE \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer mmZOq8v9BtYxLru00kyJdJBbI4CDFEJfax-B5zYFNcc" \
    -H "Cookie: "


ENDPOINT

DELETE /1.1/:account_id/webhooks/:id

DELETE /1.1/261/webhooks/2
Accept: application/json
Content-Type: application/json
Authorization: Bearer mmZOq8v9BtYxLru00kyJdJBbI4CDFEJfax-B5zYFNcc


PARAMETERS

Name Description account_id The account ID containing the webhook you want to
delete id The ID of the webhook you want to delete


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{}



LIST ALL WEBHOOKS


REQUEST

curl -g "https://api.timelyapp.com/1.1/263/webhooks" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer sXpfZchtp6BJt3ztBj8IgYtdI_zX2QmL4aMKmjc3TSg" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/webhooks

GET /1.1/263/webhooks
Accept: application/json
Content-Type: application/json
Authorization: Bearer sXpfZchtp6BJt3ztBj8IgYtdI_zX2QmL4aMKmjc3TSg


PARAMETERS

Name Description account_id The account ID containing the webhooks you want to
retrieve offset Retrieve webhooks from offset limit Retrieve number of webhooks


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


[]



RETRIEVE A WEBHOOK


REQUEST

curl -g "https://api.timelyapp.com/1.1/262/webhooks/3" -X GET \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ijENsi2LyFfvIAy3SJzrnu5JcgXxzxzMZlvr3dUinqw" \
    -H "Cookie: "


ENDPOINT

GET /1.1/:account_id/webhooks/:id

GET /1.1/262/webhooks/3
Accept: application/json
Content-Type: application/json
Authorization: Bearer ijENsi2LyFfvIAy3SJzrnu5JcgXxzxzMZlvr3dUinqw


PARAMETERS

Name Description account_id The account ID containing the webhook you want to
retrieve id The ID of the webhook you want to retrieve


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 3,
  "account_id": 262,
  "url": "https://damore.info/marjorie_waelchi",
  "subscriptions": [
    "projects:created"
  ],
  "secret_token": null,
  "active": true,
  "created_at": "2023-07-13T14:25:37+02:00",
  "updated_at": "2023-07-13T14:25:37+02:00"
}



UPDATE A WEBHOOK


REQUEST

curl "https://api.timelyapp.com/1.1/264/webhooks/4" -d '{"webhook":{"subscriptions":["projects:created","labels:created"],"secret_token":"deadbeef"}}' -X PUT \
    -H "Version: HTTP/1.0" \
    -H "Host: api.timelyapp.com" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer MogmD4QmqxKXlUUVrOK9oq_aj7YNMQ4dUoFdw_vNy7g" \
    -H "Cookie: "


ENDPOINT

PUT /1.1/:account_id/webhooks/:id

PUT /1.1/264/webhooks/4
Accept: application/json
Content-Type: application/json
Authorization: Bearer MogmD4QmqxKXlUUVrOK9oq_aj7YNMQ4dUoFdw_vNy7g


PARAMETERS

{"webhook":{"subscriptions":["projects:created","labels:created"],"secret_token":"deadbeef"}}


Name Description id required Webhook ID url required The URL of the endpoint
that will receive the webhook POST requests. (HTTPS required) secret_token
Setting a webhook secret allows you to ensure that requests sent to the above
webhook endpoint are from us. You'll receive a signature in the X-Signature
header value. Calculate a SHA256 hash for the received payload using your
provided SECRET_TOKEN on your end, and ensure that the result matches the
X-Signature value. subscriptions Specifies the array of events should it listen
to. The format is ['entity:action', ...]. Eg. ['projects:created']. Use the
wildcard (*) character for all events or all actions of an entity. active
Example values: "true" or "false"


RESPONSE

Content-Type: application/json; charset=utf-8
200 OK


{
  "id": 4,
  "account_id": 264,
  "url": "https://vandervort.name/antone_ledner",
  "subscriptions": [
    "projects:created",
    "labels:created"
  ],
  "secret_token": "deadbeef",
  "active": true,
  "created_at": "2023-07-13T14:25:37+02:00",
  "updated_at": "2023-07-13T14:25:37+02:00"
}



ERRORS

> Example responses:

422 Unprocessable Entity


{
  "errors":{
    "name":[
      "can't be blank"
    ],
    "project_users":[
      "is invalid"
    ]
  }
}


422 Unprocessable Entity


403 Forbidden


{
  "errors":{
    "message":"error message"
  }
}


404 Not Found


{
  "errors":{
    "message":"Not Found"
  }
}


401 Unauthorized


{
  "errors":{
    "message":"Unauthorized"
  }
}


Timely uses conventional HTTP response codes to indicate the success or failure
of an API request. Codes in the 2xx range indicate success. Codes in the 4xx
range indicate an error that failed due to the information provided. Codes in
the 5xx range indicate an error with Timely's servers.

Unauthorized access o projects and accounts, or trying to create or delete
objects that are not under our control, will result in errors.

The Timely API uses the following error codes:

Error Code Meaning 400 - Bad Request Your request is invalid 401 - Unauthorized
Wrong authentication token was used 403 - Forbidden The entity requested is
hidden from unauthorized access 404 - Not Found The specified entity could not
be found 422 - Unprocessable Entity The server understands the content type, but
was unable to process the request 500 - Internal Server Error We’re experiencing
a problem with our server. Try again later.

cURL