{"info":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","description":"<html><head></head><body><p>Trussi public API for integrations (Zapier, n8n, HubSpot, GoHighLevel, custom).</p>\n<p><strong>Auth:</strong> every request sends your key in the <code>X-API-Key</code> header (set the <code>apiKey</code> environment variable). Data is scoped to the key's account, and to its locations when the key is location-restricted.</p>\n<p><strong>Getting started:</strong> create a key under Account &gt; API Keys, grant it the scopes you need, set <code>baseUrl</code> and <code>apiKey</code> in an environment, then send any request.</p>\n<p><strong>What you can do:</strong> read 22 CRM resources; create leads (with an optional inline appointment) and appointments; upload photos and documents to projects (multipart, or JSON with a <code>fileUrl</code>); subscribe to 51 real-time webhook events.</p>\n<p><strong>Scopes:</strong> <code>projects:read</code>, <code>customers:read</code>, ... for reads; <code>leads:write</code>, <code>calendar:write</code>, <code>files:write</code>, <code>webhooks:manage</code> for writes.</p>\n<p><strong>Limits:</strong> 120 reads and 30 writes per minute per key. Over the limit you get <code>429</code> with a <code>Retry-After</code> header.</p>\n<p><strong>Retries:</strong> send an <code>Idempotency-Key</code> header on Create Lead so a retried request never creates a duplicate.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"56459385","collectionId":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","publishedId":"2sBY4SLymz","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-07-28T16:55:02.000Z"},"item":[{"name":"Account","item":[{"name":"Key introspection / connection test","id":"4e1b8560-aabe-4195-a674-711887735e7b","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/me","description":"<p>Returns the account this key belongs to and the scopes it carries.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","me"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"d0ef4b16-fdea-fcfe-341e-32fe0534e812","name":"Success","originalRequest":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/me","description":"Returns the account this key belongs to and the scopes it carries."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"account\": {\n      \"id\": \"64e0f1a2b3c4d5e6f7a8b9c0\",\n      \"name\": \"Acme Roofing\"\n    },\n    \"scopes\": [\n      \"projects:read\",\n      \"customers:read\",\n      \"leads:write\",\n      \"files:write\",\n      \"webhooks:manage\"\n    ]\n  }\n}"},{"id":"3559e844-859b-206c-3d09-a15168f34a40","name":"401 Invalid API key","originalRequest":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/me","description":"Returns the account this key belongs to and the scopes it carries."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"unauthorized\",\n    \"message\": \"Invalid or missing API key. Provide it in the X-API-Key header.\"\n  }\n}"}],"_postman_id":"4e1b8560-aabe-4195-a674-711887735e7b"},{"name":"OpenAPI spec","id":"66d78c84-b738-492f-9754-e8ce0fc605f0","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/openapi.json","description":"<p>The machine-readable OpenAPI 3 spec, generated from the same definitions the API validates against. No key needed.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","openapi.json"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"21af8365-be60-2f55-492a-8ccabfcaa75c","name":"Success (truncated)","originalRequest":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/openapi.json","description":"The machine-readable OpenAPI 3 spec, generated from the same definitions the API validates against. No key needed."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"openapi\": \"3.0.3\",\n  \"info\": {\n    \"title\": \"Trussi Public API\",\n    \"version\": \"1.0.0\"\n  },\n  \"servers\": [\n    { \"url\": \"https://my.trussi.ai\", \"description\": \"Production\" }\n  ],\n  \"paths\": {\n    \"/api/public/v1/projects\": { \"get\": { \"...\": \"full spec omitted\" } }\n  }\n}"}],"_postman_id":"66d78c84-b738-492f-9754-e8ce0fc605f0"}],"id":"96ede172-fb45-4cf7-915d-3c7df3fb2b29","_postman_id":"96ede172-fb45-4cf7-915d-3c7df3fb2b29","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Leads","item":[{"name":"Create a lead","id":"57b7fdd6-3271-403f-8b1a-778f6854bafe","request":{"method":"POST","header":[{"value":"9836c241-ee73-4209-8014-521a80011768","description":"<p>Unique value per logical request; retries with the same value replay the stored response for 24h.</p>\n","key":"Idempotency-Key"},{"value":"application/json","key":"Content-Type"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"email\": \"jane@example.com\",\n  \"phone\": \"5125550123\",\n  \"location\": \"<location id - optional if the API key has a default>\",\n  \"leadSourceId\": \"<lead source id - optional>\",\n  \"address1\": \"123 Main St\",\n  \"city\": \"Austin\",\n  \"state\": \"TX\",\n  \"zip\": \"78701\",\n  \"notes\": \"Interested in a roof inspection after the hail storm.\",\n  \"jobPriority\": \"Normal\",\n  \"appointmentStart\": \"2026-10-01T10:00:00\",\n  \"appointmentEnd\": \"2026-10-01T11:00:00\",\n  \"appointmentTitle\": \"Roof inspection\",\n  \"timezone\": \"America/Chicago\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/leads","description":"<p>Creates a new lead in the account's first pipeline stage. Location and lead source come from the payload, falling back to the API key defaults. Send an Idempotency-Key header to make retries safe. GoHighLevel-native payloads go to /api/public/v1/leads/ghl instead.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","leads"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"be2ee8ee-852c-1856-8e74-502c01de95f7","name":"Success","originalRequest":{"method":"POST","header":[{"value":"d5daad4b-9023-48b7-966b-fbcca2515e6a","description":"Unique value per logical request; retries with the same value replay the stored response for 24h.","key":"Idempotency-Key"},{"value":"application/json","key":"Content-Type"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"email\": \"jane@example.com\",\n  \"phone\": \"5125550123\",\n  \"location\": \"<location id - optional if the API key has a default>\",\n  \"leadSourceId\": \"<lead source id - optional>\",\n  \"address1\": \"123 Main St\",\n  \"city\": \"Austin\",\n  \"state\": \"TX\",\n  \"zip\": \"78701\",\n  \"notes\": \"Interested in a roof inspection after the hail storm.\",\n  \"jobPriority\": \"Normal\",\n  \"appointmentStart\": \"2026-10-01T10:00:00\",\n  \"appointmentEnd\": \"2026-10-01T11:00:00\",\n  \"appointmentTitle\": \"Roof inspection\",\n  \"timezone\": \"America/Chicago\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/leads","description":"Creates a new lead in the account's first pipeline stage. Location and lead source come from the payload, falling back to the API key defaults. Send an Idempotency-Key header to make retries safe. GoHighLevel-native payloads go to /api/public/v1/leads/ghl instead."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"name\": \"Jane Smith\",\n    \"leadSource\": \"Website\"\n  }\n}"},{"id":"5b68584b-f97a-f2a0-1178-ca8f49ad5e14","name":"400 Missing required field","originalRequest":{"method":"POST","header":[{"value":"ea7a5b78-ea8d-4514-b38a-e6a61e0d6492","description":"Unique value per logical request; retries with the same value replay the stored response for 24h.","key":"Idempotency-Key"},{"value":"application/json","key":"Content-Type"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"email\": \"jane@example.com\",\n  \"phone\": \"5125550123\",\n  \"location\": \"<location id - optional if the API key has a default>\",\n  \"leadSourceId\": \"<lead source id - optional>\",\n  \"address1\": \"123 Main St\",\n  \"city\": \"Austin\",\n  \"state\": \"TX\",\n  \"zip\": \"78701\",\n  \"notes\": \"Interested in a roof inspection after the hail storm.\",\n  \"jobPriority\": \"Normal\",\n  \"appointmentStart\": \"2026-10-01T10:00:00\",\n  \"appointmentEnd\": \"2026-10-01T11:00:00\",\n  \"appointmentTitle\": \"Roof inspection\",\n  \"timezone\": \"America/Chicago\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/leads","description":"Creates a new lead in the account's first pipeline stage. Location and lead source come from the payload, falling back to the API key defaults. Send an Idempotency-Key header to make retries safe. GoHighLevel-native payloads go to /api/public/v1/leads/ghl instead."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"invalid_body\",\n    \"message\": \"firstName is required.\"\n  }\n}"},{"id":"6439ab1e-7ab9-09ec-8633-b693dae05872","name":"409 Same Idempotency-Key still in flight","originalRequest":{"method":"POST","header":[{"value":"24316299-f90b-49bc-a4b0-9d3fe10d129d","description":"Unique value per logical request; retries with the same value replay the stored response for 24h.","key":"Idempotency-Key"},{"value":"application/json","key":"Content-Type"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Doe\",\n  \"email\": \"jane@example.com\",\n  \"phone\": \"5125550123\",\n  \"location\": \"<location id - optional if the API key has a default>\",\n  \"leadSourceId\": \"<lead source id - optional>\",\n  \"address1\": \"123 Main St\",\n  \"city\": \"Austin\",\n  \"state\": \"TX\",\n  \"zip\": \"78701\",\n  \"notes\": \"Interested in a roof inspection after the hail storm.\",\n  \"jobPriority\": \"Normal\",\n  \"appointmentStart\": \"2026-10-01T10:00:00\",\n  \"appointmentEnd\": \"2026-10-01T11:00:00\",\n  \"appointmentTitle\": \"Roof inspection\",\n  \"timezone\": \"America/Chicago\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/leads","description":"Creates a new lead in the account's first pipeline stage. Location and lead source come from the payload, falling back to the API key defaults. Send an Idempotency-Key header to make retries safe. GoHighLevel-native payloads go to /api/public/v1/leads/ghl instead."},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"request_in_flight\",\n    \"message\": \"A request with this Idempotency-Key is still being processed. Retry shortly.\"\n  }\n}"}],"_postman_id":"57b7fdd6-3271-403f-8b1a-778f6854bafe"},{"name":"Create a lead from a GoHighLevel webhook","id":"aea8374b-f364-466a-afe7-43a3235a5e26","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"contact_id\": \"ghl-contact-123\",\n  \"first_name\": \"Jane\",\n  \"last_name\": \"Doe\",\n  \"email\": \"jane@example.com\",\n  \"phone\": \"+15125550123\",\n  \"address1\": \"123 Main St\",\n  \"city\": \"Austin\",\n  \"state\": \"TX\",\n  \"postal_code\": \"78701\",\n  \"tags\": \"hail, roof\",\n  \"user\": {\n    \"email\": \"rep@yourcompany.com\",\n    \"firstName\": \"Sam\",\n    \"lastName\": \"Rep\"\n  },\n  \"calendar\": {\n    \"startTime\": \"2026-10-01T10:00:00-05:00\",\n    \"endTime\": \"2026-10-01T11:00:00-05:00\",\n    \"title\": \"Roof inspection\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/leads/ghl","description":"<p>Accepts GoHighLevel's native workflow webhook payload (snake_case, camelCase, spaced or nested keys). API key only; location and lead source come from the key defaults. A contact already in Trussi (matched by GHL contact id, phone or email) is not duplicated: an appointment in the payload is added to it, and a still-unassigned lead takes the assigned user below. The GHL assigned user is read from <code>user</code> (<code>user.email</code>, <code>user.firstName</code>, <code>user.lastName</code>), <code>assigned_to</code> / <code>assignedTo</code> / <code>Assigned To</code>, <code>assigned_user</code> / <code>Assigned User</code>, <code>assigned_user_email</code> / <code>assignedUserEmail</code>, <code>owner</code>, <code>contact.assignedTo</code>, and the same keys under <code>customData.*</code> (Webhook action key/values), and matched to an active user of the account by email first, then by full name when exactly one user has it. No match, or an ambiguous name, leaves the lead unassigned (never assigned across accounts, never to an inactive user). An assigned lead is not offered to the PM rotation.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","leads","ghl"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"fe599a29-b709-30e7-0d4c-a8a2b5b85907","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"contact_id\": \"ghl-contact-123\",\n  \"first_name\": \"Jane\",\n  \"last_name\": \"Doe\",\n  \"email\": \"jane@example.com\",\n  \"phone\": \"+15125550123\",\n  \"address1\": \"123 Main St\",\n  \"city\": \"Austin\",\n  \"state\": \"TX\",\n  \"postal_code\": \"78701\",\n  \"tags\": \"hail, roof\",\n  \"user\": {\n    \"email\": \"rep@yourcompany.com\",\n    \"firstName\": \"Sam\",\n    \"lastName\": \"Rep\"\n  },\n  \"calendar\": {\n    \"startTime\": \"2026-10-01T10:00:00-05:00\",\n    \"endTime\": \"2026-10-01T11:00:00-05:00\",\n    \"title\": \"Roof inspection\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/leads/ghl","description":"Accepts GoHighLevel's native workflow webhook payload (snake_case, camelCase, spaced or nested keys). API key only; location and lead source come from the key defaults. A contact already in Trussi (matched by GHL contact id, phone or email) is not duplicated: an appointment in the payload is added to it, and a still-unassigned lead takes the assigned user below. The GHL assigned user is read from `user` (`user.email`, `user.firstName`, `user.lastName`), `assigned_to` / `assignedTo` / `Assigned To`, `assigned_user` / `Assigned User`, `assigned_user_email` / `assignedUserEmail`, `owner`, `contact.assignedTo`, and the same keys under `customData.*` (Webhook action key/values), and matched to an active user of the account by email first, then by full name when exactly one user has it. No match, or an ambiguous name, leaves the lead unassigned (never assigned across accounts, never to an inactive user). An assigned lead is not offered to the PM rotation."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"name\": \"Jane Smith\",\n    \"leadSource\": \"GoHighLevel\",\n    \"existing\": false,\n    \"appointmentAdded\": false\n  }\n}"}],"_postman_id":"aea8374b-f364-466a-afe7-43a3235a5e26"}],"id":"fc7fb9fe-af1b-45f5-a560-7301bd9570f2","_postman_id":"fc7fb9fe-af1b-45f5-a560-7301bd9570f2","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Projects","item":[{"name":"List Projects","id":"9b281338-77ef-424a-980b-acd119c53648","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/projects?page=1&limit=25","description":"<p>Jobs and leads. A lead is a project with isUnassigned = true.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","projects"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by location id</p>\n","type":"text/plain"},"key":"location","value":""},{"disabled":true,"description":{"content":"<p>Filter by job category id</p>\n","type":"text/plain"},"key":"jobCategoryId","value":""},{"disabled":true,"description":{"content":"<p>Filter by job type id</p>\n","type":"text/plain"},"key":"jobTypeId","value":""},{"disabled":true,"description":{"content":"<p>true = only leads</p>\n","type":"text/plain"},"key":"isUnassigned","value":""}],"variable":[]}},"response":[{"id":"0d8a6faf-d451-a224-30f7-56f7316371e5","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/projects?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","projects"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"25","description":"Max 100"},{"key":"location","value":"","description":"Filter by location id","disabled":true},{"key":"jobCategoryId","value":"","description":"Filter by job category id","disabled":true},{"key":"jobTypeId","value":"","description":"Filter by job type id","disabled":true},{"key":"isUnassigned","value":"","description":"true = only leads","disabled":true}]},"description":"Jobs and leads. A lead is a project with isUnassigned = true."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n      \"name\": \"Jane Smith - Roof Replacement\",\n      \"stage\": \"Lead\",\n      \"jobPriority\": \"Normal\",\n      \"isUnassigned\": false,\n      \"location\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n      \"jobCategoryId\": \"65b1c2d3e4f5a6b7c8d9e0f1\",\n      \"jobTypeId\": \"65b1c2d3e4f5a6b7c8d9e0f2\",\n      \"jobSubtypeId\": \"65b1c2d3e4f5a6b7c8d9e0f3\",\n      \"jobSubtypes\": [\"Shingle\"],\n      \"leadSource\": \"Website\",\n      \"customerFirstName\": \"Jane\",\n      \"customerLastName\": \"Smith\",\n      \"address1\": \"1208 Maple Ave\",\n      \"city\": \"Wichita\",\n      \"state\": \"KS\",\n      \"zip\": \"67203\",\n      \"created\": \"2026-09-23T15:04:05.000Z\",\n      \"modified\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"page\": 1,\n    \"limit\": 25,\n    \"total\": 1,\n    \"pageTotal\": 1\n  }\n}"},{"id":"80022880-11e6-5243-12b1-e055c0f8cda0","name":"429 Rate limited","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/projects?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","projects"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"25","description":"Max 100"},{"key":"location","value":"","description":"Filter by location id","disabled":true},{"key":"jobCategoryId","value":"","description":"Filter by job category id","disabled":true},{"key":"jobTypeId","value":"","description":"Filter by job type id","disabled":true},{"key":"isUnassigned","value":"","description":"true = only leads","disabled":true}]},"description":"Jobs and leads. A lead is a project with isUnassigned = true."},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"},{"description":"Seconds until the window resets","key":"Retry-After","value":"13"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"rate_limited\",\n    \"message\": \"Rate limit exceeded. Please retry later.\"\n  }\n}"}],"_postman_id":"9b281338-77ef-424a-980b-acd119c53648"},{"name":"Get a Projects record by id","id":"86fe3006-54db-4661-9093-873c23a836af","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/projects/:id","description":"<p>Fetch one project or lead by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","projects",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"415271d4-f206-3799-a7dc-acc57a6a81aa","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/projects/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","projects",":id"],"variable":[{"key":"id"}]},"description":"Fetch one project or lead by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"name\": \"Jane Smith - Roof Replacement\",\n    \"stage\": \"Lead\",\n    \"jobPriority\": \"Normal\",\n    \"isUnassigned\": false,\n    \"location\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n    \"jobCategoryId\": \"65b1c2d3e4f5a6b7c8d9e0f1\",\n    \"jobTypeId\": \"65b1c2d3e4f5a6b7c8d9e0f2\",\n    \"jobSubtypeId\": \"65b1c2d3e4f5a6b7c8d9e0f3\",\n    \"jobSubtypes\": [\"Shingle\"],\n    \"leadSource\": \"Website\",\n    \"customerFirstName\": \"Jane\",\n    \"customerLastName\": \"Smith\",\n    \"address1\": \"1208 Maple Ave\",\n    \"city\": \"Wichita\",\n    \"state\": \"KS\",\n    \"zip\": \"67203\",\n    \"created\": \"2026-09-23T15:04:05.000Z\",\n    \"modified\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"},{"id":"9f42178d-917e-f923-92a6-3538d85df5c7","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/projects/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","projects",":id"],"variable":[{"key":"id"}]},"description":"Fetch one project or lead by id."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"not_found\",\n    \"message\": \"No project found with id 66f1a2b3c4d5e6f7a8b9c0d1.\"\n  }\n}"}],"_postman_id":"86fe3006-54db-4661-9093-873c23a836af"},{"name":"Upload photos to a project","id":"d6618585-308f-450a-b889-526c41af6956","request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"type":"file","key":"file","description":"<p>(Required) The file bytes. Repeat the field to upload up to 10 files (25 MB each).</p>\n"},{"type":"text","value":"damage","key":"category","description":"<p>A category slug (e.g. \"damage\", \"jobsite-before\") or full folder path, from the account's own list. Omitted files land in Photos, uncategorized.</p>\n"},{"type":"text","value":"","key":"description","description":"<p>Photo description, shown in the app.</p>\n","disabled":true},{"type":"text","value":"","key":"takenAt","description":"<p>When the photo was taken, ISO 8601.</p>\n","disabled":true},{"type":"text","value":"","key":"lat","description":"<p>Capture GPS latitude (send with lng).</p>\n","disabled":true},{"type":"text","value":"","key":"lng","description":"<p>Capture GPS longitude (send with lat).</p>\n","disabled":true}]},"url":"https://my.trussi.ai/api/public/v1/projects/:id/photos","description":"<p>Stores photos or videos (jpeg, png, gif, webp, heic/heif, mp4, mov, webm) on a project through the same pipeline as app uploads: they appear in the Photos tab, generate thumbnails, log activity, and fire the project_file.uploaded webhook event. Scope: files:write.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","projects",":id","photos"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"13de876a-d5f6-466d-d918-124fa1dabb0c","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"type":"file","key":"file","description":"(Required) The file bytes. Repeat the field to upload up to 10 files (25 MB each)."},{"type":"text","value":"damage","key":"category","description":"A category slug (e.g. \"damage\", \"jobsite-before\") or full folder path, from the account's own list. Omitted files land in Photos, uncategorized."},{"type":"text","value":"","key":"description","description":"Photo description, shown in the app.","disabled":true},{"type":"text","value":"","key":"takenAt","description":"When the photo was taken, ISO 8601.","disabled":true},{"type":"text","value":"","key":"lat","description":"Capture GPS latitude (send with lng).","disabled":true},{"type":"text","value":"","key":"lng","description":"Capture GPS longitude (send with lat).","disabled":true}]},"url":{"raw":"https://my.trussi.ai/api/public/v1/projects/:id/photos","host":["https://my.trussi.ai"],"path":["api","public","v1","projects",":id","photos"],"variable":[{"key":"id"}]},"description":"Stores photos or videos (jpeg, png, gif, webp, heic/heif, mp4, mov, webm) on a project through the same pipeline as app uploads: they appear in the Photos tab, generate thumbnails, log activity, and fire the project_file.uploaded webhook event. Scope: files:write."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"folder\": \"Photos\",\n    \"files\": [\n      {\n        \"id\": \"66f1a2b3c4d5e6f7a8b9c0f1\",\n        \"filename\": \"front-elevation.jpg\",\n        \"mimetype\": \"image/jpeg\",\n        \"size\": 482113\n      }\n    ]\n  }\n}"},{"id":"2d871b17-d73b-d19c-9619-2987ddfffe98","name":"413 File too large","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"type":"file","key":"file","description":"(Required) The file bytes. Repeat the field to upload up to 10 files (25 MB each)."},{"type":"text","value":"damage","key":"category","description":"A category slug (e.g. \"damage\", \"jobsite-before\") or full folder path, from the account's own list. Omitted files land in Photos, uncategorized."},{"type":"text","value":"","key":"description","description":"Photo description, shown in the app.","disabled":true},{"type":"text","value":"","key":"takenAt","description":"When the photo was taken, ISO 8601.","disabled":true},{"type":"text","value":"","key":"lat","description":"Capture GPS latitude (send with lng).","disabled":true},{"type":"text","value":"","key":"lng","description":"Capture GPS longitude (send with lat).","disabled":true}]},"url":{"raw":"https://my.trussi.ai/api/public/v1/projects/:id/photos","host":["https://my.trussi.ai"],"path":["api","public","v1","projects",":id","photos"],"variable":[{"key":"id"}]},"description":"Stores photos or videos (jpeg, png, gif, webp, heic/heif, mp4, mov, webm) on a project through the same pipeline as app uploads: they appear in the Photos tab, generate thumbnails, log activity, and fire the project_file.uploaded webhook event. Scope: files:write."},"status":"Payload Too Large","code":413,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"payload_too_large\",\n    \"message\": \"File exceeds the 25 MB limit.\"\n  }\n}"}],"_postman_id":"d6618585-308f-450a-b889-526c41af6956"},{"name":"Upload a photo from a URL (JSON)","id":"a35b52b5-dd86-4db2-861c-9ef0563075c5","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fileUrl\": \"https://example.com/roof-damage.jpg\",\n  \"category\": \"damage\",\n  \"description\": \"Hail damage on the north slope\",\n  \"takenAt\": \"2026-09-20T15:30:00Z\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/projects/:id/photos","description":"<p>Same endpoint, JSON form: Trussi fetches the file from a public URL (25 MB max, no redirects). This is how Zapier and n8n hand over files. Use /documents for PDFs and Office files. Scope: files:write.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","projects",":id","photos"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"7f9e9aae-f3a9-df3e-e6bc-40d7de36a87e","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fileUrl\": \"https://example.com/roof-damage.jpg\",\n  \"category\": \"damage\",\n  \"description\": \"Hail damage on the north slope\",\n  \"takenAt\": \"2026-09-20T15:30:00Z\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://my.trussi.ai/api/public/v1/projects/:id/photos","host":["https://my.trussi.ai"],"path":["api","public","v1","projects",":id","photos"],"variable":[{"key":"id"}]},"description":"Same endpoint, JSON form: Trussi fetches the file from a public URL (25 MB max, no redirects). This is how Zapier and n8n hand over files. Use /documents for PDFs and Office files. Scope: files:write."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"folder\": \"Photos\",\n    \"files\": [\n      {\n        \"id\": \"66f1a2b3c4d5e6f7a8b9c0f1\",\n        \"filename\": \"front-elevation.jpg\",\n        \"mimetype\": \"image/jpeg\",\n        \"size\": 482113\n      }\n    ]\n  }\n}"},{"id":"fe0490e8-7de6-0541-b5f5-19bdcb7624a9","name":"400 fileUrl not fetchable","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"fileUrl\": \"https://example.com/roof-damage.jpg\",\n  \"category\": \"damage\",\n  \"description\": \"Hail damage on the north slope\",\n  \"takenAt\": \"2026-09-20T15:30:00Z\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://my.trussi.ai/api/public/v1/projects/:id/photos","host":["https://my.trussi.ai"],"path":["api","public","v1","projects",":id","photos"],"variable":[{"key":"id"}]},"description":"Same endpoint, JSON form: Trussi fetches the file from a public URL (25 MB max, no redirects). This is how Zapier and n8n hand over files. Use /documents for PDFs and Office files. Scope: files:write."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"invalid_body\",\n    \"message\": \"fileUrl responded with HTTP 404.\"\n  }\n}"}],"_postman_id":"a35b52b5-dd86-4db2-861c-9ef0563075c5"},{"name":"Upload documents to a project","id":"e5e075ed-9183-4f16-95ab-7a4cde9d6fd5","request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"description":"<p>(Required) The file bytes (pdf, doc/docx, xls/xlsx). Repeat the field to upload up to 10 files (25 MB each).</p>\n","key":"file","type":"file"},{"value":"permits","type":"text","description":"<p>A category slug (e.g. \"permits\", \"jobpaperwork\") or full folder path, from the account's own list. Omitted files land in Documents, uncategorized.</p>\n","key":"category"}]},"url":"https://my.trussi.ai/api/public/v1/projects/:id/documents","description":"<p>Stores documents (pdf, doc/docx, xls/xlsx) on a project. They appear in the Documents tab, log activity, and fire the project_file.uploaded webhook event. Also accepts JSON with a fileUrl, like the photos endpoint. Scope: files:write.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","projects",":id","documents"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"bd11774a-0727-d239-97aa-8e1caee678f9","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"description":"(Required) The file bytes (pdf, doc/docx, xls/xlsx). Repeat the field to upload up to 10 files (25 MB each).","key":"file","type":"file"},{"value":"permits","type":"text","description":"A category slug (e.g. \"permits\", \"jobpaperwork\") or full folder path, from the account's own list. Omitted files land in Documents, uncategorized.","key":"category"}]},"url":{"raw":"https://my.trussi.ai/api/public/v1/projects/:id/documents","host":["https://my.trussi.ai"],"path":["api","public","v1","projects",":id","documents"],"variable":[{"key":"id"}]},"description":"Stores documents (pdf, doc/docx, xls/xlsx) on a project. They appear in the Documents tab, log activity, and fire the project_file.uploaded webhook event. Also accepts JSON with a fileUrl, like the photos endpoint. Scope: files:write."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"folder\": \"Documents\",\n    \"files\": [\n      {\n        \"id\": \"66f1a2b3c4d5e6f7a8b9c0f2\",\n        \"filename\": \"signed-contract.pdf\",\n        \"mimetype\": \"application/pdf\",\n        \"size\": 218734\n      }\n    ]\n  }\n}"}],"_postman_id":"e5e075ed-9183-4f16-95ab-7a4cde9d6fd5"}],"id":"9ddc1a7b-7dcc-4dbf-b017-c90a3ee8f39b","_postman_id":"9ddc1a7b-7dcc-4dbf-b017-c90a3ee8f39b","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Customers","item":[{"name":"List Customers","id":"5ecd2718-4e72-44ed-9278-29929fcc563e","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/customers?page=1&limit=25","description":"<p>Customer contact records. Financial balances are intentionally omitted. Filter by email or phone to find a customer.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","customers"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Exact-match email lookup</p>\n","type":"text/plain"},"key":"emailAddresses","value":""},{"disabled":true,"description":{"content":"<p>Exact-match phone lookup (digits only)</p>\n","type":"text/plain"},"key":"phoneNumbers","value":""}],"variable":[]}},"response":[{"id":"69b12921-10e4-b838-b127-fee330abb7d2","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/customers?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","customers"],"query":[{"value":"1","key":"page"},{"description":"Max 100","value":"25","key":"limit"},{"description":"Exact-match email lookup","value":"","key":"emailAddresses","disabled":true},{"description":"Exact-match phone lookup (digits only)","value":"","key":"phoneNumbers","disabled":true}]},"description":"Customer contact records. Financial balances are intentionally omitted. Filter by email or phone to find a customer."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0d2\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"companyName\": null,\n      \"emailAddresses\": [\"jane.smith@example.com\"],\n      \"phoneNumbers\": [\"+13165550142\"],\n      \"created\": \"2026-09-23T15:04:05.000Z\",\n      \"modified\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"page\": 1,\n    \"limit\": 25,\n    \"total\": 1,\n    \"pageTotal\": 1\n  }\n}"}],"_postman_id":"5ecd2718-4e72-44ed-9278-29929fcc563e"},{"name":"Get a Customers record by id","id":"bb4ae447-7209-402e-b7c3-004f6981cb95","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/customers/:id","description":"<p>Fetch one customer by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","customers",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"5389d30f-07c4-8ce7-c6bc-ddcd2da0e123","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/customers/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","customers",":id"],"variable":[{"key":"id"}]},"description":"Fetch one customer by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0d2\",\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"companyName\": null,\n    \"emailAddresses\": [\"jane.smith@example.com\"],\n    \"phoneNumbers\": [\"+13165550142\"],\n    \"created\": \"2026-09-23T15:04:05.000Z\",\n    \"modified\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"bb4ae447-7209-402e-b7c3-004f6981cb95"}],"id":"4db193a5-f714-490d-9a36-d6b60789923d","_postman_id":"4db193a5-f714-490d-9a36-d6b60789923d","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Locations","item":[{"name":"List Locations","id":"cafcc229-796e-407e-b232-b7d1f7181756","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/locations?page=1&limit=25","description":"<p>Business locations for the account.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","locations"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"99fadf32-c105-c3b7-3f9f-e3579d6efcc7","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/locations?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","locations"],"query":[{"value":"1","key":"page"},{"description":"Max 100","value":"25","key":"limit"}]},"description":"Business locations for the account."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n      \"name\": \"Wichita\",\n      \"phone\": \"+13165550100\",\n      \"email\": \"office@acmeroofing.example\",\n      \"timezone\": \"America/Chicago\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": {\n    \"page\": 1,\n    \"limit\": 25,\n    \"total\": 1,\n    \"pageTotal\": 1\n  }\n}"}],"_postman_id":"cafcc229-796e-407e-b232-b7d1f7181756"},{"name":"Get a Locations record by id","id":"2fa5dec9-f520-41c8-b999-8834ae476a08","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/locations/:id","description":"<p>Fetch one location by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","locations",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"af98257d-b99e-05be-69ea-372011ae11e8","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/locations/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","locations",":id"],"variable":[{"key":"id"}]},"description":"Fetch one location by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n    \"name\": \"Wichita\",\n    \"phone\": \"+13165550100\",\n    \"email\": \"office@acmeroofing.example\",\n    \"timezone\": \"America/Chicago\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"2fa5dec9-f520-41c8-b999-8834ae476a08"}],"id":"a3e0de8a-e26a-4b12-9726-4a40c9acdb5c","_postman_id":"a3e0de8a-e26a-4b12-9726-4a40c9acdb5c","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Branches","item":[{"name":"List Branches","id":"e40a61df-4012-4f45-84bd-25b7a57c19a6","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/branches?page=1&limit=25","description":"<p>Branches within the account.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","branches"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by location id</p>\n","type":"text/plain"},"key":"location","value":""}],"variable":[]}},"response":[{"id":"8439f284-513e-a7b5-3f47-f104617ffb22","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/branches?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","branches"],"query":[{"value":"1","key":"page"},{"description":"Max 100","value":"25","key":"limit"},{"description":"Filter by location id","value":"","key":"location","disabled":true}]},"description":"Branches within the account."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a1\",\n      \"name\": \"East Branch\",\n      \"location\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"e40a61df-4012-4f45-84bd-25b7a57c19a6"},{"name":"Get a Branches record by id","id":"01fc9705-bf09-465b-a52d-f5b95ad3502c","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/branches/:id","description":"<p>Fetch one branch by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","branches",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"19e46945-bde7-0cc5-f91d-b7b5882eca18","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/branches/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","branches",":id"],"variable":[{"key":"id"}]},"description":"Fetch one branch by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a1\",\n    \"name\": \"East Branch\",\n    \"location\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"01fc9705-bf09-465b-a52d-f5b95ad3502c"}],"id":"74264e6d-1500-4232-b268-d6ff638d0ee9","_postman_id":"74264e6d-1500-4232-b268-d6ff638d0ee9","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Lead Sources","item":[{"name":"List Lead Sources","id":"3d7d9c66-71b2-4a3c-8776-1c9b0be34bb6","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/lead-sources?page=1&limit=25","description":"<p>Configured lead sources and their categories.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","lead-sources"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by parent lead-source category id</p>\n","type":"text/plain"},"key":"parent","value":""}],"variable":[]}},"response":[{"id":"ef5f7549-bd4c-4175-428a-d5512474c4af","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/lead-sources?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","lead-sources"],"query":[{"key":"page","value":"1"},{"key":"limit","description":"Max 100","value":"25"},{"key":"parent","description":"Filter by parent lead-source category id","value":"","disabled":true}]},"description":"Configured lead sources and their categories."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a2\",\n      \"name\": \"Website\",\n      \"parent\": null,\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"3d7d9c66-71b2-4a3c-8776-1c9b0be34bb6"},{"name":"Get a Lead Sources record by id","id":"3fe154c9-9a4e-4714-a063-71cb439236e9","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/lead-sources/:id","description":"<p>Fetch one lead source by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","lead-sources",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"e536e5bc-4fe0-b692-28db-224a70562609","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/lead-sources/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","lead-sources",":id"],"variable":[{"key":"id"}]},"description":"Fetch one lead source by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a2\",\n    \"name\": \"Website\",\n    \"parent\": null,\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"3fe154c9-9a4e-4714-a063-71cb439236e9"}],"id":"d750b6c6-a513-4f35-b8d8-09486909d59b","_postman_id":"d750b6c6-a513-4f35-b8d8-09486909d59b","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Calendar Events","item":[{"name":"List Calendar Events","id":"34241287-b9c6-4ed9-a4f6-d1d9326c16f9","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/calendar-events?page=1&limit=25","description":"<p>Appointments and scheduled events.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","calendar-events"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by project id</p>\n","type":"text/plain"},"key":"project","value":""},{"disabled":true,"description":{"content":"<p>Filter by event type</p>\n","type":"text/plain"},"key":"type","value":""}],"variable":[]}},"response":[{"id":"433d09c2-1b80-a756-7976-78f1be9dee88","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/calendar-events?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","calendar-events"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"25","description":"Max 100"},{"key":"project","value":"","description":"Filter by project id","disabled":true},{"key":"type","value":"","description":"Filter by event type","disabled":true}]},"description":"Appointments and scheduled events."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a3\",\n      \"title\": \"Roof inspection\",\n      \"type\": \"appointment\",\n      \"start\": \"2026-09-24T15:00:00.000Z\",\n      \"end\": \"2026-09-24T16:00:00.000Z\",\n      \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n      \"location\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"34241287-b9c6-4ed9-a4f6-d1d9326c16f9"},{"name":"Get a Calendar Events record by id","id":"59421e68-2258-41d4-a17d-c2af12a60f1c","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/calendar-events/:id","description":"<p>Fetch one calendar event by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","calendar-events",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"30211b3c-7141-5693-3196-724418595c29","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/calendar-events/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","calendar-events",":id"],"variable":[{"key":"id"}]},"description":"Fetch one calendar event by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a3\",\n    \"title\": \"Roof inspection\",\n    \"type\": \"appointment\",\n    \"start\": \"2026-09-24T15:00:00.000Z\",\n    \"end\": \"2026-09-24T16:00:00.000Z\",\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"location\": \"65a0b1c2d3e4f5a6b7c8d9e0\",\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"59421e68-2258-41d4-a17d-c2af12a60f1c"},{"name":"Add an appointment to a project or lead","id":"f2718de1-1b27-4db0-be77-18ffbc2c9e8c","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"project\": \"<project id>\",\n  \"appointmentStart\": \"2026-10-01T14:00:00\",\n  \"appointmentEnd\": \"2026-10-01T15:00:00\",\n  \"appointmentTitle\": \"Adjuster meeting\",\n  \"purpose\": \"adjuster_meeting\",\n  \"description\": \"Meet the adjuster on site.\",\n  \"source\": \"Angi\",\n  \"timezone\": \"America/Chicago\",\n  \"assignedTo\": \"<user id - optional; they are notified>\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/appointments","description":"<p>Attaches an appointment to an existing project. The assignee (if any) is notified in Trussi and the appointment syncs to their connected Google Calendar, exactly as when it is booked in the app. Scope: calendar:write.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","appointments"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"1db326bf-fbfb-bd74-f33f-b1b0f59442b0","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"project\": \"<project id>\",\n  \"appointmentStart\": \"2026-10-01T14:00:00\",\n  \"appointmentEnd\": \"2026-10-01T15:00:00\",\n  \"appointmentTitle\": \"Adjuster meeting\",\n  \"purpose\": \"adjuster_meeting\",\n  \"description\": \"Meet the adjuster on site.\",\n  \"source\": \"Angi\",\n  \"timezone\": \"America/Chicago\",\n  \"assignedTo\": \"<user id - optional; they are notified>\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/appointments","description":"Attaches an appointment to an existing project. The assignee (if any) is notified in Trussi and the appointment syncs to their connected Google Calendar, exactly as when it is booked in the app. Scope: calendar:write."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a3\",\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"title\": \"Roof inspection\",\n    \"purpose\": \"Inspection\",\n    \"source\": \"api\",\n    \"start\": \"2026-09-24T15:00:00.000Z\",\n    \"end\": \"2026-09-24T16:00:00.000Z\",\n    \"assignedTo\": \"65c3d4e5f6a7b8c9d0e1f2a3\"\n  }\n}"},{"id":"544002f8-c425-70f1-045a-a229486914ef","name":"404 Project not found","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"project\": \"<project id>\",\n  \"appointmentStart\": \"2026-10-01T14:00:00\",\n  \"appointmentEnd\": \"2026-10-01T15:00:00\",\n  \"appointmentTitle\": \"Adjuster meeting\",\n  \"purpose\": \"adjuster_meeting\",\n  \"description\": \"Meet the adjuster on site.\",\n  \"source\": \"Angi\",\n  \"timezone\": \"America/Chicago\",\n  \"assignedTo\": \"<user id - optional; they are notified>\"\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/appointments","description":"Attaches an appointment to an existing project. The assignee (if any) is notified in Trussi and the appointment syncs to their connected Google Calendar, exactly as when it is booked in the app. Scope: calendar:write."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"not_found\",\n    \"message\": \"No project found with id 66f1a2b3c4d5e6f7a8b9c0d1.\"\n  }\n}"}],"_postman_id":"f2718de1-1b27-4db0-be77-18ffbc2c9e8c"}],"id":"f1d8a486-1a7b-43e5-9869-eab3439c51b2","_postman_id":"f1d8a486-1a7b-43e5-9869-eab3439c51b2","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Project Comments","item":[{"name":"List Project Comments","id":"cbf4dee1-24ee-4a80-8101-e8e1e0d584ca","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/project-comments?page=1&limit=25","description":"<p>Comments and activity notes on projects.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","project-comments"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by project id</p>\n","type":"text/plain"},"key":"project","value":""},{"disabled":true,"description":{"content":"<p>Filter by comment type</p>\n","type":"text/plain"},"key":"type","value":""}],"variable":[]}},"response":[{"id":"043871d7-b9aa-ce5f-d1b9-e87585958f31","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/project-comments?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","project-comments"],"query":[{"value":"1","key":"page"},{"value":"25","description":"Max 100","key":"limit"},{"value":"","description":"Filter by project id","key":"project","disabled":true},{"value":"","description":"Filter by comment type","key":"type","disabled":true}]},"description":"Comments and activity notes on projects."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a4\",\n      \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n      \"value\": \"Customer approved the estimate.\",\n      \"type\": \"crm\",\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"cbf4dee1-24ee-4a80-8101-e8e1e0d584ca"},{"name":"Get a Project Comments record by id","id":"4029fb5b-6abf-40cc-9680-3a3ae61c116f","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/project-comments/:id","description":"<p>Fetch one project comment by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","project-comments",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"520b5b43-2753-b3b0-3c1e-d7a1a4297932","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/project-comments/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","project-comments",":id"],"variable":[{"key":"id"}]},"description":"Fetch one project comment by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a4\",\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"value\": \"Customer approved the estimate.\",\n    \"type\": \"crm\",\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"4029fb5b-6abf-40cc-9680-3a3ae61c116f"}],"id":"6e55936f-93f3-4225-a12b-e37feeba7484","_postman_id":"6e55936f-93f3-4225-a12b-e37feeba7484","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Worksheets","item":[{"name":"List Worksheets","id":"b7ced869-15f7-41b5-8d0d-6c791e696826","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/worksheets?page=1&limit=25","description":"<p>Project worksheets. Internal cost and margin fields are omitted.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","worksheets"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by project id</p>\n","type":"text/plain"},"key":"project","value":""}],"variable":[]}},"response":[{"id":"8756785c-a69f-45a4-9aa5-c331c18fd97a","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/worksheets?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","worksheets"],"query":[{"key":"page","value":"1"},{"description":"Max 100","key":"limit","value":"25"},{"description":"Filter by project id","key":"project","value":"","disabled":true}]},"description":"Project worksheets. Internal cost and margin fields are omitted."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a5\",\n      \"name\": \"Base worksheet\",\n      \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n      \"status\": \"Approved\",\n      \"created\": \"2026-09-23T15:04:05.000Z\",\n      \"modified\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"b7ced869-15f7-41b5-8d0d-6c791e696826"},{"name":"Get a Worksheets record by id","id":"a038cb4c-ed18-43c7-a66f-651391be1ba8","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/worksheets/:id","description":"<p>Fetch one worksheet by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","worksheets",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"19f8ec0a-1658-342b-eb30-0679a9dabfe0","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/worksheets/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","worksheets",":id"],"variable":[{"key":"id"}]},"description":"Fetch one worksheet by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a5\",\n    \"name\": \"Base worksheet\",\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"status\": \"Approved\",\n    \"created\": \"2026-09-23T15:04:05.000Z\",\n    \"modified\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"a038cb4c-ed18-43c7-a66f-651391be1ba8"}],"id":"30747620-6895-4615-9ca3-66e103e696c4","_postman_id":"30747620-6895-4615-9ca3-66e103e696c4","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Supplements","item":[{"name":"List Supplements","id":"755bd84c-a90f-4078-aa86-943ba3207cf1","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/supplements?page=1&limit=25","description":"<p>Project supplements.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","supplements"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by project id</p>\n","type":"text/plain"},"key":"project","value":""}],"variable":[]}},"response":[{"id":"c7858684-10bd-42ef-f85f-084c5cf47dac","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/supplements?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","supplements"],"query":[{"value":"1","key":"page"},{"description":"Max 100","value":"25","key":"limit"},{"description":"Filter by project id","value":"","key":"project","disabled":true}]},"description":"Project supplements."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a6\",\n      \"name\": \"Supplement #1\",\n      \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n      \"status\": \"Created\",\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"755bd84c-a90f-4078-aa86-943ba3207cf1"},{"name":"Get a Supplements record by id","id":"e49c075a-3414-41e1-99e9-c0ad05fb3ca1","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/supplements/:id","description":"<p>Fetch one supplement by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","supplements",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"2f669f79-fe71-9610-a1dc-f8b66e9e37c9","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/supplements/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","supplements",":id"],"variable":[{"key":"id"}]},"description":"Fetch one supplement by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a6\",\n    \"name\": \"Supplement #1\",\n    \"project\": \"66f1a2b3c4d5e6f7a8b9c0d1\",\n    \"status\": \"Created\",\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"e49c075a-3414-41e1-99e9-c0ad05fb3ca1"}],"id":"149d9e05-fdd5-40df-b385-09c2e4528f64","_postman_id":"149d9e05-fdd5-40df-b385-09c2e4528f64","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Quote Templates","item":[{"name":"List Quote Templates","id":"03f15a79-34da-4124-9066-3de11b2aeb8b","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/quote-templates?page=1&limit=25","description":"<p>Reusable quote templates.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","quote-templates"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"b1dff230-126a-ffe3-f3cb-f09105d5c0f5","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/quote-templates?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","quote-templates"],"query":[{"key":"page","value":"1"},{"description":"Max 100","key":"limit","value":"25"}]},"description":"Reusable quote templates."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a7\",\n      \"name\": \"Standard Shingle Quote\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"03f15a79-34da-4124-9066-3de11b2aeb8b"},{"name":"Get a Quote Templates record by id","id":"7abfa636-c569-462c-b6d1-32306608b193","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/quote-templates/:id","description":"<p>Fetch one quote template by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","quote-templates",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"b222f3d6-a8ad-717e-9794-b829e3ea6a8f","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/quote-templates/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","quote-templates",":id"],"variable":[{"key":"id"}]},"description":"Fetch one quote template by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a7\",\n    \"name\": \"Standard Shingle Quote\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"7abfa636-c569-462c-b6d1-32306608b193"}],"id":"b32aa237-7b1f-4190-85be-3da7996a651f","_postman_id":"b32aa237-7b1f-4190-85be-3da7996a651f","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Items","item":[{"name":"List Items","id":"d2602201-2898-4a1d-9960-eb5d82b1dd65","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/items?page=1&limit=25","description":"<p>Line-item catalog.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","items"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"16869aae-9395-406d-ec1d-832cb163a6f5","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/items?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","items"],"query":[{"value":"1","key":"page"},{"description":"Max 100","value":"25","key":"limit"}]},"description":"Line-item catalog."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a8\",\n      \"name\": \"Architectural Shingles\",\n      \"description\": \"Architectural shingles, 3 bundles per square\",\n      \"unitOfMeasure\": \"66f1a2b3c4d5e6f7a8b9c0a9\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"d2602201-2898-4a1d-9960-eb5d82b1dd65"},{"name":"Get a Items record by id","id":"83b0de1f-bef9-4df0-9321-5e6e54367953","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/items/:id","description":"<p>Fetch one catalog item by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","items",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"0332e246-97a6-4a8e-f0aa-433f81f70a7a","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/items/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","items",":id"],"variable":[{"key":"id"}]},"description":"Fetch one catalog item by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a8\",\n    \"name\": \"Architectural Shingles\",\n    \"description\": \"Architectural shingles, 3 bundles per square\",\n    \"unitOfMeasure\": \"66f1a2b3c4d5e6f7a8b9c0a9\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"83b0de1f-bef9-4df0-9321-5e6e54367953"}],"id":"4be41af4-6e2e-46ec-8026-8c0aef6ea6d0","_postman_id":"4be41af4-6e2e-46ec-8026-8c0aef6ea6d0","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Units of Measure","item":[{"name":"List Units of Measure","id":"a66eb2bc-afda-45c4-a20f-f39a744a601a","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/units-of-measure?page=1&limit=25","description":"<p>Units of measure used across the catalog.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","units-of-measure"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"b7240737-5d1e-13b1-3d9a-d4797b0cc71c","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/units-of-measure?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","units-of-measure"],"query":[{"value":"1","key":"page"},{"description":"Max 100","value":"25","key":"limit"}]},"description":"Units of measure used across the catalog."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0a9\",\n      \"name\": \"Square\",\n      \"abbreviation\": \"SQ\",\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"a66eb2bc-afda-45c4-a20f-f39a744a601a"},{"name":"Get a Units of Measure record by id","id":"63876c29-31b1-4f32-9a6a-613c368bf60f","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/units-of-measure/:id","description":"<p>Fetch one unit of measure by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","units-of-measure",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"9d293b5d-b88c-05b1-bc51-94d655c94ab8","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/units-of-measure/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","units-of-measure",":id"],"variable":[{"key":"id"}]},"description":"Fetch one unit of measure by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0a9\",\n    \"name\": \"Square\",\n    \"abbreviation\": \"SQ\",\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"63876c29-31b1-4f32-9a6a-613c368bf60f"}],"id":"d06e4cc9-1f2d-417f-ba71-8de1bb9e1ff1","_postman_id":"d06e4cc9-1f2d-417f-ba71-8de1bb9e1ff1","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Trades","item":[{"name":"List Trades","id":"683c36ab-cf93-455e-9d98-e17eda5ff76e","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/trades?page=1&limit=25","description":"<p>Trade types offered by the account.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","trades"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"cf3e49eb-14b1-86b0-af51-3ef4fe967b0f","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/trades?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","trades"],"query":[{"key":"page","value":"1"},{"key":"limit","description":"Max 100","value":"25"}]},"description":"Trade types offered by the account."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0b1\",\n      \"name\": \"Roofing\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"683c36ab-cf93-455e-9d98-e17eda5ff76e"},{"name":"Get a Trades record by id","id":"8d4d6b60-d353-4a0e-afc9-46773b2ede8d","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/trades/:id","description":"<p>Fetch one trade by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","trades",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"d412ed03-4ad5-a480-29a0-a76602b191b3","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/trades/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","trades",":id"],"variable":[{"key":"id"}]},"description":"Fetch one trade by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0b1\",\n    \"name\": \"Roofing\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"8d4d6b60-d353-4a0e-afc9-46773b2ede8d"}],"id":"c4615c69-649d-4831-80cc-bfbdbf25f725","_postman_id":"c4615c69-649d-4831-80cc-bfbdbf25f725","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Job Categories","item":[{"name":"List Job Categories","id":"59266019-26b9-4279-9ffd-379f5fe91b8b","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/job-categories?page=1&limit=25","description":"<p>Top-level job categories.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","job-categories"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"dd2260b9-36cf-95cf-0e1f-a40e0eb25821","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/job-categories?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","job-categories"],"query":[{"value":"1","key":"page"},{"description":"Max 100","value":"25","key":"limit"}]},"description":"Top-level job categories."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"65b1c2d3e4f5a6b7c8d9e0f1\",\n      \"name\": \"Residential\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"59266019-26b9-4279-9ffd-379f5fe91b8b"},{"name":"Get a Job Categories record by id","id":"6a68ea87-4b06-4405-94fa-5a1d577f57d4","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/job-categories/:id","description":"<p>Fetch one job category by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","job-categories",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"1db7f5ce-e471-b80d-9fd0-96e2d1d01ef3","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/job-categories/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","job-categories",":id"],"variable":[{"key":"id"}]},"description":"Fetch one job category by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"65b1c2d3e4f5a6b7c8d9e0f1\",\n    \"name\": \"Residential\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"6a68ea87-4b06-4405-94fa-5a1d577f57d4"}],"id":"bad987a4-e690-467f-aff6-ea29b91317dd","_postman_id":"bad987a4-e690-467f-aff6-ea29b91317dd","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Job Types","item":[{"name":"List Job Types","id":"be694514-4b97-4b57-a8be-68f1988ddd78","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/job-types?page=1&limit=25","description":"<p>Job types within a category.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","job-types"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by category</p>\n","type":"text/plain"},"key":"category","value":""},{"disabled":true,"description":{"content":"<p>Filter by job category id</p>\n","type":"text/plain"},"key":"jobCategoryId","value":""}],"variable":[]}},"response":[{"id":"fdaea37a-282b-55af-d2ae-a1d938720821","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/job-types?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","job-types"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"25","description":"Max 100"},{"key":"category","value":"","description":"Filter by category","disabled":true},{"key":"jobCategoryId","value":"","description":"Filter by job category id","disabled":true}]},"description":"Job types within a category."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"65b1c2d3e4f5a6b7c8d9e0f2\",\n      \"name\": \"Retail\",\n      \"jobCategoryId\": \"65b1c2d3e4f5a6b7c8d9e0f1\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"be694514-4b97-4b57-a8be-68f1988ddd78"},{"name":"Get a Job Types record by id","id":"b8aa36a2-3827-4072-b4e1-d1b5c39306f6","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/job-types/:id","description":"<p>Fetch one job type by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","job-types",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"3485e0cc-af78-0ee3-7480-f19889ea3e6c","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/job-types/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","job-types",":id"],"variable":[{"key":"id"}]},"description":"Fetch one job type by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"65b1c2d3e4f5a6b7c8d9e0f2\",\n    \"name\": \"Retail\",\n    \"jobCategoryId\": \"65b1c2d3e4f5a6b7c8d9e0f1\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"b8aa36a2-3827-4072-b4e1-d1b5c39306f6"}],"id":"765684c7-48e0-4215-9d42-1b32c057e309","_postman_id":"765684c7-48e0-4215-9d42-1b32c057e309","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Job Subtypes","item":[{"name":"List Job Subtypes","id":"2d7fa68b-925b-4194-bc43-64d72733afd1","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/job-subtypes?page=1&limit=25","description":"<p>Job subtypes within a job type.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","job-subtypes"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by job type id</p>\n","type":"text/plain"},"key":"jobTypeId","value":""}],"variable":[]}},"response":[{"id":"9b563682-9ef4-65bd-3646-886fca1eb5ee","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/job-subtypes?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","job-subtypes"],"query":[{"key":"page","value":"1"},{"description":"Max 100","key":"limit","value":"25"},{"description":"Filter by job type id","key":"jobTypeId","value":"","disabled":true}]},"description":"Job subtypes within a job type."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"65b1c2d3e4f5a6b7c8d9e0f3\",\n      \"name\": \"Shingle\",\n      \"jobTypeId\": \"65b1c2d3e4f5a6b7c8d9e0f2\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"2d7fa68b-925b-4194-bc43-64d72733afd1"},{"name":"Get a Job Subtypes record by id","id":"0cd83728-c8e7-40fc-8ca2-f2b684c9f82a","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/job-subtypes/:id","description":"<p>Fetch one job subtype by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","job-subtypes",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"69e80e9a-b7f6-ae0b-a200-319fe86a3987","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/job-subtypes/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","job-subtypes",":id"],"variable":[{"key":"id"}]},"description":"Fetch one job subtype by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"65b1c2d3e4f5a6b7c8d9e0f3\",\n    \"name\": \"Shingle\",\n    \"jobTypeId\": \"65b1c2d3e4f5a6b7c8d9e0f2\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"0cd83728-c8e7-40fc-8ca2-f2b684c9f82a"}],"id":"002361e9-a7c9-4f78-9790-bd1ed0aca8ab","_postman_id":"002361e9-a7c9-4f78-9790-bd1ed0aca8ab","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Suppliers","item":[{"name":"List Suppliers","id":"7ce463ae-e9a0-45dc-b652-29aed9033d7f","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/suppliers?page=1&limit=25","description":"<p>Suppliers configured for the account.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","suppliers"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"4ee9720e-a8e0-b0c7-4384-50b5d0db1e50","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/suppliers?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","suppliers"],"query":[{"key":"page","value":"1"},{"description":"Max 100","key":"limit","value":"25"}]},"description":"Suppliers configured for the account."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0b2\",\n      \"name\": \"ABC Supply\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"7ce463ae-e9a0-45dc-b652-29aed9033d7f"},{"name":"Get a Suppliers record by id","id":"13229c0f-7dc1-4d05-a432-2945fb5c1201","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/suppliers/:id","description":"<p>Fetch one supplier by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","suppliers",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"27d0b32e-78e1-92e5-9ef3-593f40d7e354","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/suppliers/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","suppliers",":id"],"variable":[{"key":"id"}]},"description":"Fetch one supplier by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0b2\",\n    \"name\": \"ABC Supply\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"13229c0f-7dc1-4d05-a432-2945fb5c1201"}],"id":"1358cbc4-7cf8-4094-8f9a-73ceba432b37","_postman_id":"1358cbc4-7cf8-4094-8f9a-73ceba432b37","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Insurance Companies","item":[{"name":"List Insurance Companies","id":"373914cb-d83a-4ba9-ac69-a523564c3c4c","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/insurance-companies?page=1&limit=25","description":"<p>Insurance companies referenced on projects.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","insurance-companies"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"a9ce54fe-9451-90c5-d297-60a7a11d8586","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/insurance-companies?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","insurance-companies"],"query":[{"key":"page","value":"1"},{"description":"Max 100","key":"limit","value":"25"}]},"description":"Insurance companies referenced on projects."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0b3\",\n      \"name\": \"State Farm\",\n      \"phone\": \"+18005550199\",\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"373914cb-d83a-4ba9-ac69-a523564c3c4c"},{"name":"Get a Insurance Companies record by id","id":"8f7fa4bc-5823-4d51-a841-78b88836a7b1","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/insurance-companies/:id","description":"<p>Fetch one insurance company by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","insurance-companies",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"8fc6299c-4beb-d995-56b6-7869135756ac","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/insurance-companies/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","insurance-companies",":id"],"variable":[{"key":"id"}]},"description":"Fetch one insurance company by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0b3\",\n    \"name\": \"State Farm\",\n    \"phone\": \"+18005550199\",\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"8f7fa4bc-5823-4d51-a841-78b88836a7b1"}],"id":"1eb086a8-30e3-4bc3-aca9-d6f65da4cd24","_postman_id":"1eb086a8-30e3-4bc3-aca9-d6f65da4cd24","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Dead Lead Reasons","item":[{"name":"List Dead Lead Reasons","id":"6f662de6-c759-46f3-9d7c-b1bd2bc3caba","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/dead-lead-reasons?page=1&limit=25","description":"<p>Configured reasons a lead is marked dead.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","dead-lead-reasons"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"}],"variable":[]}},"response":[{"id":"ba0d1998-1155-abaa-f215-a8862ee45df8","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/dead-lead-reasons?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","dead-lead-reasons"],"query":[{"key":"page","value":"1"},{"description":"Max 100","key":"limit","value":"25"}]},"description":"Configured reasons a lead is marked dead."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0b4\",\n      \"name\": \"Went with competitor\",\n      \"isActive\": true,\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"6f662de6-c759-46f3-9d7c-b1bd2bc3caba"},{"name":"Get a Dead Lead Reasons record by id","id":"e0336cd2-b6b5-49bf-9e61-8149d2018704","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/dead-lead-reasons/:id","description":"<p>Fetch one dead lead reason by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","dead-lead-reasons",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"76feab6d-bc81-3d10-bf1a-e3ce634b3c9a","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/dead-lead-reasons/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","dead-lead-reasons",":id"],"variable":[{"key":"id"}]},"description":"Fetch one dead lead reason by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0b4\",\n    \"name\": \"Went with competitor\",\n    \"isActive\": true,\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"e0336cd2-b6b5-49bf-9e61-8149d2018704"}],"id":"aaace9ff-0a90-48e7-a55c-e9da6857b74d","_postman_id":"aaace9ff-0a90-48e7-a55c-e9da6857b74d","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Company Documents","item":[{"name":"List Company Documents","id":"a6084d7b-55e2-4368-8bcc-fe000b99213e","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/company-documents?page=1&limit=25","description":"<p>Company document metadata. Storage keys are not exposed.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","company-documents"],"host":["https://my.trussi.ai"],"query":[{"key":"page","value":"1"},{"description":{"content":"<p>Max 100</p>\n","type":"text/plain"},"key":"limit","value":"25"},{"disabled":true,"description":{"content":"<p>Filter by document category</p>\n","type":"text/plain"},"key":"category","value":""}],"variable":[]}},"response":[{"id":"6b01ad98-4b1f-60e3-9836-cb7dce6740ee","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/company-documents?page=1&limit=25","host":["https://my.trussi.ai"],"path":["api","public","v1","company-documents"],"query":[{"key":"page","value":"1"},{"key":"limit","description":"Max 100","value":"25"},{"key":"category","description":"Filter by document category","value":"","disabled":true}]},"description":"Company document metadata. Storage keys are not exposed."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f1a2b3c4d5e6f7a8b9c0b5\",\n      \"name\": \"Warranty Terms\",\n      \"category\": \"Warranty\",\n      \"created\": \"2026-09-23T15:04:05.000Z\"\n    }\n  ],\n  \"meta\": { \"page\": 1, \"limit\": 25, \"total\": 1, \"pageTotal\": 1 }\n}"}],"_postman_id":"a6084d7b-55e2-4368-8bcc-fe000b99213e"},{"name":"Get a Company Documents record by id","id":"48c575d6-d6d6-43e7-a9f7-37cb669b9399","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/company-documents/:id","description":"<p>Fetch one company document's metadata by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","company-documents",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"bf726db2-b253-3c60-915f-00423fee9b27","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/company-documents/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","company-documents",":id"],"variable":[{"key":"id"}]},"description":"Fetch one company document's metadata by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f1a2b3c4d5e6f7a8b9c0b5\",\n    \"name\": \"Warranty Terms\",\n    \"category\": \"Warranty\",\n    \"created\": \"2026-09-23T15:04:05.000Z\"\n  }\n}"}],"_postman_id":"48c575d6-d6d6-43e7-a9f7-37cb669b9399"}],"id":"e262e7fb-7cd1-4b1b-a933-2ae53d2479ba","_postman_id":"e262e7fb-7cd1-4b1b-a933-2ae53d2479ba","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}},{"name":"Webhooks","item":[{"name":"List subscribable webhook events","id":"ef7cf1eb-2d35-4cdd-8658-14664b69e958","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/webhook-events","description":"<p>List every webhook event type you can subscribe to (the event catalog), including project_file.uploaded.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","webhook-events"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"339cb382-2907-8913-d891-01e08937f5e5","name":"Success (first 3 of the catalog)","originalRequest":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/webhook-events","description":"List every webhook event type you can subscribe to (the event catalog), including project_file.uploaded."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"name\": \"project.created\",\n      \"description\": \"A project or lead was created (via the API, a form fill, or the app).\"\n    },\n    {\n      \"name\": \"project.updated\",\n      \"description\": \"A project or lead changed (name, stage, assignee, dates, totals).\"\n    },\n    {\n      \"name\": \"project_file.uploaded\",\n      \"description\": \"A photo or document was added to a project - from the CRM, the sales app, or the public API. One event per file; the payload is the project, with fileId, folder and filename alongside it.\"\n    }\n  ]\n}"}],"_postman_id":"ef7cf1eb-2d35-4cdd-8658-14664b69e958"},{"name":"List webhook subscriptions","id":"11b0fc18-2fe0-4a91-8c22-5502218f77f7","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/webhooks","description":"<p>List the webhook subscriptions owned by this API key's account.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","webhooks"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"11bd3e6d-af18-c581-bd06-378ea1b3a15b","name":"Success","originalRequest":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/webhooks","description":"List the webhook subscriptions owned by this API key's account."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f2b3c4d5e6f7a8b9c0d1e2\",\n      \"url\": \"https://hooks.example.com/trussi\",\n      \"events\": [\"project.created\", \"project_file.uploaded\"],\n      \"isActive\": true,\n      \"consecutiveFailures\": 0,\n      \"disabledAt\": null,\n      \"disabledReason\": null,\n      \"lastSuccessAt\": \"2026-09-23T15:04:05.000Z\",\n      \"lastFailureAt\": null,\n      \"createdAt\": \"2026-09-20T12:00:00.000Z\"\n    }\n  ]\n}"}],"_postman_id":"11b0fc18-2fe0-4a91-8c22-5502218f77f7"},{"name":"Subscribe an endpoint to events","id":"ada3fb85-8789-4037-ad9b-762996055d85","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com/trussi-webhook\",\n  \"events\": [\n    \"project.created\",\n    \"project_file.uploaded\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/webhooks","description":"<p>Creates a webhook subscription (REST Hooks). The response includes the signing <code>secret</code> exactly once - store it. Every delivery is signed with a <code>Trussi-Signature: t=&lt;unix&gt;,v1=&lt;hmac-sha256 hex&gt;</code> header over <code>${t}.${body}</code>; reject signatures older than 300 seconds. Deliveries retry with exponential backoff for up to 8 attempts. Scope: webhooks:manage.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","webhooks"],"host":["https://my.trussi.ai"],"query":[],"variable":[]}},"response":[{"id":"877f46d9-a72b-1374-3e79-ca0be6728350","name":"Success (secret shown once)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com/trussi-webhook\",\n  \"events\": [\n    \"project.created\",\n    \"project_file.uploaded\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/webhooks","description":"Creates a webhook subscription (REST Hooks). The response includes the signing `secret` exactly once - store it. Every delivery is signed with a `Trussi-Signature: t=<unix>,v1=<hmac-sha256 hex>` header over `${t}.${body}`; reject signatures older than 300 seconds. Deliveries retry with exponential backoff for up to 8 attempts. Scope: webhooks:manage."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f2b3c4d5e6f7a8b9c0d1e2\",\n    \"url\": \"https://hooks.example.com/trussi\",\n    \"events\": [\"project.created\", \"project_file.uploaded\"],\n    \"isActive\": true,\n    \"consecutiveFailures\": 0,\n    \"disabledAt\": null,\n    \"disabledReason\": null,\n    \"lastSuccessAt\": null,\n    \"lastFailureAt\": null,\n    \"createdAt\": \"2026-09-23T15:04:05.000Z\",\n    \"secret\": \"whsec_<64 hex chars - returned once, store it securely>\"\n  }\n}"},{"id":"364e9179-6e3b-fa68-fb0d-e3f4dcae790b","name":"409 Subscription limit reached","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com/trussi-webhook\",\n  \"events\": [\n    \"project.created\",\n    \"project_file.uploaded\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://my.trussi.ai/api/public/v1/webhooks","description":"Creates a webhook subscription (REST Hooks). The response includes the signing `secret` exactly once - store it. Every delivery is signed with a `Trussi-Signature: t=<unix>,v1=<hmac-sha256 hex>` header over `${t}.${body}`; reject signatures older than 300 seconds. Deliveries retry with exponential backoff for up to 8 attempts. Scope: webhooks:manage."},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": {\n    \"code\": \"limit_reached\",\n    \"message\": \"This account already has 25 webhook subscriptions. Delete one first.\"\n  }\n}"}],"_postman_id":"ada3fb85-8789-4037-ad9b-762996055d85"},{"name":"Get a webhook subscription","id":"a3208990-3ce4-48d3-bc0c-464633b932e8","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/webhooks/:id","description":"<p>Fetch one webhook subscription by id.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","webhooks",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"d7e1dc3c-a5db-0e0f-e72a-be0c12e4feae","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/webhooks/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","webhooks",":id"],"variable":[{"key":"id"}]},"description":"Fetch one webhook subscription by id."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f2b3c4d5e6f7a8b9c0d1e2\",\n    \"url\": \"https://hooks.example.com/trussi\",\n    \"events\": [\"project.created\", \"project_file.uploaded\"],\n    \"isActive\": true,\n    \"consecutiveFailures\": 0,\n    \"disabledAt\": null,\n    \"disabledReason\": null,\n    \"lastSuccessAt\": \"2026-09-23T15:04:05.000Z\",\n    \"lastFailureAt\": null,\n    \"createdAt\": \"2026-09-20T12:00:00.000Z\"\n  }\n}"}],"_postman_id":"a3208990-3ce4-48d3-bc0c-464633b932e8"},{"name":"Delete a webhook subscription","id":"713b0954-b594-442d-8fde-bf331fa8d8a7","request":{"method":"DELETE","header":[],"url":"https://my.trussi.ai/api/public/v1/webhooks/:id","description":"<p>Unsubscribe: delete a webhook subscription. Deliveries stop immediately.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","webhooks",":id"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"6f6626ba-2a9a-b56d-aaf3-532cce4a4790","name":"Success","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/webhooks/:id","host":["https://my.trussi.ai"],"path":["api","public","v1","webhooks",":id"],"variable":[{"key":"id"}]},"description":"Unsubscribe: delete a webhook subscription. Deliveries stop immediately."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f2b3c4d5e6f7a8b9c0d1e2\",\n    \"deleted\": true\n  }\n}"}],"_postman_id":"713b0954-b594-442d-8fde-bf331fa8d8a7"},{"name":"List recent deliveries for a subscription","id":"2f44066a-ddbf-4d77-9b3c-a60e7cb51bbc","request":{"method":"GET","header":[],"url":"https://my.trussi.ai/api/public/v1/webhooks/:id/deliveries","description":"<p>List recent delivery attempts for a subscription (status, response code, attempt count), newest first.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","webhooks",":id","deliveries"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"}]}},"response":[{"id":"7ae75ec3-1a78-bc5e-8561-dd5ed36fccc0","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/webhooks/:id/deliveries","host":["https://my.trussi.ai"],"path":["api","public","v1","webhooks",":id","deliveries"],"variable":[{"key":"id"}]},"description":"List recent delivery attempts for a subscription (status, response code, attempt count), newest first."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": [\n    {\n      \"id\": \"66f2b3c4d5e6f7a8b9c0d1f9\",\n      \"eventId\": \"evt_66f2b3c4d5e6f7a8\",\n      \"event\": \"project.created\",\n      \"status\": \"succeeded\",\n      \"attemptCount\": 1,\n      \"nextAttemptAt\": null,\n      \"occurredAt\": \"2026-09-23T15:04:05.000Z\",\n      \"attempts\": [\n        {\n          \"at\": \"2026-09-23T15:04:05.000Z\",\n          \"ok\": true,\n          \"httpStatus\": 200,\n          \"error\": null,\n          \"durationMs\": 184\n        }\n      ]\n    }\n  ]\n}"}],"_postman_id":"2f44066a-ddbf-4d77-9b3c-a60e7cb51bbc"},{"name":"Replay a finished delivery","id":"e552ccc0-ceca-4fed-9290-1010b84f445b","request":{"method":"POST","header":[],"url":"https://my.trussi.ai/api/public/v1/webhooks/:id/deliveries/:deliveryId/replay","description":"<p>Re-send a past delivery (for example one that failed or landed in the dead-letter queue).</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}},"urlObject":{"path":["api","public","v1","webhooks",":id","deliveries",":deliveryId","replay"],"host":["https://my.trussi.ai"],"query":[],"variable":[{"type":"any","key":"id"},{"type":"any","key":"deliveryId"}]}},"response":[{"id":"ef4f4da7-270a-0f6c-073f-132f6a4239e4","name":"Success (re-queued)","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://my.trussi.ai/api/public/v1/webhooks/:id/deliveries/:deliveryId/replay","host":["https://my.trussi.ai"],"path":["api","public","v1","webhooks",":id","deliveries",":deliveryId","replay"],"variable":[{"key":"id"},{"key":"deliveryId"}]},"description":"Re-send a past delivery (for example one that failed or landed in the dead-letter queue)."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"value":"application/json","key":"Content-Type"}],"cookie":[],"responseTime":null,"body":"{\n  \"data\": {\n    \"id\": \"66f2b3c4d5e6f7a8b9c0d1f9\",\n    \"eventId\": \"evt_66f2b3c4d5e6f7a8\",\n    \"event\": \"project.created\",\n    \"status\": \"pending\",\n    \"attemptCount\": 0,\n    \"nextAttemptAt\": \"2026-09-23T15:10:00.000Z\",\n    \"occurredAt\": \"2026-09-23T15:04:05.000Z\",\n    \"attempts\": []\n  }\n}"}],"_postman_id":"e552ccc0-ceca-4fed-9290-1010b84f445b"}],"id":"74b2b9c8-4b59-460e-ac52-13befafa4ddb","_postman_id":"74b2b9c8-4b59-460e-ac52-13befafa4ddb","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]},"isInherited":true,"source":{"_postman_id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","id":"b5a091c4-3ba2-4cf9-ab68-95ff2068fa11","name":"Trussi Public API","type":"collection"}}}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"X-API-Key"},{"key":"value","value":"{{apiKey}}"}]}},"event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('No server error (status < 500)', function () {","  pm.expect(pm.response.code).to.be.below(500);","});"]}}],"variable":[{"key":"baseUrl","value":"https://my.trussi.ai"}]}