Skip to content

Quick Start

This guide walks through creating a project, capturing a snapshot, and retrieving it.

This is the only endpoint that doesn’t require authentication.

Terminal window
curl -X POST https://apis.jameslin.info/machine/keys/bootstrap \
-H "Content-Type: application/json" \
-d '{"projectName": "my-first-project"}'

Response:

{
"projectId": "a1b2c3d4-...",
"apiKeyId": "e5f6g7h8-...",
"apiKey": "mk_1a2b3c4d5e6f...",
"message": "Store this API key securely — it will not be shown again."
}

Save the apiKey value. It’s only returned once.

Terminal window
curl -X POST https://apis.jameslin.info/machine/snapshots \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"machineName": "my-laptop",
"os": "darwin",
"arch": "arm64",
"runtimeVersions": { "node": "20.11.0", "python": "3.12.1" },
"envVars": { "NODE_ENV": "development" }
}'

Response:

{
"id": "snap-uuid-...",
"machineName": "my-laptop",
"createdAt": "2026-02-07T12:00:00.000Z"
}
Terminal window
curl https://apis.jameslin.info/machine/snapshots/SNAPSHOT_ID \
-H "X-API-Key: YOUR_API_KEY"

Environment variables are decrypted automatically in the response.

Once you have snapshots from two different machines:

Terminal window
curl -X POST https://apis.jameslin.info/machine/snapshots/compare \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"snapshotA": "SNAPSHOT_ID_1", "snapshotB": "SNAPSHOT_ID_2"}'

The response contains a structured diff of OS, architecture, runtimes, dependencies, and env var keys.