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:
- collect activity locally while the gateway is unreachable
- flush the queue with
mainApiV1SyncActivitiesPoston reconnect - remove records only after a successful response
- retry failed batches with exponential backoff (see Errors)