Skip to content
Developers

Consent, by API.

One clean REST API, native SDKs for every surface, and signed webhooks for everything that happens after. Wire consent into your product once — and let the ledger do the proving.

Quickstart

From zero to a sealed receipt.

Three steps. No data leaves your control unencrypted, and every grant comes back provable.

01

Create an API key

Provision a scoped key for your tenant from the console. Keys are environment-bound and rotate without downtime, so staging never touches production records.

02

Capture consent

Open a consent session, render the itemised notice, and collect an affirmative decision. The purposes come from the notice itself, not from your request — so what a person agreed to is always exactly what they were shown.

03

Receive a sealed receipt

Submitting the session seals a tamper-evident receipt into the hash-chained ledger. Keep the id: the receipt carries a signature and the hash of the exact notice shown, so the moment of consent can be reproduced later.

Two calls

Open a session,
seal a receipt.

Open a session against a named notice, then submit the decision. The purposes come from the notice, so the record always matches what the person actually saw — and the receipt comes back signed.

  • Purposes resolved from the notice, not the caller
  • Sealed into a hash-chained ledger
  • Signed receipt with the notice hash
Request HTTP · any language
POST /api/v1/public/consent/sessions
Authorization: Bearer tiq_live_••••
Content-Type: application/json

{
  "df_client_id": "dfc_9f2a4c7e",
  "subject_ref": "[email protected]",
  "subject_ref_type": "email",
  "session_ref": "checkout-8412",
  "notice_internal_name": "checkout_and_fulfilment",
  "ui_mode": "embedded_popup",
  "locale_pref": "hi"
}
Response sealed
201 Created

{
  "consent_session_id": "0f9c1a3e-…",
  "data_principal_id": "b73d18a0-…",
  "consent_url": "https://consent.yourdomain.in/collect/…",
  "notice_version_id": "4c81e2b7-…",
  "notice_hash": "sha256:a3f2…c9e4",
  "languageCode": "hi",
  "expiresAt": "2026-07-28T09:41:22Z"
}
SDKs

Every surface, the same truth.

One notice, one purpose model, one ledger — whether consent is captured in a browser, a native app or your backend.

Web SDK

A drop-in notice renderer and cookie banner for any site or single-page app. Localises into 22 scheduled languages plus English and posts consent without a backend round-trip.

  • Hosted CMP or self-render
  • Preference centre
  • One-click withdrawal

Mobile

Native iOS and Android libraries that present the same itemised notice inside your app and queue events offline, syncing the sealed receipt the moment a device reconnects.

  • Swift + Kotlin
  • Offline-first capture
  • Shared notice versions

Server-side REST API

Call the API straight from your backend to open consent sessions, resolve a principal's current state and act on rights requests — no SDK required, and signed webhooks to verify what comes back.

  • Any language, plain HTTP
  • State resolution
  • Signed-webhook verification
Webhooks

Know the moment it happens.

Signed, ordered events let your systems react the instant consent changes or an obligation is triggered — no polling, no drift.

consent.granted

An affirmative decision was captured and a receipt was sealed into the ledger.

consent.withdrawn

A principal withdrew consent — propagate the revocation across your connected systems.

consent.expired

A consent reached the end of its validity — stop processing until it is renewed.

processing.halt_requested

A downstream system is being instructed to stop processing this principal's data.

Wire consent in once,
prove it forever.

A 30-minute walkthrough mapped to your data, your notices, and your DPDP readiness deadline.