> ## Documentation Index
> Fetch the complete documentation index at: https://help.skillsdb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks & Polling

> The API has no webhooks today — detect changes by polling the activity feeds

<Info>
  **Quick Summary:** The v1 API does not deliver webhooks. Detect changes by polling the activity feeds on a schedule, filtered by date, and send an `Idempotency-Key` on any write your poller triggers.
</Info>

## No webhooks

There is no webhook or event-subscription mechanism in v1 — SkillsDB never calls your systems. If your integration needs to react to changes, poll for them.

## Polling the activity feeds

Two resources expose an activity feed:

| Feed            | Endpoint                            | Scope          |
| --------------- | ----------------------------------- | -------------- |
| Career activity | `GET /api/v1/careers/{id}/activity` | `careers:read` |
| Skill activity  | `GET /api/v1/skills/{id}/activity`  | `skills:read`  |

The career feed accepts `from` and `to` (ISO 8601 UTC) plus `event` and `performedBy` filters. Poll it by remembering when you last polled and asking only for what is new:

```bash theme={null}
curl "https://prod.skillsdbnext.com/api/v1/careers/318/activity?from=2026-08-30T00:00:00Z" \
  -H "Authorization: Bearer sdb_live_YOUR_KEY_HERE"
```

Process the entries, store the poll time, and use it as the next `from`. Overlap the windows slightly and deduplicate on the entry `id` rather than trusting an exact boundary.

The skill feed is a version log (`baseline`, `version_created`, `renew_training`) with pagination only — no date filter. Each entry carries `performedAt`; page through and stop when you reach entries you have already seen.

## Keep the poller polite

Polls are GETs, counted against the [reads bucket](/api-docs/rest/rate-limits) — 1,000 per hour per key. Watch `RateLimit-Remaining` and size your interval so a full sweep fits comfortably.

If a poll result triggers a write back into SkillsDB, send an [Idempotency-Key](/api-docs/rest/idempotency) from day one — a poller that crashes mid-run and restarts will otherwise perform its writes twice.
