Custom Integrations
Easily connect your systems with custom integrations to keep entity data automatically in sync
Custom Integrations allow you to seamlessly send data from your third-party systems—or any data you maintain—directly into Sprinto. This data can then be used as evidence for compliance and audits.
This guide explains how sessions work within the Sprinto Custom Integration Entities Sync API, how to use them effectively, and how Sprinto processes and manages your data throughout the integration.
API ReferencesWhat are sessions?
A session groups a burst of batched uploads (pages) into one logical sync. You start a session, push pages of entities
, then close the session to apply
all accepted data. If you discard
, nothing is applied. If you do nothing, the session expires after inactivity and the data is retained temporarily but is not applied.
Lifecycle & States
[active] --close(apply)--> [processing] --success--> [processed]
|
+--close(discard)--> [cancelled]
|
+--inactivity timeout--> [expired] --apply--> (processed)
State meanings
active
— Accepting pages (entities
batches) via POST /entities.processing
— Sprinto is applying staged pages to internal models.processed
— All staged data applied successfully.cancelled
— Discarded everything; no changes applied.expired
— Inactivity timeout hit; Sprinto will not process that data but will retain it temporarily.
Timeout: Default 60 minutes since the last request on the session.
Batching, pagination & sizing
Recommended page size: up to 100 items total across all entity types per call.
Max request size: e.g., 5 MB (compressed allowed). Exceeding returns 413 Payload Too Large.
Ordering: Pages are applied in the order they were accepted. Within a page, ordering is not guaranteed across entity types.
Concurrency rules
One active session per integration (default). Attempting to start a new session while one is
active
returns 409 Conflict. You can start another after closing/cancelling/expiry.Multiple read calls (
GET status
) are fine at any time.
Validation & anomalies
Page-level validation runs on receipt. If any record in a page is invalid, the entire page is rejected with 400 and structured errors.
Sprinto records anomalies for failed pages (visible internally; surfaced via activity logs). If you still complete, Sprinto applies only accepted pages.
Best practices
Keep pages ≤ 100 items and under size limits; compress if large.
Implement exponential backoff on 429 (respect
Retry-After
).Track your own
page_hint
/correlation keys inside payloads for easier debugging.
FAQs
Q: Can I push different entity types in the same page?
Yes. The entities
object is a map; each key is an array for that type.
Q: How do I resume after a validation error? Fix the failing records and re-send the same page.
Q: Can multiple sessions run concurrently for one custom integration?
Only one active
session per integration.
Last updated