# Strand AI > Spatial proteomics from H&E. Lattice predicts spatially resolved protein-marker maps from routine H&E, delivered as virtual mIF channels. - [Spatial proteomics from H&E](https://docs.strandai.com/introduction.md): Lattice predicts spatially resolved protein-marker maps from routine H&E, delivered as virtual mIF channels. - [Platform quickstart](https://docs.strandai.com/quickstart.md): Sign in to the Strand AI web platform, upload an authorized de-identified H&E slide, run Lattice, inspect marker layers, and download results. - [Set slide pixel size](https://docs.strandai.com/microns-per-pixel.md): Set user-reported microns per pixel when a slide's physical scale metadata is missing or incorrect. - [Supported markers](https://docs.strandai.com/markers/index.md): The protein markers Lattice predicts from H&E on the public panel, with genes and curated biology notes. - [Pricing & credits](https://docs.strandai.com/pricing.md): How Strand AI bills predictions in credits per retained tissue model-grid position and marker, how to get the exact price before submission, and when credits come back. - [Sample expiration](https://docs.strandai.com/expiration.md): Set when samples expire, restore samples from Trash within 7 days, and override the org default per sample. - [Viewer keyboard shortcuts](https://docs.strandai.com/viewer/keyboard-shortcuts.md): Keyboard shortcuts for panning, zooming, toggling layers, and controlling markers in the slide viewer. - [Security and data handling](https://docs.strandai.com/security-data-handling.md): How Strand AI stores, encrypts, retains, and deletes your data, and our commitment never to train on it without your opt-in. - [SDK quickstart](https://docs.strandai.com/sdks/quickstart.md): Create a Strand API key and predict spatially resolved protein-marker maps from H&E with Python or R. - [Python SDK](https://docs.strandai.com/sdks/python.md): Install the Strand AI Python SDK, configure an API key, upload H&E slides, submit marker predictions, and stream results as AnnData for analysis. - [R SDK](https://docs.strandai.com/sdks/r.md): Install the strandai R SDK, configure an API key, upload H&E slides, submit marker predictions, and load results as a SpatialExperiment for Bioconductor. - [Command line (strand)](https://docs.strandai.com/sdks/cli.md): Run H&E slides through Lattice from your terminal. Upload, estimate, submit, wait, cancel, inspect, and export through the Python SDK. - [MCP server](https://docs.strandai.com/mcp/overview.md): Connect any MCP-aware agent to browse samples and predict spatially resolved protein-marker maps from H&E, delivered as virtual mIF channels, inside your Strand AI organization. - [Strand AI connector for Claude](https://docs.strandai.com/mcp/claude.md): Connect Claude to Strand AI to predict spatial proteomics from H&E with Lattice and download virtual mIF channels from chat. - [Strand AI in ChatGPT](https://docs.strandai.com/mcp/chatgpt.md): What the Strand AI MCP server can and cannot do from ChatGPT: predict marker channels for slides that are already ingested, with slide upload handled elsewhere because ChatGPT's sandbox has no outbound network access. - [REST API overview](https://docs.strandai.com/api/overview.md): Reference for Strand AI REST endpoints, bearer authentication, prediction lifecycle, and errors. - [List markers](https://docs.strandai.com/api-reference/endpoint/listMarkers.md): The entitlement-scoped catalog of markers your account can request, so you can discover valid marker names upfront. Credit-free. - [List uploads](https://docs.strandai.com/api-reference/endpoint/listUploads.md): Returns non-archived uploads newest-first. Cursor-paginated; pass the prior response's `nextCursor` to fetch the next page. - [Get an upload](https://docs.strandai.com/api-reference/endpoint/getUpload.md) - [Initiate upload](https://docs.strandai.com/api-reference/endpoint/createUpload.md): Initiate a resumable upload by registering an H&E slide's filename, size, and content type, and receive a signed GCS URL to PUT the slide bytes to. - [Price or submit a prediction](https://docs.strandai.com/api-reference/endpoint/submitPrediction.md): Validate and price a prediction with dryRun: true and no side effects, or omit dryRun to reserve credits and submit the run. - [Get job](https://docs.strandai.com/api-reference/endpoint/getJob.md): Fetch a snapshot of a prediction job's status, progress, reserved credits, and result path. Useful for polling clients that do not consume the SSE stream. - [Cancel a job](https://docs.strandai.com/api-reference/endpoint/cancelJob.md): Cancels an active inference job and refunds its credit reservation. Active segmentation is owned by its fenced lifecycle and returns 409; terminal jobs return 400. - [Stream job (SSE)](https://docs.strandai.com/api-reference/endpoint/streamJob.md): Server-Sent Events stream emitting JSON snapshots of `{status, progress, resultGcsPath}` on each pg_notify. Keep-alive heartbeats every 15s. Closes on terminal status. - [Get results URL](https://docs.strandai.com/api-reference/endpoint/getJobResults.md): Returns a signed GCS URL for the OME-Zarr root metadata (`zarr.json`) plus the `resultBasePath` of the zarr store. Useful for clients that already have GCS credentials. SDK clients should generally prefer `GET /jobs/{id}/results/files/{path}` (API-key authenticated) for walking the tree. - [Download result file](https://docs.strandai.com/api-reference/endpoint/getJobResultFile.md): Proxies a single file from the OME-Zarr result store. `path` is the path within the zarr store (e.g. `zarr.json`, `CD3/zarr.json`, `CD3/c/0/0/0`). Authenticated via the same bearer API key as the rest of `/api/v1/`; org-scoped to the job. Use this when walking the zarr tree from a client that does n… - [Get an owned or public sample](https://docs.strandai.com/api-reference/endpoint/getSample.md): Resolve an org-owned sample id first, returning its curated detail and inference-job history. Otherwise resolve the same path value as a currently-public share UUID and return only public-safe detail. - [Update a sample](https://docs.strandai.com/api-reference/endpoint/patchSample.md): Atomically update any combination of an owned sample's display name, unified field values, and isotropic microns-per-pixel value. Public share ids are not patchable. OAuth callers need both `samples:read` and `samples:write` because the response includes full owned detail and job history. When count… - [Request result export](https://docs.strandai.com/api-reference/endpoint/requestResultExport.md): Select native OME-Zarr, OME-Zarr ZIP, or OME-TIFF and optional H&E/segmentation contents. - [Get result export](https://docs.strandai.com/api-reference/endpoint/getResultExport.md): Poll a format-driven result export and refresh expiring artifact URLs. - [Cell segmentation lifecycle](https://docs.strandai.com/api-reference/endpoint/sampleSegmentation.md): Discover credit-free segmentation state and latest layer artifacts for an owned sample. - [Start or retry cell segmentation](https://docs.strandai.com/api-reference/endpoint/startSampleSegmentation.md): Start or retry idempotent, credit-free segmentation for an owned ready sample. - [Get segmentation manifest](https://docs.strandai.com/api-reference/endpoint/getSegmentationManifest.md): Read the mask, cell morphology/geometry, marker-expression, and provenance contract. - [Read segmentation artifact file](https://docs.strandai.com/api-reference/endpoint/getSegmentationFile.md): Read one org-scoped mask OME-Zarr, cell morphology, marker-expression, or provenance file. - [Set sample expiration](https://docs.strandai.com/api-reference/endpoint/setSampleExpiration.md): Set a sample to expire on a specific date, set it to never expire, or clear any custom expiration and follow the org default. Caller must be the sample's creator, an org owner/admin, or a Strand AI admin. - [Set sample expiration (bulk)](https://docs.strandai.com/api-reference/endpoint/setSamplesExpirationBulk.md): All-or-nothing: if any sample fails the permission gate the whole call is rejected before any writes. Max 500 IDs per call. - [Restore sample](https://docs.strandai.com/api-reference/endpoint/restoreSample.md): Available within the 7-day Trash window until permanent deletion starts. Brings the sample back to the active list and extends its expiration so it isn't immediately re-trashed. A deletion already in progress is irreversible and returns 409. Same permission gate as the expiration endpoints. - [List samples](https://docs.strandai.com/api-reference/endpoint/listSamples.md): List the calling organization's samples, the public cohort, or both. Cursor-paginated newest-first; `all` always emits mine first and de-duplicates owned public samples in favor of the mine representation. Credit-free. - [List custom sample fields](https://docs.strandai.com/api-reference/endpoint/listSampleFields.md): Your organization's custom-field definitions, including the ids a `field` filter on List samples binds to. Credit-free. - [Stream a public sample's OME-Zarr](https://docs.strandai.com/api-reference/endpoint/getPublicSampleZarr.md): Authenticated byte proxy for a public sample's OME-Zarr store — the H&E image (`he/...`) and every pinned marker channel (`markers/{marker}/...`). The root manifest is `zarr.json`. This is the way to read the actual marker pixel data. Only the `he/` and `markers/` namespaces are served; everything e… - [Get a public sample thumbnail](https://docs.strandai.com/api-reference/endpoint/getPublicSampleThumbnail.md): Authenticated JPEG thumbnail for a public sample. Streamed through this release-keyed endpoint (never a signed GCS URL). Never reserves or spends credits. ## OpenAPI Specs - [openapi](/api-reference/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.