Skip to main content

Activity uploads

Activity APIs accept aggregated time and metadata. They do not accept file contents, diffs, keystrokes, or clipboard data.

Time values are measured in seconds.

Submit one activity

import Analog_WakaTime_SDK
from datetime import date
import asyncio
import os


async def main() -> None:
configuration = Analog_WakaTime_SDK.Configuration(
access_token=os.environ["ANALOG_WAKATIME_API_TOKEN"],
)

activity = Analog_WakaTime_SDK.MainApiV1CreateActivityPostRequest(
language="Python",
lines=120,
time=60,
var_date=date.today(),
hour=14,
path="/workspace/example/main.py",
project_name="example-project",
ide_name="PyCharm",
filename="main.py",
)

async with Analog_WakaTime_SDK.ApiClient(configuration) as api_client:
activities_api = Analog_WakaTime_SDK.ActivitiesApi(api_client)
result = await activities_api.main_api_v1_create_activity_post(activity)
print(result.to_dict())


if __name__ == "__main__":
asyncio.run(main())

The generated Python property is named var_date because date is represented through a model alias. The outgoing JSON field is still date.

Batch synchronization

Plugins and agents should send compact batches instead of one request per event:

import Analog_WakaTime_SDK
from datetime import date

item = Analog_WakaTime_SDK.MainApiV1SyncActivitiesPostRequestActivitiesInner(
language="Python",
lines=120,
time=60,
var_date=date.today(),
hour=14,
project_name="example-project",
ide_name="PyCharm",
filename="main.py",
)
request = Analog_WakaTime_SDK.MainApiV1SyncActivitiesPostRequest(
activities=[item],
)

result = await activities_api.main_api_v1_sync_activities_post(request)

Upload guidance

  1. Aggregate activity by project, language, date, and hour.
  2. Keep an offline queue during network failures.
  3. Retry network failures and 5xx responses with backoff.
  4. Do not retry invalid 4xx payloads without correcting them.
  5. Identify the editor through ide_name.
  6. Never upload source-code contents.

Desktop and Android clients have separate typed create and batch-sync models under the same ActivitiesApi class.