{"openapi":"3.1.0","info":{"title":"Kaptr API","version":"1.0.0","description":"Read and organize your Kaptr dashboards and snapshots, manage your team, and run Kaptr AI from your own tools. Included with Business. Create a key in Kaptr → Settings → API and send it as `Authorization: Bearer kaptr_…`. Limits per key and minute: 60 reads, 30 changes, 5 AI actions; 50,000 requests per account and month. AI actions spend your AI credits, as in the app.","contact":{"name":"Kaptr support","url":"https://kaptr.me/contact/"}},"servers":[{"url":"https://kaptr.me/api/v1"}],"externalDocs":{"description":"Guide","url":"https://kaptr.me/developers/"},"security":[{"apiKey":[]}],"tags":[{"name":"Account"},{"name":"Dashboards"},{"name":"Snapshots"},{"name":"AI"},{"name":"Team"}],"paths":{"/me":{"get":{"tags":["Account"],"summary":"The key's account, its credits and usage","operationId":"getMe","responses":{"200":{"description":"The account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"429":{"$ref":"#/components/responses/E429"}}}},"/dashboards":{"get":{"tags":["Dashboards"],"summary":"List your dashboards (own, team, shared with you)","operationId":"listDashboards","parameters":[{"name":"limit","in":"query","description":"Items per page (1–100, default 50).","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","description":"The `nextCursor` of the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of dashboards, by id.","content":{"application/json":{"schema":{"type":"object","required":["object","data","hasMore","nextCursor"],"properties":{"object":{"const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Dashboard"}},"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]}}}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"429":{"$ref":"#/components/responses/E429"}}},"post":{"tags":["Dashboards"],"summary":"Create a dashboard","operationId":"createDashboard","parameters":[{"name":"Idempotency-Key","in":"header","description":"8–100 characters. Sending the same request again with the same key returns the first result instead of doing it twice.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","maxLength":120},"team":{"type":"boolean","description":"Create it in your team (owner, admins and editors)."}}}}}},"responses":{"201":{"description":"The new dashboard.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}}},"/dashboards/{dashboardId}":{"parameters":[{"name":"dashboardId","in":"path","required":true,"description":"A dashboard id.","schema":{"type":"string"}}],"get":{"tags":["Dashboards"],"summary":"Get a dashboard","operationId":"getDashboard","responses":{"200":{"description":"The dashboard.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}},"patch":{"tags":["Dashboards"],"summary":"Rename, favorite, archive, or move into / out of your team","operationId":"updateDashboard","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","minLength":1,"maxLength":120},"favorite":{"type":"boolean"},"archived":{"type":"boolean"},"team":{"type":"boolean","description":"Owner only."}}}}}},"responses":{"200":{"description":"The dashboard.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}},"delete":{"tags":["Dashboards"],"summary":"Delete a dashboard and everything on it","operationId":"deleteDashboard","responses":{"200":{"description":"Deleted.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"dashboard"},"deleted":{"const":true}}}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/dashboards/{dashboardId}/sharing":{"parameters":[{"name":"dashboardId","in":"path","required":true,"description":"A dashboard id.","schema":{"type":"string"}}],"put":{"tags":["Dashboards"],"summary":"Make it public or private, and choose who it is shared with (owner)","operationId":"updateSharing","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"visibility":{"enum":["public","private"]},"indexable":{"type":"boolean"},"sharedWith":{"type":"array","maxItems":200,"items":{"type":"string","format":"email"},"description":"Replaces the whole list."}}}}}},"responses":{"200":{"description":"The dashboard, with its public link.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Dashboard"},{"type":"object","properties":{"publicUrl":{"type":["string","null"]}}}]}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/dashboards/{dashboardId}/invitations":{"parameters":[{"name":"dashboardId","in":"path","required":true,"description":"A dashboard id.","schema":{"type":"string"}}],"post":{"tags":["Dashboards"],"summary":"E-mail a link to the dashboard (owner)","operationId":"inviteToDashboard","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["emails"],"additionalProperties":false,"properties":{"emails":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"string","format":"email"}}}}}}},"responses":{"200":{"description":"Sent.","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"const":"invitation_batch"},"dashboardId":{"type":"string"},"sent":{"type":"integer"}}}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}}},"/dashboards/{dashboardId}/snapshots":{"parameters":[{"name":"dashboardId","in":"path","required":true,"description":"A dashboard id.","schema":{"type":"string"}}],"get":{"tags":["Snapshots"],"summary":"List a dashboard's snapshots","operationId":"listSnapshots","parameters":[{"name":"limit","in":"query","description":"Items per page (1–100, default 50).","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","description":"The `nextCursor` of the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of snapshots, by id.","content":{"application/json":{"schema":{"type":"object","required":["object","data","hasMore","nextCursor"],"properties":{"object":{"const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Snapshot"}},"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]}}}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/snapshots/{snapshotId}":{"parameters":[{"name":"snapshotId","in":"path","required":true,"description":"A snapshot id.","schema":{"type":"string"}}],"get":{"tags":["Snapshots"],"summary":"Get a snapshot","operationId":"getSnapshot","responses":{"200":{"description":"The snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Snapshot"}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}},"patch":{"tags":["Snapshots"],"summary":"Rename, move or resize it on the board, or move it to another dashboard","operationId":"updateSnapshot","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","maxLength":300},"frame":{"type":"object","additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number","minimum":16,"maximum":20000},"height":{"type":"number","minimum":16,"maximum":20000}}},"dashboardId":{"type":"string","description":"Another dashboard of the same account."}}}}}},"responses":{"200":{"description":"The snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Snapshot"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}},"delete":{"tags":["Snapshots"],"summary":"Delete a snapshot and its history","operationId":"deleteSnapshot","responses":{"200":{"description":"Deleted.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"snapshot"},"deleted":{"const":true}}}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/snapshots/{snapshotId}/history":{"parameters":[{"name":"snapshotId","in":"path","required":true,"description":"A snapshot id.","schema":{"type":"string"}}],"get":{"tags":["Snapshots"],"summary":"Its earlier versions, most recent first","operationId":"getSnapshotHistory","parameters":[{"name":"limit","in":"query","description":"Items per page (1–100, default 50).","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","description":"The `nextCursor` of the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of versions.","content":{"application/json":{"schema":{"type":"object","required":["object","data","hasMore","nextCursor"],"properties":{"object":{"const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/SnapshotVersion"}},"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]}}}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/dashboards/{dashboardId}/generations":{"parameters":[{"name":"dashboardId","in":"path","required":true,"description":"A dashboard id.","schema":{"type":"string"}}],"post":{"tags":["AI"],"summary":"Generate snapshots with Kaptr Fast, Vision or Agent","operationId":"generateSnapshots","description":"Starts a job: it reserves the model's AI credits (charged only for a usable result) and adds the snapshots to the dashboard when they are ready.","parameters":[{"name":"Idempotency-Key","in":"header","description":"8–100 characters. Sending the same request again with the same key returns the first result instead of doing it twice.","schema":{"type":"string"}},{"name":"wait","in":"query","description":"Seconds to wait for the job to end before answering (0–50).","schema":{"type":"integer","minimum":0,"maximum":50}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["model","prompt"],"additionalProperties":false,"properties":{"model":{"enum":["fast","vision","agent"]},"prompt":{"type":"string","minLength":8,"maxLength":2000,"description":"What to capture, e.g. \"Current S&P 500 heatmap\"."},"count":{"type":"integer","minimum":1,"maximum":4,"default":1},"sourceUrls":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","format":"uri"},"description":"Public pages to capture from (fast and vision)."}}}}}},"responses":{"200":{"description":"The job ended within `wait`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"202":{"description":"The job is queued or running: follow it with GET /jobs/{id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}}},"/snapshots/{snapshotId}/refresh":{"parameters":[{"name":"snapshotId","in":"path","required":true,"description":"An AI snapshot id.","schema":{"type":"string"}}],"post":{"tags":["AI"],"summary":"Refresh an AI snapshot in the cloud","operationId":"refreshSnapshot","parameters":[{"name":"Idempotency-Key","in":"header","description":"8–100 characters. Sending the same request again with the same key returns the first result instead of doing it twice.","schema":{"type":"string"}},{"name":"wait","in":"query","description":"Seconds to wait for the job to end before answering (0–50).","schema":{"type":"integer","minimum":0,"maximum":50}}],"responses":{"200":{"description":"The job ended within `wait`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"202":{"description":"The job is queued or running: follow it with GET /jobs/{id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/dashboards/{dashboardId}/ask":{"parameters":[{"name":"dashboardId","in":"path","required":true,"description":"A dashboard id.","schema":{"type":"string"}}],"post":{"tags":["AI"],"summary":"Ask a question about a dashboard (Ask AI)","operationId":"askDashboard","parameters":[{"name":"Idempotency-Key","in":"header","description":"8–100 characters. Sending the same request again with the same key returns the first result instead of doing it twice.","schema":{"type":"string"}},{"name":"wait","in":"query","description":"Seconds to wait for the job to end before answering (0–50).","schema":{"type":"integer","minimum":0,"maximum":50}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["question"],"additionalProperties":false,"properties":{"question":{"type":"string","minLength":1,"maxLength":4000},"model":{"enum":["google-gemma-4-26b","qwen3.8-27b","kimi-k2.6"],"default":"qwen3.8-27b"},"thinking":{"type":"boolean","default":false},"snapshotIds":{"type":"array","items":{"type":"string"},"description":"Only these snapshots (default: the whole dashboard)."}}}}}},"responses":{"200":{"description":"The job ended within `wait`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"202":{"description":"The job is queued or running: follow it with GET /jobs/{id}.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/jobs/{jobId}":{"parameters":[{"name":"jobId","in":"path","required":true,"description":"A job id.","schema":{"type":"string"}}],"get":{"tags":["AI"],"summary":"Follow a job","operationId":"getJob","parameters":[{"name":"wait","in":"query","description":"Seconds to wait for the job to end before answering (0–50).","schema":{"type":"integer","minimum":0,"maximum":50}}],"responses":{"200":{"description":"The job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"$ref":"#/components/responses/E401"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/team":{"get":{"tags":["Team"],"summary":"Your team, its members and pending invitations","operationId":"getTeam","responses":{"200":{"description":"The team.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/team/usage":{"get":{"tags":["Team"],"summary":"AI credits each member spent this month (owner, admins)","operationId":"getTeamUsage","responses":{"200":{"description":"Usage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUsage"}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}}},"/team/invitations":{"post":{"tags":["Team"],"summary":"Invite colleagues (owner, admins)","operationId":"inviteTeamMembers","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["emails","role"],"additionalProperties":false,"properties":{"emails":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string","format":"email"}},"role":{"enum":["admin","editor","viewer"]}}}}}},"responses":{"201":{"description":"Invited (each new member adds a Business seat).","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"const":"invitation_batch"},"invited":{"type":"integer"},"alreadyMembers":{"type":"integer"},"emailsSent":{"type":"integer"},"invalid":{"type":"array","items":{"type":"string"}}}}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}}},"/team/invitations/{invitationId}":{"parameters":[{"name":"invitationId","in":"path","required":true,"description":"An invitation id (GET /team).","schema":{"type":"string"}}],"delete":{"tags":["Team"],"summary":"Cancel an invitation (owner, admins)","operationId":"cancelTeamInvitation","responses":{"200":{"description":"Cancelled.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"invitation"},"deleted":{"const":true}}}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}}},"/team/members/{memberId}":{"parameters":[{"name":"memberId","in":"path","required":true,"description":"A member id (GET /team).","schema":{"type":"string"}}],"patch":{"tags":["Team"],"summary":"Change a member's role or monthly AI credit limit (owner, admins)","operationId":"updateTeamMember","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"role":{"enum":["admin","editor","viewer"]},"monthlyCreditLimit":{"type":["integer","null"],"minimum":1,"maximum":100000}}}}}},"responses":{"200":{"description":"The member.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMember"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}},"delete":{"tags":["Team"],"summary":"Remove a member (owner, admins)","operationId":"removeTeamMember","responses":{"200":{"description":"Removed.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"team_member"},"deleted":{"const":true}}}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"409":{"$ref":"#/components/responses/E409"},"429":{"$ref":"#/components/responses/E429"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"kaptr_<id>_<secret>","description":"A key from Kaptr → Settings → API. Read-only keys can't change anything or spend credits."}},"responses":{"E400":{"description":"Invalid request (invalid_request).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E401":{"description":"Missing or invalid key (unauthenticated, invalid_api_key).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E403":{"description":"Not allowed: plan_required, scope_required (read-only key) or forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E404":{"description":"Not found (or not yours).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E409":{"description":"conflict (Idempotency-Key reused) or limit_reached (plan limits).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E429":{"description":"rate_limited or quota_exceeded: see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"retryAfter":{"type":"integer"}}}}},"Account":{"type":"object","properties":{"object":{"const":"account"},"id":{"type":"string"},"email":{"type":["string","null"]},"plan":{"type":"string"},"team":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"enum":["owner","admin","editor","viewer"]}}},"apiKey":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"scope":{"enum":["read","write"]}}},"credits":{"type":["object","null"],"properties":{"available":{"type":"integer"},"availableForAgent":{"type":"integer"},"ownModel":{"type":"boolean"}}},"limits":{"type":"object"},"usage":{"type":"object","properties":{"month":{"type":"string"},"requests":{"type":"integer"},"resetsAt":{"type":"string","format":"date-time"}}}}},"Dashboard":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"dashboard"},"title":{"type":"string"},"access":{"enum":["owner","edit","view"]},"team":{"type":"boolean"},"visibility":{"enum":["private","shared","public"]},"sharedWith":{"type":"array","items":{"type":"string"},"description":"Owner only."},"archived":{"type":"boolean"},"favorite":{"type":"boolean"},"snapshotCount":{"type":"integer","description":"On single reads."},"autoRefresh":{"type":["object","null"]},"appearance":{"type":["object","null"]},"url":{"type":["string","null"]},"createdAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":["string","null"],"format":"date-time"}}},"Snapshot":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"snapshot"},"dashboardId":{"type":"string"},"title":{"type":"string"},"sourceUrl":{"type":"string"},"imageUrl":{"type":"string"},"image":{"type":"object","properties":{"width":{"type":"number"},"height":{"type":"number"},"mime":{"type":["string","null"]}}},"crop":{"type":"object","description":"The region of the image shown."},"frame":{"type":"object","description":"Its place and size on the board."},"kind":{"enum":["ai","extension"]},"text":{"type":["string","null"],"description":"Text read on it (AI snapshots)."},"refresh":{"type":"object"},"createdAt":{"type":["string","null"]},"updatedAt":{"type":["string","null"]}}},"SnapshotVersion":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"snapshot_version"},"status":{"enum":["success","error"]},"imageUrl":{"type":["string","null"]},"message":{"type":["string","null"]},"createdAt":{"type":["string","null"]}}},"Job":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"job"},"type":{"enum":["generation","refresh","ask"]},"status":{"enum":["queued","running","needs_space","completed","failed"]},"dashboardId":{"type":"string"},"snapshotId":{"type":"string"},"model":{"type":"string"},"count":{"type":"integer"},"progress":{"type":"object","description":"Kaptr Agent: what it is doing."},"message":{"type":"string"},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}},"snapshots":{"type":"array","items":{"$ref":"#/components/schemas/Snapshot"},"description":"generation, once completed."},"snapshot":{"$ref":"#/components/schemas/Snapshot"},"changed":{"type":"boolean","description":"refresh, once completed."},"answer":{"type":"object","description":"ask, once completed.","properties":{"text":{"type":"string"},"citations":{"type":"array","items":{"type":"object"}},"insufficient":{"type":"boolean"},"model":{"type":"string"},"creditsCharged":{"type":["integer","null"]}}},"createdAt":{"type":["string","null"]},"startedAt":{"type":["string","null"]},"completedAt":{"type":["string","null"]}}},"TeamMember":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"team_member"},"email":{"type":["string","null"]},"name":{"type":["string","null"]},"role":{"enum":["owner","admin","editor","viewer"]},"joinedAt":{"type":["string","null"]}}},"Team":{"type":"object","properties":{"object":{"const":"team"},"id":{"type":"string"},"name":{"type":"string"},"active":{"type":"boolean"},"role":{"enum":["owner","admin","editor","viewer"]},"ownerId":{"type":"string"},"members":{"type":"array","items":{"$ref":"#/components/schemas/TeamMember"}},"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"createdAt":{"type":["string","null"]}}}},"seats":{"type":["object","null"]}}},"TeamUsage":{"type":"object","properties":{"object":{"const":"team_usage"},"since":{"type":["string","null"]},"totalCredits":{"type":"integer"},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"credits":{"type":"integer"},"monthlyCreditLimit":{"type":["integer","null"]}}}}}}}}}