İçeriğe atla
Geliştiriciler

Worktivity API'si üzerinde geliştirin

Zaman takibi, aktivite verisi, projeler ve hak ediş için tek bir REST API.

Worktivity'deki her ekran, sizin de eriştiğiniz aynı herkese açık API üzerinde çalışır. Tek bir anahtarla kimlik doğrulayın, JSON gönderin ve tutarlı bir yanıt zarfı okuyun. Aşağıdaki endpoint'ler canlı servisten üretilir; cURL, JavaScript, Python ve PHP için istek ve yanıt örnekleri içerir.

Tüm paketlere dahildir. Ayrı bir API aboneliği yok.

Bir bakışta

İlk istekten önce bilmeniz gereken her şey.

Base URL
open-api.useworktivity.com
Kimlik doğrulama
x_api_key
Query parametresi
Hız limitleri
5/sn · 100/dk · 1000/saat
Dokümante edilmiş endpoint
34
JSON girer: JSON çıkar

Kimlik doğrulama

Her istek, organizasyonunuzun API anahtarını query string parametresi olarak taşır. OAuth akışı ve bearer header yoktur, isteği organizasyonunuzla sınırlayan tek şey anahtardır.

API anahtarınızı alma

  1. Worktivity paneline giriş yapın.
  2. Organization → Settings → API Access adımını açın.
  3. Generate API Key düğmesine tıklayın.
  4. Anahtarı kopyalayın ve sunucu tarafındaki sır yöneticinizde saklayın.

Anahtarı sunucu tarafında tutun

Anahtar, organizasyonunuzun verilerine tam okuma ve yazma erişimi verir. Tarayıcı JavaScript'ine, bir mobil pakete veya herkese açık bir depoya asla koymayın. Sızarsa aynı ekrandan yenileyin.

İlk istek

Bu istek organizasyonunuzdaki çalışanları listeler. Diğer tüm endpoint'ler aynı yapıyı izler.

cURL
curl -X POST "https://open-api.useworktivity.com/Employee/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "SearchTerm": "",
  "Page": 1,
  "PageSize": 15,
  "IncludeUsers": true
}'

Yanıt biçimi

Her endpoint aynı zarfı döndürür. Data'yı okumadan önce HasError'a bakın, ele alınan doğrulama hatalarında da HTTP durumu 200'dür.

Başarılı yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}

Doğrulama hatası

JSON
{
  "HasError": true,
  "Message": "Validation failed",
  "ValidationErrors": [
    {
      "Key": "Email",
      "Value": "Email is required"
    },
    {
      "Key": "FirstName",
      "Value": "First name is required"
    }
  ],
  "Data": null
}

ValidationErrors, alan ve mesaj çiftlerinden oluşan düz bir listedir. Başarı durumunda boştur, hiçbir zaman null olmaz.

HTTP durum kodları

  • 200İstek işlendi. Başarıyı doğrulama hatasından ayırmak için HasError'ı okuyun.
  • 400Hatalı biçimlendirilmiş istek, genellikle geçersiz JSON ya da yanlış parametre türü.
  • 401Eksik, süresi dolmuş veya iptal edilmiş API anahtarı.
  • 403Anahtar geçerli, ancak organizasyonun o kaynağa erişimi yok.
  • 404Endpoint yolu mevcut değil.
  • 429Hız limiti aşıldı. Bildirilen süre kadar bekleyip yeniden deneyin.
  • 500Beklenmeyen sunucu hatası. Üstel bekleme ile yeniden denemek güvenlidir.

Hız limitleri

Limitler API anahtarı başına ve üç pencerede aynı anda uygulanır. Herhangi birini aşmak, üçünün de kalan bütçesiyle birlikte 429 döndürür.

Her yanıttaki header'lar

İstekleri kendiniz saymak yerine bunları okuyun, yeniden denemeleri ve paralel çalışan işleri de hesaba katarlar.

HTTP
X-RateLimit-Limit-Second: 5
X-RateLimit-Limit-Minute: 100
X-RateLimit-Limit-Hour: 1000

X-RateLimit-Remaining-Second: 4
X-RateLimit-Remaining-Minute: 87
X-RateLimit-Remaining-Hour: 943

X-RateLimit-Reset-Second: 1767182101
X-RateLimit-Reset-Minute: 1767182160
X-RateLimit-Reset-Hour: 1767184800

Limite takıldığınızda

Hız limiti aşıldı. Bildirilen süre kadar bekleyip yeniden deneyin.

JSON
{
  "HasError": true,
  "Message": "Rate limit exceeded. Maximum 5 requests per second, 100 per minute, 1000 per hour.",
  "Data": {
    "RateLimits": {
      "PerSecond": {
        "Limit": 5,
        "Remaining": 0,
        "ResetAt": "2026-01-31T12:34:57+00:00"
      },
      "PerMinute": {
        "Limit": 100,
        "Remaining": 23,
        "ResetAt": "2026-01-31T12:35:00+00:00"
      },
      "PerHour": {
        "Limit": 1000,
        "Remaining": 456,
        "ResetAt": "2026-01-31T13:00:00+00:00"
      }
    },
    "RetryAfter": 1
  }
}

Limitin altında kalmak

  • 429 aldığınızda RetryAfter değerine göre yeniden deneyin, sonrasında üstel bekleme uygulayın.
  • Kayıtları teker teker çekmek yerine PageSize ile listeler arasında sayfalayın.
  • Definition/ListEnums ve Definition/ListTimezones sonuçlarını önbelleğe alın, nadiren değişirler.
  • Tüm tarih aralıklarını yeniden okumak yerine CreatedAfter ile programlı sorgulama yapın.

Endpoint referansı

Kaynağa göre gruplanmıştır. Yollar base URL'e görelidir ve her istekte API anahtarının query string'de bulunması gerekir.

Tanımlar

Başka bir şey göndermeden önce enum değerlerine ve saat dilimlerine bakın. İki endpoint de önbelleğe alınabilir.

GET/Definition/ListEnums

Enum'ları listele

API'nin kullandığı her enum'ı sayısal değeri ve görünen adıyla döndürür, tarih filtreleri, roller, görev durumları, fatura durumları ve daha fazlası. Sonucu önbelleğe alın; yalnızca yeni bir sürümle değişir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.

İstek

cURL
curl -X GET "https://open-api.useworktivity.com/Definition/ListEnums?x_api_key=YOUR_API_KEY"

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "DateFilterTypes": [
      {
        "Value": 1,
        "DisplayName": "Today"
      },
      {
        "Value": 10,
        "DisplayName": "Custom date"
      }
    ],
    "EmployeeRoles": [
      {
        "Value": 2,
        "DisplayName": "Owner"
      },
      {
        "Value": 5,
        "DisplayName": "Employee"
      }
    ],
    "ProjectTaskStatuses": [
      {
        "Value": 0,
        "DisplayName": "Todo"
      },
      {
        "Value": 6,
        "DisplayName": "In progress"
      }
    ]
  }
}
GET/Definition/ListTimezones

Saat dilimlerini listele

Desteklenen saat dilimlerini UTC farkları ve yaz saati bilgisiyle döndürür. Tüm API zaman damgaları UTC'dir; yerel saatleri göstermek için bunu kullanın.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.

İstek

cURL
curl -X GET "https://open-api.useworktivity.com/Definition/ListTimezones?x_api_key=YOUR_API_KEY"

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "Id": "Europe/Istanbul",
        "DisplayName": "Istanbul (GMT+03:00)",
        "BaseUtcOffset": "+03:00:00",
        "SupportsDaylightSavingTime": false
      }
    ]
  }
}

Çalışanlar

Organizasyonunuzdaki kişileri oluşturun, güncelleyin, engelleyin ve silin; bekleyen davetleri yeniden gönderin.

POST/Employee/List

Çalışanları listele

Sayfalanmış bir çalışan listesi döndürür. Ad ve e-posta adreslerini almak için IncludeUsers değerini kullanın; bu alanlar çalışan kaydında değil, bağlı kullanıcı kaydında bulunur.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdsisteğe bağlıstring[]BodyBelirli bir çalışan kimliği kümesiyle sınırlar.
IsBlockedisteğe bağlıbooleanBodyEngellenme durumuna göre filtreler. İkisini de dahil etmek için göndermeyin.
Registeredisteğe bağlıbooleanBodyYalnızca davetini kabul etmiş çalışanlar.
IncludeUsersisteğe bağlıbooleanBodyAd ve e-posta bilgisini içeren bağlı kullanıcı kaydını ekler.
IncludeTeamsisteğe bağlıbooleanBodyHer çalışana ekip kaydının tamamını ekler.
IncludeTodayClockInsisteğe bağlıbooleanBodyHer çalışan için bugünkü mesai girişi aktivite kaydını ekler.
CreatedAfteristeğe bağlıdatetimeBodyYalnızca bu UTC zaman damgasından sonra oluşturulan kayıtlar. Artımlı senkronizasyon için kullanın.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Employee/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "SearchTerm": "john",
  "Page": 1,
  "PageSize": 15,
  "TeamId": "",
  "IsBlocked": false,
  "IncludeUsers": true,
  "IncludeTeams": true
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1b2c",
        "UserId": "65f1c0a3b8d4e21f9c0a1b30",
        "TeamId": "65f1c0a3b8d4e21f9c0a1b40",
        "OrganizationId": "65f1c0a3b8d4e21f9c0a1b50",
        "Role": 5,
        "IsActive": true,
        "Blocked": false,
        "EmployeeCode": "EMP-014",
        "PayRate": 25,
        "BillRate": 45,
        "EnableScreenshots": true,
        "ScreenCaptureIntervalMins": 5,
        "CreateDate": "2026-01-15T10:30:00Z",
        "User": {
          "ID": "65f1c0a3b8d4e21f9c0a1b30",
          "FirstName": "John",
          "LastName": "Doe",
          "Email": "john.doe@example.com"
        }
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/Employee/Create

Çalışan oluştur

Bir çalışan oluşturur ve kendisine davet e-postası gönderir. Kullanıcı hakkı, davet kabul edildiğinde değil, kayıt oluşturulduğunda sayılmaya başlar.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
FirstNamezorunlustringBodyAd.
LastNamezorunlustringBodySoyadı.
EmailzorunlustringBodyİş e-postası. Davet buraya gönderilir ve benzersiz olmalıdır.
TeamIdzorunlustringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
RolezorunluenumTypeOfAuthorityBodyOrganizasyon içindeki erişim düzeyi.
EmployeeCodeisteğe bağlıstringBodyBu kişi için kendi İK veya muhasebe referansınız.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Employee/Create?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "FirstName": "Jane",
  "LastName": "Smith",
  "Email": "jane.smith@example.com",
  "TeamId": "65f1c0a3b8d4e21f9c0a1b40",
  "Role": 5,
  "EmployeeCode": "EMP-015"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}
POST/Employee/Update

Çalışanı güncelle

Kimlik, ekip ve rol bilgilerini günceller. Ücret ve faturalama oranları bu isteğin parçası değildir; maliyet ayarları endpoint'i üzerinden yönetilir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
EmployeeIdzorunlustringBodyİşlem yapılacak çalışanın kimliği.
FirstNamezorunlustringBodyAd.
LastNamezorunlustringBodySoyadı.
EmailzorunlustringBodyİş e-postası. Davet buraya gönderilir ve benzersiz olmalıdır.
TeamIdzorunlustringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
RolezorunluenumTypeOfAuthorityBodyOrganizasyon içindeki erişim düzeyi.
EmployeeCodeisteğe bağlıstringBodyBu kişi için kendi İK veya muhasebe referansınız.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Employee/Update?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
  "FirstName": "John",
  "LastName": "Doe",
  "Email": "john.doe@example.com",
  "TeamId": "65f1c0a3b8d4e21f9c0a1b40",
  "Role": 4,
  "EmployeeCode": "EMP-014"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}
POST/Employee/Block

Çalışanı engelle

Bir çalışanı engeller. Masaüstü uygulaması kayıt almayı durdurur ve çalışan panel erişimini kaybeder, ancak geçmiş veriler ve raporlar korunur.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
IdzorunlustringBodyEngellenecek çalışanın kimliği.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Employee/Block?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "65f1c0a3b8d4e21f9c0a1b2c"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}
POST/Employee/ResendInvitation

Daveti yeniden gönder

Henüz kaydolmamış bir çalışana davet e-postasını yeniden gönderir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
EmployeeIdzorunlustringBodyİşlem yapılacak çalışanın kimliği.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Employee/ResendInvitation?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}
POST/Employee/Delete

Çalışanı sil

Bir çalışanı kalıcı olarak siler. Panelde olduğu gibi, onay adımı için hesap sahibinin parolası gerekir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
EmployeeIdzorunlustringBodyİşlem yapılacak çalışanın kimliği.
PasswordzorunlustringBodyYıkıcı bir işlemi onaylamak için gereken hesap sahibi parolası.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Employee/Delete?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
  "Password": "account-owner-password"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}

Ekipler

Ekipler çalışanları gruplar ve neredeyse her raporda filtre boyutu olarak kullanılır.

POST/Team/List

Ekipleri listele

Ekipleri renkleriyle ve isteğe bağlı olarak her ekipteki çalışan sayısıyla döndürür.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
TeamIdsisteğe bağlıstring[]BodyProjeye atanan ekipler.
IncludeEmployeeCountisteğe bağlıbooleanBodyHer ekipteki çalışan sayısını ekler.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Team/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "SearchTerm": "",
  "Page": 1,
  "PageSize": 15,
  "IncludeEmployeeCount": true
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1b40",
        "Title": "Engineering",
        "Color": "#8b4dff",
        "OrganizationId": "65f1c0a3b8d4e21f9c0a1b50",
        "EmployeeCount": 12,
        "CreateDate": "2026-01-02T09:00:00Z"
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/Team/AddOrUpdate

Ekip oluştur veya güncelle

Ekip oluşturmak için boş bir Id gönderin; adını ya da rengini değiştirmek için mevcut bir Id gönderin.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
Idisteğe bağlıstringBodyEkip oluşturmak için boş bırakın, güncellemek için mevcut bir kimlik gönderin.
TitlezorunlustringBodyEkip adı.
Coloristeğe bağlıstringBodyBaştaki diyez dahil yedi karakterlik hex renk değeri, örneğin #8b4dff.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Team/AddOrUpdate?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "",
  "Title": "Design",
  "Color": "#54a8c7"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Item": {
      "ID": "65f1c0a3b8d4e21f9c0a1b41",
      "Title": "Design",
      "Color": "#54a8c7"
    }
  }
}
POST/Team/Delete

Ekibi sil

Bir ekibi siler. Çalışanlar silinmez, önce başka ekiplere atayın, yoksa ekipsiz kalırlar.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
IdzorunlustringBodySilinecek ekibin kimliği.
PasswordzorunlustringBodyYıkıcı bir işlemi onaylamak için gereken hesap sahibi parolası.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Team/Delete?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "65f1c0a3b8d4e21f9c0a1b41",
  "Password": "account-owner-password"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}

Zaman takibi

Puantaj, manuel zaman girişleri ve masaüstü uygulamasının kaydettiği ham aktivite akışı.

POST/Timesheet/List

Puantajı getir

Seçilen kapsam için çalışma, mola ve boşta geçen dakikaların gün gün dökümünü döndürür. Diğer liste endpoint'lerinin aksine bu sayfalanmaz; bunun yerine tarih aralığıyla daraltın.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Timesheet/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "TeamId": "",
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
  "DateFilter": 5,
  "StartDate": null,
  "EndDate": null
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Timesheet": [
      {
        "StartDate": "2026-01-15T00:00:00Z",
        "GetWorkTimesInsightsQueryResult": {
          "Items": [
            {
              "ID": "65f1c0a3b8d4e21f9c0a1b2c",
              "TotalMins": 510,
              "Working": 468,
              "OnBreak": 30,
              "Idle": 12,
              "Productive": 402,
              "Natural": 44,
              "Unproductive": 22,
              "ActivityLevel": 71,
              "ClockIn": "2026-01-15T08:58:00Z",
              "ClockOut": "2026-01-15T17:32:00Z"
            }
          ]
        }
      }
    ]
  }
}
POST/Timesheet/Export

Puantajı dışa aktar

Aynı veriyi e-tablo olarak üretir ve Data içinde bir indirme URL'i döndürür. Bağlantı geçicidir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Timesheet/Export?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "TeamId": "",
  "EmployeeId": "",
  "DateFilter": 5
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": "https://worktivity.b-cdn.net/exports/timesheet-2026-01.xlsx"
}
POST/TimeEntry/List

Zaman girişlerini listele

Manuel olarak girilen zaman kayıtlarını onay durumu, belirtilen gerekçe ve varsa ret notuyla birlikte döndürür.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.
Statusisteğe bağlıenumTimeEntryStatusBodyOnay durumuna göre filtreler. Tüm durumları döndürmek için göndermeyin.
IncludeEmployeesisteğe bağlıbooleanBodyDönen her satıra çalışan kaydını ekler.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/TimeEntry/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Page": 1,
  "PageSize": 15,
  "EmployeeId": "",
  "TeamId": "",
  "DateFilter": 4,
  "Status": 0,
  "IncludeEmployees": true
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1c10",
        "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
        "Status": 0,
        "StartDate": "2026-01-15T09:00:00Z",
        "EndDate": "2026-01-15T17:00:00Z",
        "TotalMinutes": 480,
        "LogStatus": 1,
        "ProductivityStatus": 1,
        "Reason": "Forgot to clock in",
        "ProjectId": "65f1c0a3b8d4e21f9c0a1d00",
        "ProjectTaskId": "65f1c0a3b8d4e21f9c0a1d10"
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/TimeEntry/Create

Zaman girişi oluştur

Bir çalışan adına manuel giriş ekler, çevrimdışı çalışma ya da unutulan bir mesai girişi için kullanışlıdır. Otomatik onay açık değilse giriş Pending olarak başlar.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
EmployeeIdzorunlustringBodyİşlem yapılacak çalışanın kimliği.
StartDatezorunludatetimeBodyİşin başladığı an, UTC olarak.
EndDatezorunludatetimeBodyİşin bittiği an, UTC olarak.
ProjectIdisteğe bağlıstringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
ProjectTaskIdisteğe bağlıstringBodyTek bir görevle sınırlar. Boş dize tüm görevler anlamına gelir.
ReasonzorunlustringBodyGirişin neden eklendiği. Onaylayan kişiye gösterilir.
LogStatuszorunluenumEmployeeActivityLogStatusBodySürenin nasıl sınıflandırılacağı, çalışma, mola veya boşta.
ProductivityStatuszorunluenumProductivityStatusBodyGiriş için verimlilik sınıflandırması.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/TimeEntry/Create?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
  "StartDate": "2026-01-15T09:00:00Z",
  "EndDate": "2026-01-15T17:00:00Z",
  "ProjectId": "65f1c0a3b8d4e21f9c0a1d00",
  "ProjectTaskId": "",
  "Reason": "Offline work on the migration script",
  "LogStatus": 1,
  "ProductivityStatus": 1
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}
POST/TimeEntry/Approve

Zaman girişini onayla

Bekleyen bir girişi onaylar; dakikaları puantaja ve hak edişe işlenir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
IdzorunlustringBodyİşlem yapılacak zaman girişinin kimliği.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/TimeEntry/Approve?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "65f1c0a3b8d4e21f9c0a1c10"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}
POST/TimeEntry/Reject

Zaman girişini reddet

Bekleyen bir girişi reddeder. Gerekçe, çalışana kendi panelinde gösterilir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
IdzorunlustringBodyİşlem yapılacak zaman girişinin kimliği.
RejectionReasonzorunlustringBodyTalep reddedildiğinde çalışana gösterilen açıklama.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/TimeEntry/Reject?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "65f1c0a3b8d4e21f9c0a1c10",
  "RejectionReason": "Overlaps an approved entry"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}
POST/ActivityLogs/List

Aktivite kayıtlarını listele

Masaüstü uygulamasının kaydettiği aralık bazlı ham akış: etkin uygulama, verimlilik sınıflandırması, aktivite düzeyi ve ekran görüntüsü referansı. Bu, en yüksek hacimli endpoint'tir. CreatedAfter ile sayfalayarak ilerleyin.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
ProjectIdisteğe bağlıstringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
ProjectTaskIdisteğe bağlıstringBodyTek bir görevle sınırlar. Boş dize tüm görevler anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.
ActivityLogStatusisteğe bağlıenumEmployeeActivityLogStatusBodyAkışı tek bir aktivite durumuna göre filtreler.
HasScreenshotisteğe bağlıbooleanBodyYalnızca ekran görüntüsü olan ya da olmayan aralıklar.
ShowOnlyIdleisteğe bağlıbooleanBodyYalnızca boşta geçen aralıkları döndürür.
IncludeEmployeesisteğe bağlıbooleanBodyDönen her satıra çalışan kaydını ekler.
IncludeOrganizationAppsisteğe bağlıbooleanBodyAd ve simge dahil uygulama ayrıntılarını ekler.
CreatedAfteristeğe bağlıdatetimeBodyYalnızca bu UTC zaman damgasından sonra oluşturulan kayıtlar. Artımlı senkronizasyon için kullanın.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/ActivityLogs/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Page": 1,
  "PageSize": 50,
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
  "DateFilter": 1,
  "HasScreenshot": true,
  "IncludeOrganizationApps": true
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1e00",
        "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
        "Title": "Visual Studio Code",
        "Status": 1,
        "Productivity": 1,
        "ActivityLevel": 78,
        "CreateDate": "2026-01-15T14:30:00Z",
        "Screenshot": "https://worktivity.b-cdn.net/...?X-Amz-Expires=172800",
        "LinkExpireDate": "2026-01-17T14:30:00Z",
        "OrganizationApp": {
          "ID": "65f1c0a3b8d4e21f9c0a1e10",
          "ActivityApp": {
            "Title": "Visual Studio Code"
          }
        }
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}

Projeler ve görevler

Projeler, görevleri ve faturalandırıldıkları müşteriler.

POST/Project/List

Projeleri listele

Projeleri atanmış ekipleri ve çalışanları, bütçesi ve notlarıyla döndürür.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
CustomerIdisteğe bağlıstringBodyTek bir müşteriyle sınırlar. Boş dize tüm müşteriler anlamına gelir.
CreatedAfteristeğe bağlıdatetimeBodyYalnızca bu UTC zaman damgasından sonra oluşturulan kayıtlar. Artımlı senkronizasyon için kullanın.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Project/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "SearchTerm": "",
  "Page": 1,
  "PageSize": 15,
  "TeamId": "",
  "CustomerId": ""
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1d00",
        "Title": "Website Redesign",
        "Color": "#8b4dff",
        "CustomerId": "65f1c0a3b8d4e21f9c0a1f00",
        "TeamIds": [
          "65f1c0a3b8d4e21f9c0a1b40"
        ],
        "EmployeeIds": [
          "65f1c0a3b8d4e21f9c0a1b2c"
        ],
        "TotalBudget": 25000,
        "Notes": "Phase two",
        "CreateDate": "2026-01-04T08:00:00Z"
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/Project/AddUpdateProject

Proje oluştur veya güncelle

Oluşturmak için boş bir Id gönderin. Renk, baştaki diyez dahil yedi karakterlik bir hex değeridir; TeamIds ve EmployeeIds alanlarının ikisi de gönderilmelidir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
Idisteğe bağlıstringBodyProje oluşturmak için boş bırakın, güncellemek için mevcut bir kimlik gönderin.
TitlezorunlustringBodyProje adı, en fazla 100 karakter.
ColorzorunlustringBodyBaştaki diyez dahil yedi karakterlik hex renk değeri, örneğin #8b4dff.
CustomerIdisteğe bağlıstringBodyTek bir müşteriyle sınırlar. Boş dize tüm müşteriler anlamına gelir.
TeamIdszorunlustring[]BodyProjeye atanan ekipler.
EmployeeIdszorunlustring[]BodyProjeye atanan çalışanlar.
Notesisteğe bağlıstringBodyProje üzerindeki dahili not, en fazla 500 karakter.
TotalBudgetisteğe bağlıdecimalBodyOrganizasyonunuzun para biriminde proje bütçesi.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Project/AddUpdateProject?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "",
  "Title": "Mobile App v2",
  "Color": "#45c4a0",
  "CustomerId": "65f1c0a3b8d4e21f9c0a1f00",
  "TeamIds": [
    "65f1c0a3b8d4e21f9c0a1b40"
  ],
  "EmployeeIds": [
    "65f1c0a3b8d4e21f9c0a1b2c"
  ],
  "Notes": "Kickoff in February",
  "TotalBudget": 40000
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Item": {
      "ID": "65f1c0a3b8d4e21f9c0a1d01",
      "Title": "Mobile App v2"
    }
  }
}
POST/Project/ListTasks

Görevleri listele

Bir projedeki görevleri durum, öncelik, atanan kişiler ve son tarihle birlikte döndürür.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
ProjectIdisteğe bağlıstringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
ExcludeTimeTrackedisteğe bağlıbooleanBodyÜzerinde zaten kaydedilmiş süre bulunan görevleri hariç tutar.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Project/ListTasks?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ProjectId": "65f1c0a3b8d4e21f9c0a1d00",
  "Page": 1,
  "PageSize": 50
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1d10",
        "ProjectId": "65f1c0a3b8d4e21f9c0a1d00",
        "Title": "Design the homepage",
        "Details": "Initial mockups for desktop and mobile",
        "Status": 6,
        "Priority": 2,
        "OrderNo": 1,
        "AssigneeIds": [
          "65f1c0a3b8d4e21f9c0a1b2c"
        ],
        "DueDate": "2026-01-25T00:00:00Z",
        "NonBillable": false
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/Project/AddUpdateTask

Görev oluştur veya güncelle

Oluşturmak için boş bir Id gönderin. Source, görevin nereden geldiğini kaydeder, kendi takip sisteminizdeki bir kayda bağlı kalması için ExternalTaskId kullanın.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
Idisteğe bağlıstringBodyGörev oluşturmak için boş bırakın, güncellemek için mevcut bir kimlik gönderin.
ProjectIdzorunlustringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
TitlezorunlustringBodyGörev başlığı, en fazla 500 karakter.
Detailsisteğe bağlıstringBodyGörev açıklaması, en fazla 5000 karakter.
SourcezorunluenumProjectTaskSourceBodyGörevin nereden geldiği, manuel giriş ya da bir entegrasyon.
OrderNozorunluintegerBodyProje panosundaki konum.
AssigneeIdszorunlustring[]BodyGöreve atanan çalışanlar.
StatuszorunluenumProjectTaskStatusBodyGörevin bulunduğu pano sütunu.
Priorityisteğe bağlıenumProjectTaskPriorityBodyGörev önceliği.
DueDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde son tarih.
NonBillableisteğe bağlıbooleanBodyBu görevde kaydedilen süreyi faturalamanın dışında tutar.
ExternalTaskIdisteğe bağlıstringBodyGörevi harici bir takip sistemine bağlı tutmak için kendi tanımlayıcınız.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Project/AddUpdateTask?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "",
  "ProjectId": "65f1c0a3b8d4e21f9c0a1d00",
  "Title": "Wire up the pricing page",
  "Details": "Use the new plan matrix",
  "Source": 0,
  "OrderNo": 4,
  "AssigneeIds": [
    "65f1c0a3b8d4e21f9c0a1b2c"
  ],
  "Status": 0,
  "Priority": 2,
  "DueDate": "2026-02-10T00:00:00Z",
  "NonBillable": false
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Item": {
      "ID": "65f1c0a3b8d4e21f9c0a1d11",
      "Title": "Wire up the pricing page"
    }
  }
}
POST/Project/ListCustomers

Müşterileri listele

Projelerin faturalandırıldığı müşterileri döndürür. CustomerId ile proje oluştururken gereklidir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
IncludeTrackStatisticsisteğe bağlıbooleanBodyMüşteri başına kaydedilen süre toplamlarını ekler.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Project/ListCustomers?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "SearchTerm": "",
  "Page": 1,
  "PageSize": 15
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1f00",
        "Title": "ABC Company",
        "CreateDate": "2025-11-20T12:00:00Z"
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}

İçgörüler

Bir ekip, çalışan veya proje için toplulaştırılmış verimlilik, çalışma süresi ve uygulama kullanımı rakamları.

POST/Insights/Productivity

Verimlilik içgörüleri

Çalışan başına çalışma, mola ve boşta geçen dakika toplamları; verimlilik sınıflandırmasına göre ayrılmış ve beklenen çalışma saatleriyle arasındaki farkla birlikte. Saniye değil, dakika cinsindendir.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
ProjectIdisteğe bağlıstringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
ProjectTaskIdisteğe bağlıstringBodyTek bir görevle sınırlar. Boş dize tüm görevler anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Insights/Productivity?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "TeamId": "",
  "EmployeeId": "",
  "DateFilter": 5
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1b2c",
        "TotalMins": 9600,
        "Working": 8820,
        "OnBreak": 540,
        "Idle": 240,
        "Productive": 7420,
        "Natural": 940,
        "Unproductive": 460,
        "ActivityLevel": 74,
        "ExpectedWorkHoursDiff": -180,
        "Status": 1,
        "Productivity": 1,
        "Employee": {
          "Id": "65f1c0a3b8d4e21f9c0a1b2c",
          "FirstName": "John"
        }
      }
    ]
  }
}
POST/Insights/WorkTimes

Çalışma süresi içgörüleri

Seçilen aralıkta mesai giriş ve çıkış davranışı, geç mesai girişleri dahil. Daraltmak için aktivite durumuna veya verimlilik sınıfına göre filtreleyin.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
ProjectIdisteğe bağlıstringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
ProjectTaskIdisteğe bağlıstringBodyTek bir görevle sınırlar. Boş dize tüm görevler anlamına gelir.
WorkNoteisteğe bağlıstringBodyÇalışanın işine iliştirdiği nota göre filtreler.
Statusesisteğe bağlıenum[]EmployeeActivityLogStatusBodyDahil edilecek aktivite durumları. Boş liste tümü anlamına gelir.
ProductivityStatusesisteğe bağlıenum[]ProductivityStatusBodyDahil edilecek verimlilik sınıflandırmaları. Boş liste tümü anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Insights/WorkTimes?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "TeamId": "",
  "EmployeeId": "",
  "Statuses": [
    1,
    3
  ],
  "ProductivityStatuses": [],
  "DateFilter": 4
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1b2c",
        "TotalMins": 2400,
        "Working": 2180,
        "Idle": 120,
        "OnBreak": 100,
        "ClockIn": "2026-01-15T08:58:00Z",
        "ClockOut": "2026-01-15T17:32:00Z",
        "LateClockInCount": 1
      }
    ]
  }
}
POST/Insights/AppsSummary

Uygulama kullanım özeti

Seçilen kapsamda uygulama başına harcanan süre; her uygulamanın verimlilik sınıflandırması ve simgesiyle birlikte.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
ProjectIdisteğe bağlıstringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
ProjectTaskIdisteğe bağlıstringBodyTek bir görevle sınırlar. Boş dize tüm görevler anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Insights/AppsSummary?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "TeamId": "",
  "EmployeeId": "",
  "DateFilter": 5
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1e10",
        "TotalMins": 1200,
        "Productive": 980,
        "Natural": 160,
        "Unproductive": 60,
        "ActivityApp": {
          "Title": "Visual Studio Code",
          "Icon": "https://worktivity.b-cdn.net/worktivity-public/apps/vscode.png"
        }
      }
    ]
  }
}

Ekran görüntüleri ve Timelapse

Alınan ekran görüntüleri ve üretilen Timelapse videoları. Medya URL'leri imzalıdır ve süresi dolar.

POST/Screenshots/List

Ekran görüntülerini listele

Alınan ekran görüntülerini döndürür. Screenshot alanı, süresi dolan imzalı bir URL'dir. URL'i saklamak yerine LinkExpireDate değerini kontrol edip yeniden isteyin.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.
HasScreenshotisteğe bağlıbooleanBodyYalnızca ekran görüntüsü olan ya da olmayan aralıklar.
IncludeEmployeesisteğe bağlıbooleanBodyDönen her satıra çalışan kaydını ekler.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Screenshots/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Page": 1,
  "PageSize": 50,
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
  "DateFilter": 1,
  "HasScreenshot": true
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1e00",
        "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
        "Screenshot": "https://worktivity.b-cdn.net/...?X-Amz-Expires=172800",
        "LinkExpireDate": "2026-01-17T14:30:00Z",
        "ObjectKey": "screenshots/2026/01/15/abc.jpg",
        "Status": 1,
        "CreateDate": "2026-01-15T14:30:00Z"
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/Screenshots/Delete

Ekran görüntüsünü sil

Tek bir ekran görüntüsünü ve saklanan dosyasını kalıcı olarak siler. İlgili aktivite kaydı korunur.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
IdzorunlustringBodySilinecek ekran görüntüsünün kimliği.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/Screenshots/Delete?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "65f1c0a3b8d4e21f9c0a1e00"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": true
}
POST/TimelapseVideos/List

Timelapse videolarını listele

Üretilen Timelapse videolarını küçük görsel, video URL'i ve dosya boyutuyla döndürür. İki URL de imzalıdır ve süresi dolar.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
DateFilteristeğe bağlıenumDateFilterTypeBodyHazır aralık. StartDate ve EndDate kullanmak için 10 (Custom) gönderin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.
TimelapseVideoIdsisteğe bağlıstring[]BodyBelirli bir video kimliği kümesiyle sınırlar.
IncludeEmployeesisteğe bağlıbooleanBodyDönen her satıra çalışan kaydını ekler.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/TimelapseVideos/List?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Page": 1,
  "PageSize": 20,
  "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
  "DateFilter": 4,
  "IncludeEmployees": true
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1e50",
        "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
        "Url": "https://worktivity.b-cdn.net/...thumb.jpg",
        "VideoUrl": "https://worktivity.b-cdn.net/...timelapse.mp4",
        "Filename": "2026-01-15-john-doe.mp4",
        "FileSizeMb": 18.4,
        "LinkExpireDate": "2026-01-17T14:30:00Z",
        "CreateDate": "2026-01-15T18:00:00Z"
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}

Maliyet yönetimi

Kaydedilen süre ve ücret oranlarından türetilen hak ediş toplamları, ayrıca müşteri faturaları.

POST/CostManagement/Payroll

Hak ediş hesapla

Belirtilen tarih aralığı için çalışan başına kaydedilen dakikaları, ortalama ücret oranını ve ödenecek tutarı döndürür. Boşta veya mola süresini dışarıda bırakmak için aktivite durumuna göre filtreleyin.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
ProjectIdisteğe bağlıstringBodyTek bir projeyle sınırlar. Boş dize tüm projeler anlamına gelir.
ProjectTaskIdisteğe bağlıstringBodyTek bir görevle sınırlar. Boş dize tüm görevler anlamına gelir.
Statusesisteğe bağlıenum[]EmployeeActivityLogStatusBodyDahil edilecek aktivite durumları. Boş liste tümü anlamına gelir.
ProductivityStatusesisteğe bağlıenum[]ProductivityStatusBodyDahil edilecek verimlilik sınıflandırmaları. Boş liste tümü anlamına gelir.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/CostManagement/Payroll?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "TeamId": "",
  "EmployeeId": "",
  "Statuses": [
    1
  ],
  "StartDate": "2026-01-01T00:00:00Z",
  "EndDate": "2026-01-31T23:59:59Z"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1b2c",
        "TotalMins": 9600,
        "TotalSpent": 4000,
        "AvgPayRate": 25,
        "TotalPayable": 4000,
        "Employee": {
          "Id": "65f1c0a3b8d4e21f9c0a1b2c",
          "FirstName": "John",
          "LastName": "Doe"
        }
      }
    ]
  }
}
POST/CostManagement/ListInvoices

Faturaları listele

Müşteri faturalarını durumu, toplamı ve vade tarihiyle döndürür.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
CustomerIdisteğe bağlıstringBodyTek bir müşteriyle sınırlar. Boş dize tüm müşteriler anlamına gelir.
Statusisteğe bağlıenumOrganizationCustomerInvoiceStatusBodyFatura durumuna göre filtreler. Tüm durumları döndürmek için göndermeyin.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/CostManagement/ListInvoices?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Page": 1,
  "PageSize": 15,
  "CustomerId": "",
  "Status": 2
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a1f50",
        "Title": "INV-2026-001",
        "CustomerId": "65f1c0a3b8d4e21f9c0a1f00",
        "Status": 2,
        "Total": 5000,
        "DueDate": "2026-02-15T00:00:00Z",
        "CreateDate": "2026-01-15T00:00:00Z"
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}

İzin yönetimi

İzin hakları, izin talepleri ve onay işlemleri.

POST/LeaveManagement/ListLeaveRights

İzin haklarını listele

Her çalışanın izin hakkını türe göre, kullanılan ve kalan gün sayısıyla birlikte döndürür.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
Typeisteğe bağlıenumLeaveRightTypeBodyİzin türü, örneğin yıllık izin veya hastalık izni.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/LeaveManagement/ListLeaveRights?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Page": 1,
  "PageSize": 15,
  "TeamId": "",
  "EmployeeId": ""
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a2a00",
        "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
        "Type": 1,
        "TotalDays": 20,
        "UsedDays": 6,
        "RemainingDays": 14
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/LeaveManagement/ListLeaveRequests

İzin taleplerini listele

İzin taleplerini türü, tarih aralığı ve onay durumuyla döndürür.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
SearchTermisteğe bağlıstringBodySerbest metin filtresi. Boş dize her şeyi döndürür.
Pageisteğe bağlıintegerBody1'den başlayan sayfa numarası. Varsayılan 1.
PageSizeisteğe bağlıintegerBodySayfa başına kayıt sayısı. Varsayılan 15.
TeamIdisteğe bağlıstringBodyTek bir ekiple sınırlar. Boş dize tüm ekipler anlamına gelir.
EmployeeIdisteğe bağlıstringBodyTek bir çalışanla sınırlar. Boş dize tüm çalışanlar anlamına gelir.
Typeisteğe bağlıenumLeaveRightTypeBodyİzin türü, örneğin yıllık izin veya hastalık izni.
Statusisteğe bağlıenumLeaveRequestStatusBodyOnay durumuna göre filtreler. Tüm durumları döndürmek için göndermeyin.
StartDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık başlangıcı. DateFilter Custom olduğunda kullanılır.
EndDateisteğe bağlıdatetimeBodyUTC ve ISO 8601 biçiminde aralık bitişi. DateFilter Custom olduğunda kullanılır.
CreatedAfteristeğe bağlıdatetimeBodyYalnızca bu UTC zaman damgasından sonra oluşturulan kayıtlar. Artımlı senkronizasyon için kullanın.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/LeaveManagement/ListLeaveRequests?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Page": 1,
  "PageSize": 15,
  "EmployeeId": "",
  "Status": 0
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {
    "Items": [
      {
        "ID": "65f1c0a3b8d4e21f9c0a2b00",
        "EmployeeId": "65f1c0a3b8d4e21f9c0a1b2c",
        "Type": 1,
        "Status": 0,
        "StartDate": "2026-02-10T00:00:00Z",
        "EndDate": "2026-02-14T00:00:00Z",
        "TotalDays": 5
      }
    ],
    "TotalCount": 1,
    "PageCount": 1
  }
}
POST/LeaveManagement/ApproveLeaveRequest

İzin talebini onayla

Bekleyen bir izin talebini onaylar ve günleri ilgili izin hakkından düşer.

Parametreler

AdTürKonumAçıklama
x_api_keyzorunlustringQueryOrganizasyonunuzun API anahtarı. Her istekte zorunludur.
IdzorunlustringBodyOnaylanacak izin talebinin kimliği.

İstek

cURL
curl -X POST "https://open-api.useworktivity.com/LeaveManagement/ApproveLeaveRequest?x_api_key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "Id": "65f1c0a3b8d4e21f9c0a2b00"
}'

Yanıt

JSON
{
  "HasError": false,
  "Message": null,
  "ValidationErrors": [],
  "Data": {}
}

Enum referansı

Enum alanları tam sayı olarak gönderilir ve döner. Aşağıdaki değerler kararlıdır, ancak yetkili kaynak Definition/ListEnums'tır; burada listelenmeyen enum'ların görünen adlarını da içerir.

DateFilterType

DeğerAd
1Today
2Yesterday
3Last3Days
4Last7Days
5Last30Days
10Custom

TypeOfAuthority

DeğerAd
0User
1Admin
2Owner
3Coowner
4Manager
5Employee

EmployeeActivityLogStatus

DeğerAd
0ClockIn
1Working
2OnBreak
3Idle
4ClockOut
5YetToStart

ProductivityStatus

DeğerAd
1Productive
2Natural
3Unproductive

TimeEntryStatus

DeğerAd
0Pending
1Approved
2Rejected

ProjectTaskStatus

DeğerAd
0Todo
1Completed
2Cancelled
3OnHold
4Postponed
5UnderReview
6InProgress

OrganizationCustomerInvoiceStatus

DeğerAd
1Draft
2Sent
3PartiallyPaid
4Paid

Etkileşimli deneyin

Swagger UI bu dokümantasyonu birebir yansıtır ve bu sayfada yer almayan endpoint'ler dahil, doğrudan tarayıcıdan kimlik doğrulanmış istek göndermenizi sağlar.

Worktivity'yi kendi sisteminize bağlamaya hazır mısınız?

Ücretsiz denemeyi başlatın, panelden bir anahtar üretin ve ilk çağrınızı dakikalar içinde yapın. Her pakette tam API erişimi vardır.

14 günlük ücretsiz deneme. Kredi kartı gerekmez.