Skip to main content
https://.thoughtindustries.com

Webhooks vs REST API

The REST API and Webhooks solve opposite problems. The REST API is request-driven — you ask, the platform answers. Webhooks are event-driven — the platform tells you the moment something changes. Most production integrations use both.

REST API

You pull data on demand. Best when your system needs an answer right now — looking up a user, enrolling a learner, updating a course.

  • Synchronous request / response
  • You control the timing and the query
  • Subject to rate limits — see Rate Limits
  • Stateless — every call is independent

Webhooks

The platform pushes events to your URL the moment they happen. Best for keeping downstream systems in sync without polling.

  • Asynchronous, fire-and-forget delivery
  • HMAC-SHA256 signed payloads
  • 24-hour exponential-backoff retry on failure
  • You provide a public HTTPS endpoint

When to use which

ScenarioUseWhy
Provision a user from your CRMREST APIYou need confirmation of success before continuing the workflow.
Sync course completions to an HRISWebhooksAvoid polling — react the instant a learner finishes.
Build a custom learner dashboardREST APIRead on-demand to render the latest state.
Trigger a Slack alert on enrollmentWebhooksReal-time push to a notification system.
Nightly data warehouse exportREST APIBulk pagination over a defined window.
Update billing on subscription changeWebhooksStay in lock-step with platform state changes.
Verify a user's certification statusREST APIPoint-in-time lookup with a deterministic response.
Mirror catalog changes to a marketing siteWebhooksPush the delta instead of re-crawling the catalog.

Use them together

The most resilient integrations combine both. Webhooks notify you of change; the REST API hydrates the full record. Webhook payloads are intentionally lean — treat them as a signal, then fetch authoritative data from the API.

1.  Learner finishes a course
2.  Platform fires  course.completed  webhook  →  your endpoint
3.  Your handler reads  userId  +  courseId  from the payload
4.  Your service calls  GET /v2/users/:id           (full profile)
5.  Your service calls  GET /v2/content/course/:id  (course metadata)
6.  Downstream system (HRIS, CRM, warehouse) is updated

At a glance

REST APIWebhooks
DirectionClient → PlatformPlatform → Client
TimingOn demandReal-time on event
TransportHTTPS request/responseHTTPS POST to your URL
AuthBearer API keyHMAC-SHA256 signature
Failure handlingYou retry24h exponential backoff
Best forReads, writes, lookupsState sync, notifications