Skip to content
/api/insiders/sync

Trigger an on-demand insider data sync.

Trigger an on-demand insider data sync. Re-runs the Form 4 RSS poller and writes any newly-discovered transactions to the insiders tables. Idempotent — re-runs are no-ops if nothing new is in the EDGAR feed.

25 tokensSince v1.0.0

Why use this

Force a fresh poll of the SEC EDGAR Form 4 RSS feed instead of waiting for the next scheduled 60-second tick. Most useful for trading desks that want to confirm an insider transaction is in our system before acting on a Bloomberg or news-wire alert (lag-sensitive workflows where 30-60s of polling delay is material). The job is enqueued on the `sec_insiders` Celery queue and runs asynchronously — re-poll `GET /insider-module/api/insiders/transactions/latest` until you see the new accession number, or subscribe to the WebSocket stream at `/insider-module/socket.io` for push delivery. Idempotent and rate-limited (10 req/min per API key) so accidental retries are cheap.

Triggers an on-demand sync of recent Form 4 filings — useful when you want the most recent transactions before the next scheduled poll runs (default cadence: every 60 seconds). Returns immediately with a queued job descriptor; the actual sync runs asynchronously on the insider Celery worker. Subsequent reads from GET /insider-module/api/insiders/transactions/latest will reflect the newly indexed rows once last_synced_at advances. The 25-token cost reflects the heavier downstream work this endpoint dispatches.

Response schema

FieldTypeNullableDescription
job_idstringnoCelery task UUID assigned to the sync job. Surface this in support tickets when a sync appears to have hung — operations can grep this directly out of `flower` / Celery logs to trace the worker, queue, and per-step duration.
queued_atstringnoISO-8601 UTC timestamp at which the job entered the `sec_insiders` Celery queue (NOT the timestamp at which a worker started executing it). For end-to-end latency measurement, compare this against the `last_synced_at` value returned by subsequent reads.
statusstringnoAlways the literal string `"queued"` on a successful enqueue. The sync itself is asynchronous — this endpoint never returns `"completed"`. To detect completion, poll `GET /insider-module/api/insiders/transactions/latest` and compare its `last_synced_at` against `queued_at`, or subscribe to the WebSocket push stream.
estimated_secondsintegernoServer-side ETA (in whole seconds) for the sync to complete, computed from current EDGAR feed depth and worker concurrency. Typical range 30-90s in steady state; 120-300s during 13F deadline windows when the insider worker shares CPU with form_13f workers. Treat as a hint, not a contract — schedule a re-poll at `queued_at + 1.5 × estimated_seconds`.

Sample response

·
  • "job_id": "8f1a2b30-c4d5-46e7-9f01-23456789abcd"
  • "queued_at": "2026-05-01T20:55:12.000Z"
  • "status": "queued"
  • "estimated_seconds": 60
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl -X POST "https://api.finradar.ai/api/insiders/sync?api_Token=YOUR_API_KEY" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).

Try it

Related endpoints