Quick Start
This guide walks through creating a project, capturing a snapshot, and retrieving it.
1. Bootstrap a project
Section titled “1. Bootstrap a project”This is the only endpoint that doesn’t require authentication.
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.
2. Capture a snapshot
Section titled “2. Capture a snapshot”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"}3. Retrieve the snapshot
Section titled “3. Retrieve the snapshot”curl https://apis.jameslin.info/machine/snapshots/SNAPSHOT_ID \ -H "X-API-Key: YOUR_API_KEY"Environment variables are decrypted automatically in the response.
4. Compare two snapshots
Section titled “4. Compare two snapshots”Once you have snapshots from two different machines:
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.
Next steps
Section titled “Next steps”- Authentication — how API keys work
- Snapshots API — full endpoint reference
- Team Members — invite collaborators