Step 3 — Postman Public API Network

Discovery plumbing (secondary). This page makes the service findable by someone already searching; it does not replace pipeline work (page 00). Do it once; no paid tier, listing or upgrade (hard rule 6).

What this is: the largest human-searched API directory. Free listing via a public workspace. The workspace URL is also a required input for Step 4 (public-apis table column).

Do this

  1. Create the company Postman account (free tier) at postman.com.
  2. Create a new public workspace named ApertureAPI.
  3. Import the API: Workspace → Import → paste https://api.apertureapi.com/openapi.json.
  4. Create a collection whose FIRST request is the two-step no-account flow (form token, then reconstruct) exactly as specified in the prepared copy below — descriptions, folder names, and example bodies are all written out for you; paste them verbatim.
  5. Publish: workspace visibility → Public.
  6. Verify logged-out: open the workspace URL in a private browser window — it must load without a Postman login.

Artifact

Date Account Workspace URL Loads logged-out?

Prepared copy (paste verbatim)

Embedded verbatim from docs/discovery/submission_drafts/postman_workspace.md — the in-repo file is the source of truth.

Draft — Postman public workspace + collection

DRAFT ONLY. No Postman account has been created, no workspace published, no form submitted. The operator publishes. R9 Step 2.

Why this one is first among the drafts: the Postman collection link is a required column in the public-apis table, so this artifact is an input to the next draft, not just a listing of its own.


Workspace

Name: ApertureAPI Visibility: Public (Workspace → Options → Workspace overview → Settings → type: Public → Save) Summary (one line): Digital holographic reconstruction over HTTP — upload an interference pattern, get amplitude, phase and a depth-resolved package back.

Workspace overview text

ApertureAPI reconstructs digital holograms. You send a single intensity frame recording the interference between light scattered by an object and a reference beam; the API propagates that field back to the object plane using angular-spectrum wave optics and returns quantitative amplitude and phase — a measurement of optical path length, not a rendered image. Reconstruction is physics, not a learned model, and the pipeline is deterministic by contract.

The first request in this collection needs no account, no API key and no email address. Send it and you will have a reconstruction. Authentication exists for higher rate limits, larger fields and persisted calibration profiles, not as a gate on trying it.

Every reconstruction returns a quality_report.json alongside the data, with explicit pass / warn / fail bands per metric. Metrics the system cannot establish — absolute height accuracy, per-pixel uncertainty, repeatability — are returned as not-yet-established with a null value rather than estimated. The strongest published validation artifact is a reconstruction of an independent third-party dataset (UTIRnet, Zenodo record 8059636) whose overall band is warn; that hologram is synthetic, and no physical-target validation artifact exists yet.

Collection: "ApertureAPI — start here"

Postman's own stated bar is getting a new user "to their first 200 OK." So the collection opens on the unauthenticated path and the account flow comes later, in that order.

Request 1 — GET {{baseUrl}}/public/form_token

Description:

Mint a form token. The anonymous endpoint is gated by an HMAC-signed token instead of an API key: it is bound to your IP and User-Agent, valid 30 minutes, single use, and enforces a minimum dwell of a few seconds before it will be accepted. Run this, then wait ~4 seconds before Request 2.

Tests tab (so Request 2 is a single click):

const body = pm.response.json();
pm.collectionVariables.set("formToken", body.token);
pm.test("token issued", () => pm.expect(body.token).to.be.a("string"));

Request 2 — POST {{baseUrl}}/public/reconstruct (the first 200 OK)

Body → form-data:

Key Type Value
form_token Text {{formToken}}
file File a small sample hologram (ship one with the collection)
wavelength_um Text 0.635
pixel_pitch_um Text 1.85
z_min_mm Text 0.0
z_max_mm Text 0.2
holography_mode Text off-axis

Description:

Reconstruct a hologram with no account. Send the token from Request 1 (wait a few seconds first — submitting faster than the minimum dwell is rejected with 403). The response body is a ZIP: reconstruction rasters, quality_report.json and provenance sidecars. Save the response to a file to open it.

Limits worth knowing before you hit them: a few reconstructions per IP per hour (429), a 75 MB upload cap (413), and a centre-crop to 1920×1080 on the anonymous path. Wavelength and pixel pitch are bounds-checked as a pair and a violation returns 422 naming the constraint — nothing is silently clamped.

Request 3 — GET {{baseUrl}}/calibration/targets

The calibration catalog. Each entry is an inexpensive physical object with a certified parametric digital twin — an M1.6 hex nut for off-axis rigs, a prepared salt slide for inline. Photograph one on your own rig, send that frame as calibration_file with its calibration_target_id on Request 2, and the server fits your true pixel pitch, wavelength and sensor distance before reconstructing. No account needed for that either; nothing is persisted.

Request 4 — POST {{baseUrl}}/users/signup

Only needed once you want higher limits, larger fields or saved calibration profiles. Returns an api_key; send it as Authorization: Bearer <api_key> on /reconstruct_pdhm.

Request 5 — POST {{baseUrl}}/reconstruct_pdhm

The authenticated production path. /public/reconstruct delegates into this exact pipeline, so the results are directly comparable; what changes is the rate limit, the maximum field size and access to saved calibration profiles.

Collection variables

Variable Initial value
baseUrl https://api.apertureapi.com
formToken (empty — set by Request 1's test script)

Before publishing

Verifiable artifact when executed: the public postman.com/... workspace URL, opened logged-out, with Request 2 returning 200 and a ZIP body.


Buyer pages to pair with this page: workflow fit. Pipeline stages and KPIs: page 00.