PDF Scanner app - TapScanner icon

TapScanner (pdf.tap.scanner) Data API

Tap AI · Identity

TapScanner's client splits its cloud work across a small job-pipeline API. Server-side text recognition is a multi-step flow: the app reserves a job at POST /v1/jobs/prepare, which answers with a job id and a pre-signed uploadURL for the scan, kicks off recognition at POST /v1/jobs/{id}/begin, then polls POST /v1/jobs/{id}/result until the job is done, returning the recognized text plus per-page output files that are each fetched from GET /v1/jobs/{id}/artifacts/{fileName}. A separate multipart service, POST /v1/convert/office, turns a scanned PDF into an editable DOCX, while POST /v1/licenses/redeem validates a promo redeemCode against a deviceId to unlock the premium entitlement. Every call except redemption is gated by an integrity_token header carrying a Google Play Integrity token.

TapScanner is a camera-to-PDF scanner and document editor from Tap AI whose heavy lifting is split between on-device text recognition and a set of cloud APIs. The app drives a multi-step server-side recognition pipeline (reserve a job, upload the scan, start recognition, poll for the result, then download per-page text), a document-conversion service that turns scanned PDFs into editable DOCX files, and a license-redemption call that unlocks premium features from a promo code. Every write call is gated by a Google Play Integrity token header, and the JSON payloads carry compact field names such as status, id, uploadURL, verified, redeemCode and deviceId.

Screenshots

  • PDF Scanner app - TapScanner screenshot 1
  • PDF Scanner app - TapScanner screenshot 2
  • PDF Scanner app - TapScanner screenshot 3
  • PDF Scanner app - TapScanner screenshot 4
  • PDF Scanner app - TapScanner screenshot 5
  • PDF Scanner app - TapScanner screenshot 6
  • PDF Scanner app - TapScanner screenshot 7
  • PDF Scanner app - TapScanner screenshot 8

API surface

  • OCR upload (reserve an upload slot)

    POST /v1/jobs/prepare opendata

    Reserves a recognition job and returns the pre-signed URL plus job id used to push the scanned image for server-side text recognition.

    Auth: integrity_token request header (Google Play Integrity token)

    • status
    • id
    • uploadURL

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

    POST /v1/jobs/prepare?retry=false HTTP/1.1
    integrity_token: <play-integrity-token>
    {
      "status": "ok",
      "id": "8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a",
      "uploadURL": "https://cdn.example.com/upload/8f3c1d2e..."
    }

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

    • reconstructed from the app's scan-and-recognize upload flow
    • response model carries status, id and uploadURL
  • OCR start (kick off recognition)

    POST /v1/jobs/{id}/begin opendata

    Starts text recognition for an uploaded document image and returns the job id to poll for results.

    Auth: integrity_token request header

    • status
    • id

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

    POST /v1/jobs/8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a/begin HTTP/1.1
    integrity_token: <play-integrity-token>
    {
      "status": "started",
      "id": "8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a"
    }

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

    • reconstructed from the app's recognition start step
    • job id is carried as a path segment
  • OCR status / result (poll recognized text)

    POST /v1/jobs/{id}/result opendata

    Polls a recognition job and returns the recognized text plus the list of per-page output files once recognition completes.

    Auth: integrity_token request header

    • status
    • startTimestamp
    • files
    • text

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

    POST /v1/jobs/8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a/result HTTP/1.1
    integrity_token: <play-integrity-token>
    {
      "status": "done",
      "startTimestamp": 1737456000000,
      "files": ["page_1.txt", "page_2.txt"],
      "text": "Recognized document text..."
    }

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

    • reconstructed from the app's polling loop for finished jobs
    • result model carries status, startTimestamp, files and text
  • OCR result file download

    GET /v1/jobs/{id}/artifacts/{fileName} opendata

    Downloads a single recognized page/text artifact produced by the recognition pipeline.

    Auth: integrity_token request header

    • id
    • fileName

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

    GET /v1/jobs/8f3c1d2e-7a9b-4c5e-9f0a-1b2c3d4e5f6a/artifacts/page_1.txt HTTP/1.1
    integrity_token: <play-integrity-token>
    <raw text/octet-stream body of the recognized page>

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

    • reconstructed from the app's per-page text download step
  • PDF to DOCX conversion

    POST /v1/convert/office opendata

    Uploads a scanned PDF as multipart form data and returns the converted DOCX document.

    Auth: integrity_token request header

    • integrity_token
    • file

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

    POST /v1/convert/office HTTP/1.1
    integrity_token: <play-integrity-token>
    Content-Type: multipart/form-data; boundary=----x
    
    ------x
    Content-Disposition: form-data; name="file"; filename="scan.pdf"
    Content-Type: application/pdf
    
    <binary pdf bytes>
    <binary .docx ResponseBody>

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

    • reconstructed from the app's PDF-to-DOCX export flow
    • the document is sent as multipart form data
  • Promo redeem-code verification (entitlement)

    POST /v1/licenses/redeem osint

    Validates a promotional redemption code against a device id to unlock the premium entitlement.

    Auth: none beyond the redeem code in the JSON body

    • redeemCode
    • deviceId
    • verified

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

    POST /v1/licenses/redeem HTTP/1.1
    Content-Type: application/json
    
    {
      "redeemCode": "SUMMER-DEAL-1234",
      "deviceId": "a1b2c3d4-e5f6-7890"
    }
    {
      "verified": true
    }

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

    • reconstructed from the app's promo-code upgrade flow
    • request model pairs a redeemCode with a deviceId

Data categories

  • ocr
  • document-conversion
  • entitlements
  • device-identity

Where teams use this data

  • Document-intake automation

    Back-office pipelines drive the OCR job lifecycle — reserve an upload slot, kick off recognition, poll the result — landing searchable text in the DMS without a human opening the app.

  • Bulk format conversion

    Contract and legal tooling batch-convert scans from PDF to DOCX for redlining, pushing files through the conversion endpoint and collecting editable documents.

  • Entitlement verification

    Bundle partners verify redeem codes against device ids before granting premium features, keeping promotional licenses auditable.

Frequently asked questions

How does TapScanner's server-side text recognition pipeline work?

Recognition runs as a job pipeline over three calls: POST /v1/jobs/prepare reserves an upload slot and returns a job id plus a pre-signed uploadURL, POST /v1/jobs/{id}/begin starts recognition on the uploaded scan, and POST /v1/jobs/{id}/result is polled until the status is done, returning the recognized text and the files list of per-page outputs.

How are TapScanner's API calls authenticated?

Every recognition and conversion call carries an integrity_token request header holding a Google Play Integrity token; there is no session cookie or bearer token in the flow. The one exception is POST /v1/licenses/redeem, which is gated only by the redeemCode and deviceId pair in its JSON body.

What fields does the recognition result return?

The POST /v1/jobs/{id}/result response carries status, startTimestamp, files (a list of per-page output files) and text (the recognized document text). Individual pages are then downloaded via GET /v1/jobs/{id}/artifacts/{fileName}.

How does TapScanner convert a scanned PDF to DOCX?

The app uploads the scanned PDF to POST /v1/convert/office as multipart form data with a single file part, authenticated by the same integrity_token header, and the service streams back the converted DOCX document as a binary response body.

Topics

  • tapscanner api
  • pdf.tap.scanner ocr api
  • tapscanner ocr pipeline
  • tapscanner pdf to docx api
  • tapscanner premium redeem code 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