Select a facility to manage
Pick a location from the left sidebar to view its details, or open Settings to create clients, facilities and users.
Users launch & sign in to these facilities from the desktop app.
Settings
Users
Admin creates Gateway ImageTrend users. Each user signs in and manages only their own clients, facilities and ImageTrend logins.
Login Site
The site every facility opens for sign-in. Individual facilities may override this with their own URL.
ImageTrend Elite shows the username, password and Sign In button on one page, so leave the login form URL blank to sign in directly on the site above. (Set it only if your site uses a separate login page.)
Logout
Used by the Logout session button (top-right). It clicks the user menu, then the Sign Out link, inside the live browser. Defaults match ImageTrend Elite.
Two-Factor (2FA)
When the 6-digit code screen appears, the app enters the TOTP code (2-second gap per digit). If you remember the device, the code screen is skipped until it expires β the app detects this automatically and only re-enters a code when the screen reappears.
FoxyProxy (USA)
The login screen only loads through the US proxy. Enable this so every browser launch routes through it automatically.
Clients
Add Facility
Advanced β custom field selectors (optional)
API Management
Expose Gateway ImageTrend as a service. Partner environments
authenticate with their own credentials and pull captured PDF documents
through the /v1 API.
Add a partner
A partner is an organisation that connects to the API. Each is pinned to a Gateway user, so it can only pull that user's facilities and documents.
Partners
Each partner gets one API key β a single bearer that
consumes the whole API (like OpenAI/Claude). Send it as
Authorization: Bearer gwk_β¦; no token step needed.
api_key
| Name | Scope | Status | API Key | Creds |
|---|
Credentials
Pick a partner on the Clients tab, then return here to issue credentials.
client_secret
| client_id | Label | Status | Last used |
|---|
Webhooks
Pick a partner on the Clients tab first.
When a job finishes, Gateway POSTs each captured document and a
job summary to these URLs, signed with X-Gateway-Signature.
The partner stores the secret (shown once) to verify it.
| URL | Events | Payload | Status |
|---|
Recent deliveries
| When | Event | Target | Result | Tries |
|---|
Captured documents
| Incident | Facility | Format | Scope | Captured |
|---|
Base URL
All endpoints are served under
1 Β· Authenticate β pick one
Simplest (recommended): use the partner's single API key directly as a bearer on every call β no token step. Generate it on the Clients tab.
curl /v1/facilities \ -H "Authorization: Bearer gwk_your_partner_api_key"
Alternative (OAuth): exchange a client_id/secret for a 1-hour token, then send that token as the bearer.
curl -X POST /v1/oauth/token \
-H "Content-Type: application/json" \
-d '{"grant_type":"client_credentials","client_id":"gw_β¦","client_secret":"gws_β¦"}'
# β { "access_token": "β¦" } then: Authorization: Bearer <access_token>
2 Β· Set up your configuration (no Selenium on your side)
Provision everything through the API β Gateway runs the browser; you only ever send queries.
POST /v1/clients { "name": "Mercy EMS" }
GET /v1/clients
DELETE /v1/clients/{id}
POST /v1/facilities { "client_id": 1, "name": "Mercy North",
"site_url": "β¦", "username": "β¦", "password": "β¦" }
GET /v1/facilities?client_id=1
PUT /v1/facilities/{id} (update / rotate credentials)
DELETE /v1/facilities/{id}
3 Β· Submit a report job (async, single or batch)
POST /v1/report-jobs
{ "facility_ids": [7, 8], "incident_numbers": ["2024-00123","2024-00124"],
"mode": "parallel", "client_reference": "your-ticket-id" }
β 202 { "job_id": "β¦", "status": "queued", "status_url": "/v1/report-jobs/β¦" }
4 Β· Poll the job
GET /v1/report-jobs/{job_id}
β { "status": "completed|partial|failed|running",
"counts": { "done": 2, "failed": 0, "queued": 0, "running": 0 },
"items": [ { "incident_number": "β¦", "status": "done", "document_id": "β¦" } ] }
5 Β· Fetch the PDF into your system
GET /v1/documents β list (paged)
GET /v1/documents/{document_id} β metadata + sha256
GET /v1/documents/{document_id}/content β application/pdf bytes
GET /v1/documents/{document_id}/content?encoding=base64 β JSON (save as .pdf)
Your system writes the returned bytes (or decoded base64)
straight to a .pdf file β no browser, no desktop agent needed.
6 Β· (Optional) Get results PUSHED to you
Instead of polling, register a webhook once. Gateway POSTs each captured document and a job summary to your URL when the job finishes.
POST /v1/webhooks
{ "url": "https://you.example.com/hooks/gateway",
"events": ["document.captured","job.completed"], "include": "download_url" }
β 201 { "id": 1, "secret": "whsec_β¦" } # store the secret to verify signatures
# Gateway β your URL, on completion:
POST https://you.example.com/hooks/gateway
X-Gateway-Signature: sha256=<hmac of body with your secret>
{ "event": "document.captured", "job_id": "β¦",
"document": { "document_id": "β¦", "incident_number": "β¦",
"download_url": "/v1/documents/β¦/content" } }
GET /v1/webhooks # list
POST /v1/webhooks/{id}/test # fire a ping
GET /v1/report-jobs/{job_id}/deliveries # delivery log
Verify the signature: HMAC_SHA256(secret, raw_body)
must equal the hex in X-Gateway-Signature. Set
include: "base64" to receive the PDF bytes inline.