Genius Scan - PDF Scanner icon

Genius Scan Data API: Cloud documents, pages and account fields

The Grizzly Labs · Identity

Genius Scan is The Grizzly Labs' camera-to-PDF scanner with Genius Cloud sync. After POST /v1/accounts/login the client lists vault documents at GET /v1/vault/items (cursor query usn), hydrates page files, and mints short-lived object-storage access at GET /v1/storage/tokens.

Genius Scan is The Grizzly Labs' camera-to-PDF scanner with a first-party Genius Cloud vault. After email/password signup or login the client receives a Bearer token plus the user's uid and email, then incrementally syncs documents (uid, name, tags, pages, usn, document_type, parent) and page files (type, md5, version, format). Short-lived object-storage session credentials (access_key_id, secret_access_key, session_token, expiration) let the app upload and fetch page JPEGs keyed per page uid and file type. Account calls read and update the login email, and a password-confirmed delete closes the user. OCR runs on-device; the valuable network surface is this document sync, identity, and storage-credential handshake.

Screenshots

  • Genius Scan - PDF Scanner screenshot 1
  • Genius Scan - PDF Scanner screenshot 2
  • Genius Scan - PDF Scanner screenshot 3
  • Genius Scan - PDF Scanner screenshot 4
  • Genius Scan - PDF Scanner screenshot 5
  • Genius Scan - PDF Scanner screenshot 6

API surface

  • Sign up for a Genius Cloud session

    POST /v1/accounts/register opendata

    Creates a Genius Cloud account and returns the signed-in user (uid, email) plus the Bearer token used for document sync and account calls.

    Auth: None. Body carries email and password. The response token is sent as an Authorization: Bearer header on later Genius Cloud calls.

    • email
    • password
    • user
    • uid
    • token

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/accounts/register HTTP/1.1
    Content-Type: application/json
    
    {
      "email": "[email protected]",
      "password": "hunter2-example"
    }
    {
      "user": {
        "uid": "usr_8f3c1d2e7a9b",
        "email": "[email protected]"
      },
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's cloud account sign-up flow
    • field set mirrors the registration form (email, password) and the session it returns
  • Log in to Genius Cloud

    POST /v1/accounts/login opendata

    Authenticates an existing Genius Cloud account and returns the user object plus Bearer token that the sync client attaches to later calls.

    Auth: None. Body carries email and password. The response token is sent as an Authorization: Bearer header on later calls.

    • email
    • password
    • user
    • uid
    • token

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/accounts/login HTTP/1.1
    Content-Type: application/json
    
    {
      "email": "[email protected]",
      "password": "hunter2-example"
    }
    {
      "user": {
        "uid": "usr_8f3c1d2e7a9b",
        "email": "[email protected]"
      },
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the app's cloud sign-in screen
  • Reconnect session by user uid

    POST /v1/accounts/reconnect opendata

    Re-opens a Genius Cloud session when the client already knows the account uid, returning a fresh Bearer token and user object.

    Auth: None. Body carries uid and password rather than email. The response token is sent as an Authorization: Bearer header on later calls.

    • uid
    • password
    • user
    • email
    • token

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/accounts/reconnect HTTP/1.1
    Content-Type: application/json
    
    {
      "uid": "usr_8f3c1d2e7a9b",
      "password": "hunter2-example"
    }
    {
      "user": {
        "uid": "usr_8f3c1d2e7a9b",
        "email": "[email protected]"
      },
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the session-restore path used when the install already knows the account id
  • Update session device token

    PUT /v1/accounts/session opendata

    Registers the device_token on the open Genius Cloud session so sync and account notifications can target this install.

    Auth: Authorization: Bearer token from POST /v1/accounts/login.

    • device_token
    • user
    • uid
    • email
    • token

    Illustrative example reconstructed from the app's interface — not a live capture.

    PUT /v1/accounts/session HTTP/1.1
    Authorization: Bearer <token>
    Content-Type: application/json
    
    {
      "device_token": "fcm-device-token-example"
    }
    {
      "user": {
        "uid": "usr_8f3c1d2e7a9b",
        "email": "[email protected]"
      },
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the push-notification registration step after sign-in
  • List cloud documents since USN

    GET /v1/vault/items opendata

    Incrementally syncs the Genius Cloud vault: items changed after the query usn, including page files and a remaining-count flag so the client knows whether another pull is needed.

    Auth: Authorization: Bearer token from POST /v1/accounts/login.

    • usn
    • remaining-count
    • uid
    • name
    • tags
    • pages
    • created_at
    • updated_at
    • deleted_at
    • document_type
    • parent
    • order
    • format
    • quadrangle
    • post_processing_type
    • distortion_correction_enabled
    • files
    • type
    • md5
    • version

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/vault/items?usn=1842&remaining-count=true HTTP/1.1
    Authorization: Bearer <token>
    [
      {
        "uid": "doc_a1b2c3d4",
        "name": "Passport scan",
        "tags": ["id", "travel"],
        "pages": [{
          "uid": "page_9f0e",
          "order": 0,
          "format": "jpeg",
          "quadrangle": "0,0,1,0,1,1,0,1",
          "post_processing_type": "color",
          "distortion_correction_enabled": true,
          "files": [{
            "type": "original",
            "md5": "d41d8cd98f00b204e9800998ecf8427e",
            "version": "1",
            "format": "jpeg"
          }],
          "created_at": "2026-09-20T14:02:11Z",
          "updated_at": "2026-09-20T14:02:18Z"
        }],
        "created_at": "2026-09-20T14:02:11Z",
        "updated_at": "2026-09-20T14:02:18Z",
        "deleted_at": null,
        "usn": 1843,
        "document_type": "document",
        "parent": null
      }
    ]

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the document-list sync that powers the app's library view
    • field set mirrors the vault document cards and their page descriptors
  • Fetch one cloud document

    GET /v1/vault/items/{itemId} opendata

    Hydrates a single Genius Cloud vault item (document or folder) by id, including nested pages and the original page-file blobs the scanner stores in object storage.

    Auth: Authorization: Bearer token from POST /v1/accounts/login.

    • itemId
    • uid
    • name
    • tags
    • pages
    • created_at
    • updated_at
    • deleted_at
    • usn
    • document_type
    • parent
    • files
    • type
    • md5
    • format

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/vault/items/doc_a1b2c3d4 HTTP/1.1
    Authorization: Bearer <token>
    {
      "uid": "doc_a1b2c3d4",
      "name": "Passport scan",
      "tags": ["id", "travel"],
      "pages": [{
        "uid": "page_9f0e",
        "order": 0,
        "format": "jpeg",
        "quadrangle": "0,0,1,0,1,1,0,1",
        "post_processing_type": "color",
        "distortion_correction_enabled": true,
        "files": [{
          "type": "original",
          "md5": "d41d8cd98f00b204e9800998ecf8427e",
          "version": "1",
          "format": "jpeg"
        }],
        "created_at": "2026-09-20T14:02:11Z",
        "updated_at": "2026-09-20T14:02:18Z"
      }],
      "created_at": "2026-09-20T14:02:11Z",
      "updated_at": "2026-09-20T14:02:18Z",
      "deleted_at": null,
      "usn": 1843,
      "document_type": "document",
      "parent": null
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the document-detail screen and its page-file manifest
  • Update a cloud document

    PUT /v1/vault/items/{itemId} opendata

    Writes document metadata and page descriptors (name, tags, parent folder, page files) back to Genius Cloud and returns the updated item with a new usn.

    Auth: Authorization: Bearer token from POST /v1/accounts/login.

    • itemId
    • uid
    • name
    • tags
    • pages
    • usn
    • document_type
    • parent
    • created_at
    • updated_at
    • deleted_at

    Illustrative example reconstructed from the app's interface — not a live capture.

    PUT /v1/vault/items/doc_a1b2c3d4 HTTP/1.1
    Authorization: Bearer <token>
    Content-Type: application/json
    
    {
      "uid": "doc_a1b2c3d4",
      "name": "Passport scan (front)",
      "tags": ["id", "kyc"],
      "pages": [{
        "uid": "page_9f0e",
        "order": 0,
        "format": "jpeg",
        "quadrangle": "0,0,1,0,1,1,0,1",
        "post_processing_type": "color",
        "distortion_correction_enabled": true,
        "files": [{
          "type": "original",
          "md5": "d41d8cd98f00b204e9800998ecf8427e",
          "version": "1",
          "format": "jpeg"
        }],
        "created_at": "2026-09-20T14:02:11Z",
        "updated_at": "2026-09-27T10:15:00Z"
      }],
      "created_at": "2026-09-20T14:02:11Z",
      "updated_at": "2026-09-27T10:15:00Z",
      "deleted_at": null,
      "usn": 1843,
      "document_type": "document",
      "parent": null
    }
    {
      "uid": "doc_a1b2c3d4",
      "name": "Passport scan (front)",
      "tags": ["id", "kyc"],
      "pages": [{
        "uid": "page_9f0e",
        "order": 0,
        "format": "jpeg",
        "quadrangle": "0,0,1,0,1,1,0,1",
        "post_processing_type": "color",
        "distortion_correction_enabled": true,
        "files": [{
          "type": "original",
          "md5": "d41d8cd98f00b204e9800998ecf8427e",
          "version": "1",
          "format": "jpeg"
        }],
        "created_at": "2026-09-20T14:02:11Z",
        "updated_at": "2026-09-27T10:15:00Z"
      }],
      "created_at": "2026-09-20T14:02:11Z",
      "updated_at": "2026-09-27T10:15:00Z",
      "deleted_at": null,
      "usn": 1901,
      "document_type": "document",
      "parent": null
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the rename, tag and move actions in the document editor
  • Delete a cloud document

    DELETE /v1/vault/items/{itemId} opendata

    Removes a Genius Cloud vault item. Query permanently=false soft-deletes (deleted_at set); permanently=true purges the vault entry.

    Auth: Authorization: Bearer token from POST /v1/accounts/login.

    • itemId
    • permanently
    • deleted_at
    • uid

    Illustrative example reconstructed from the app's interface — not a live capture.

    DELETE /v1/vault/items/doc_a1b2c3d4?permanently=false HTTP/1.1
    Authorization: Bearer <token>

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the document trash flow with soft- and hard-delete options
  • Refresh object-storage credentials for page images

    GET /v1/storage/tokens opendata

    Mints short-lived object-storage session credentials so the scanner can upload and download page image objects keyed per page uid and file type (default jpeg; the original file type is mandatory).

    Auth: Authorization: Bearer token from POST /v1/accounts/login.

    • access_key_id
    • secret_access_key
    • session_token
    • expiration

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/storage/tokens HTTP/1.1
    Authorization: Bearer <token>
    {
      "access_key_id": "ASIAEXAMPLEKEYID",
      "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
      "session_token": "FwoGZXIvYXdzEJr//////////wEaEXAMPLE",
      "expiration": "2026-09-27T13:05:00Z"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the handoff that lets the app move page images to and from object storage
  • Fetch Genius Cloud user

    GET /v1/accounts/profile osint

    Returns the signed-in Genius Cloud identity: uid and email used by the account screen.

    Auth: Authorization: Bearer token from POST /v1/accounts/login.

    • uid
    • email

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/accounts/profile HTTP/1.1
    Authorization: Bearer <token>
    {
      "uid": "usr_8f3c1d2e7a9b",
      "email": "[email protected]"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the account screen that shows the signed-in identity
  • Update user email

    PUT /v1/accounts/profile opendata

    Changes the Genius Cloud login email after confirming current_password and returns the updated user object.

    Auth: Authorization: Bearer token from POST /v1/accounts/login. Body requires current_password.

    • email
    • current_password
    • uid

    Illustrative example reconstructed from the app's interface — not a live capture.

    PUT /v1/accounts/profile HTTP/1.1
    Authorization: Bearer <token>
    Content-Type: application/json
    
    {
      "email": "[email protected]",
      "current_password": "hunter2-example"
    }
    {
      "uid": "usr_8f3c1d2e7a9b",
      "email": "[email protected]"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the change-email form with password confirmation
  • Delete Genius Cloud user

    DELETE /v1/accounts/profile opendata

    Permanently closes the Genius Cloud account after the user confirms their password; used by the account-deletion flow.

    Auth: Authorization: Bearer token from POST /v1/accounts/login. The DELETE body carries the account password.

    • password
    • uid
    • email

    Illustrative example reconstructed from the app's interface — not a live capture.

    DELETE /v1/accounts/profile HTTP/1.1
    Authorization: Bearer <token>
    Content-Type: application/json
    
    {
      "password": "hunter2-example"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the close-account flow with password confirmation
  • Refresh Genius Scan SDK license key

    GET /v1/licensing/keys/{keyId} opendata

    Refreshes the on-device scanning license. The query identifies the install; the response key and expiration_date gate capture features.

    Auth: None. Device and SDK identity travel as query params: device_id, sdk_version, framework, os, os_version, optional app_version, integration_mode and key_refresh.

    • keyId
    • device_id
    • sdk_version
    • framework
    • os
    • os_version
    • app_version
    • integration_mode
    • key_refresh
    • key
    • expiration_date

    Illustrative example reconstructed from the app's interface — not a live capture.

    GET /v1/licensing/keys/GS-BASE-LICENSE-KEY?device_id=3a7c9e12f04b8d11&sdk_version=5.12.0&framework=android&os=android&os_version=14&app_version=7.43.0&integration_mode=app&key_refresh=1 HTTP/1.1
    {
      "key": "GS-REFRESHED-LICENSE-KEY",
      "expiration_date": "2027-03-01T00:00:00Z"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • reconstructed from the scanner license refresh the app performs on capable devices

Data categories

  • documents
  • pages
  • account
  • sessions
  • credentials
  • identity

Where teams use this data

  • KYC packet archive from scanned IDs

    An onboarding desk pulls Genius Cloud documents tagged as identity scans, walks nested pages and original jpeg files, and stores uid, name, tags and usn so a case file can be rebuilt without re-photographing the passport or ID card.

  • Incremental document vault backup

    A records job pages the document list with the usn cursor and remaining-count flag, then uses the minted access_key_id, secret_access_key, session_token and expiration to copy page blobs keyed as pageUid-fileType.format into a long-term archive.

  • Account lifecycle and erasure

    A privacy workflow reads uid and email from the signed-in user, can rotate email with current_password, and issues a password-confirmed account delete when the customer asks to leave Genius Cloud.

  • Scanner license health for capture fleets

    Ops monitors SDK license refreshes per device_id and app_version so expiration_date is visible before capture, distortion correction and PDF export stop working on a field device.

Frequently asked questions

How does Genius Scan authenticate cloud sync?

Signup and login post email and password to /v1/accounts/register and /v1/accounts/login. The response token is sent as an Authorization: Bearer header on later vault, storage-token and profile calls. A reconnect variant posts the account uid plus password to /v1/accounts/reconnect.

What fields describe a synced Genius Scan document?

Each vault item has uid, name, tags, pages, usn, document_type (document or folder), parent, created_at, updated_at and deleted_at. Pages add order, format, quadrangle, post_processing_type, distortion_correction_enabled and files (type, md5, version, format).

Where are scanned page images stored?

GET /v1/storage/tokens returns access_key_id, secret_access_key, session_token and expiration. Page image objects are keyed per page uid and file type; the original is the mandatory file type and jpeg is the default format.

Does Genius Scan send scans to a cloud OCR API?

No. Optical character recognition runs on the device. The network data surface is cloud document sync, the user account at /v1/accounts/profile, short-lived storage tokens for page blobs, and a scanner license refresh at /v1/licensing/keys/{keyId}.

Topics

  • genius scan api
  • genius cloud sync
  • genius scan pdf scanner data api
  • genius scan bearer token
  • genius scan storage tokens
  • genius scan usn sync
  • genius scan account uid email
  • the grizzly labs scanner api

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote