Skip to main content

Activity uploads

The platform accepts single activity events and batch sync calls. Send aggregated activity — language, line counts, and timestamps — never source code.

Create a single activity

import * as AnalogWakaTime from '@analog-code-monitor/analog-wakatime-ts-sdk';

const configuration = new AnalogWakaTime.Configuration({
accessToken: process.env.ANALOG_WAKATIME_API_TOKEN,
});

const activitiesApi = new AnalogWakaTime.ActivitiesApi(configuration);

const request: AnalogWakaTime.MainApiV1CreateActivityPostRequest = {
// build the activity model for your integration
};

const { status, data } = await activitiesApi.mainApiV1CreateActivityPost(request);
console.log(`HTTP ${status}`, data);

Desktop and Android variants

Dedicated endpoints exist for desktop agents and Android devices:

await activitiesApi.mainApiV1CreateActivityDesktopPost(desktopRequest);
await activitiesApi.mainApiV1CreateActivityAndroidPost(androidRequest);

Batch sync

Use the sync endpoints to upload a queue of unsent records — this mirrors what the IDE plugins do when reconnecting after offline work:

const syncRequest: AnalogWakaTime.MainApiV1SyncActivitiesPostRequest = {
activities: queuedActivities,
};

const { data } = await activitiesApi.mainApiV1SyncActivitiesPost(syncRequest);
console.log(data);

Desktop and Android batch variants:

await activitiesApi.mainApiV1SyncActivitiesDesktopPost(desktopBatch);
await activitiesApi.mainApiV1SyncActivitiesAndroidPost(androidBatch);

Offline queue pattern

For reliable integrations:

  1. collect activity locally while the gateway is unreachable
  2. flush the queue with mainApiV1SyncActivitiesPost on reconnect
  3. remove records only after a successful response
  4. retry failed batches with exponential backoff (see Errors)