{"openapi":"3.1.0","info":{"title":"Afterglow Connections API","version":"1.0.0","description":"Authorized practical support for the first year after divorce. Create a revocable API key in Afterglow's connections settings. Only checklist reads are selected by default. Private daily pages, personal paths, check-ins and contextual coaching require explicit optional permissions. This is not therapy or emergency care. No account, session, letter, coach-history, billing, administrative or deletion access is available to keys.","termsOfService":"https://afterglow-lime.vercel.app/terms"},"servers":[{"url":"https://afterglow-lime.vercel.app"}],"externalDocs":{"url":"https://afterglow-lime.vercel.app/developers"},"components":{"securitySchemes":{"AfterglowKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"ag_ key created by the account owner at /settings/connections. Never use a mobile session token or account password."}}},"paths":{"/api/v1/checklists/{id}":{"get":{"operationId":"readChecklist","summary":"Read an available checklist","description":"Share your available checklist items and completion status. This can reveal which practical tasks apply to you. Required scope: checklists:read. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"checklists:read","x-personal-content":false,"security":[{"AfterglowKey":[]}],"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"moduleId":{"type":"string","enum":["sos","emotional","legal","money","home","body","social","coparenting","dating"]},"title":{"type":"string"},"disclaimer":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"why":{"type":"string"},"urgent":{"type":"boolean"},"season":{"type":"string","enum":["steady","sort","rebuild","rise"]},"resourceUrl":{"type":["string","null"]},"status":{"type":"string","enum":["todo","done","na"]},"doneAt":{"type":["string","null"]}},"required":["id","title","why","urgent","season","status","doneAt"],"additionalProperties":false}}},"required":["moduleId","title","disclaimer","items"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"Checklist module ID.","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","enum":["sos","emotional","legal","money","home","body","social","coparenting","dating"]}}]},"post":{"operationId":"updateChecklistItem","summary":"Update one checklist item","description":"Let the connected tool mark an item done, to do, or not applicable. Required scope: checklists:write. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"checklists:write","x-personal-content":false,"security":[{"AfterglowKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["todo","done","na"]}},"required":["status"],"additionalProperties":false}}}},"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"item":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"why":{"type":"string"},"urgent":{"type":"boolean"},"season":{"type":"string","enum":["steady","sort","rebuild","rise"]},"resourceUrl":{"type":["string","null"]},"status":{"type":"string","enum":["todo","done","na"]},"doneAt":{"type":["string","null"]}},"required":["id","title","why","urgent","season","status","doneAt"],"additionalProperties":false},"roomPieceUnlocked":{"anyOf":[{"type":"object","properties":{"pieceId":{"type":"string","minLength":1},"title":{"type":"string"},"svgKey":{"type":"string"},"reason":{"type":"string","enum":["move","first","season","streak"]}},"required":["pieceId","title","svgKey","reason"],"additionalProperties":false},{"type":"null"}]}},"required":["item","roomPieceUnlocked"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"Item ID returned by readChecklist, not a module ID.","schema":{"type":"string","pattern":"^[a-z0-9_-]+$"}}]}},"/api/v1/move/done":{"post":{"operationId":"completeDailyMove","summary":"Complete today's move","description":"Let the tool complete, skip or swap your daily move, using your plan's limits. Required scope: moves:write. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"moves:write","x-personal-content":false,"security":[{"AfterglowKey":[]}],"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"move":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"body":{"type":"string"},"minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"module":{"type":"string","enum":["sos","emotional","legal","money","home","body","social","coparenting","dating"]},"script":{"type":["string","null"]},"status":{"type":"string","enum":["offered","done","skipped","swapped"]}},"required":["id","title","body","minutes","module","status"],"additionalProperties":false},{"type":"null"}]},"roomPieceUnlocked":{"anyOf":[{"type":"object","properties":{"pieceId":{"type":"string","minLength":1},"title":{"type":"string"},"svgKey":{"type":"string"},"reason":{"type":"string","enum":["move","first","season","streak"]}},"required":["pieceId","title","svgKey","reason"],"additionalProperties":false},{"type":"null"}]},"firstSuggestion":{"anyOf":[{"type":"object","properties":{"title":{"type":"string"},"firstId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false},{"type":"null"}]}},"required":["move","roomPieceUnlocked","firstSuggestion"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/move/skip":{"post":{"operationId":"skipDailyMove","summary":"Skip today's move","description":"Let the tool complete, skip or swap your daily move, using your plan's limits. Required scope: moves:write. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"moves:write","x-personal-content":false,"security":[{"AfterglowKey":[]}],"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"move":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"body":{"type":"string"},"minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"module":{"type":"string","enum":["sos","emotional","legal","money","home","body","social","coparenting","dating"]},"script":{"type":["string","null"]},"status":{"type":"string","enum":["offered","done","skipped","swapped"]}},"required":["id","title","body","minutes","module","status"],"additionalProperties":false},{"type":"null"}]},"roomPieceUnlocked":{"anyOf":[{"type":"object","properties":{"pieceId":{"type":"string","minLength":1},"title":{"type":"string"},"svgKey":{"type":"string"},"reason":{"type":"string","enum":["move","first","season","streak"]}},"required":["pieceId","title","svgKey","reason"],"additionalProperties":false},{"type":"null"}]},"firstSuggestion":{"anyOf":[{"type":"object","properties":{"title":{"type":"string"},"firstId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false},{"type":"null"}]}},"required":["move","roomPieceUnlocked","firstSuggestion"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/move/swap":{"post":{"operationId":"swapDailyMove","summary":"Swap today's move within plan limits","description":"Let the tool complete, skip or swap your daily move, using your plan's limits. Required scope: moves:write. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"moves:write","x-personal-content":false,"security":[{"AfterglowKey":[]}],"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"move":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"body":{"type":"string"},"minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"module":{"type":"string","enum":["sos","emotional","legal","money","home","body","social","coparenting","dating"]},"script":{"type":["string","null"]},"status":{"type":"string","enum":["offered","done","skipped","swapped"]}},"required":["id","title","body","minutes","module","status"],"additionalProperties":false},{"type":"null"}]},"roomPieceUnlocked":{"anyOf":[{"type":"object","properties":{"pieceId":{"type":"string","minLength":1},"title":{"type":"string"},"svgKey":{"type":"string"},"reason":{"type":"string","enum":["move","first","season","streak"]}},"required":["pieceId","title","svgKey","reason"],"additionalProperties":false},{"type":"null"}]},"firstSuggestion":{"anyOf":[{"type":"object","properties":{"title":{"type":"string"},"firstId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false},{"type":"null"}]}},"required":["move","roomPieceUnlocked","firstSuggestion"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/checkin":{"post":{"operationId":"saveCheckin","summary":"Save a personal check-in and receive a reply","description":"Let the tool save your mood, sleep and optional personal note, and receive a coach reply that may refer to your saved story and personal dates, plus any safety resources. Check-ins become part of your Afterglow account. Required scope: checkins:write_sensitive. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"checkins:write_sensitive","x-personal-content":true,"security":[{"AfterglowKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"mood":{"type":"string","enum":["rough","meh","ok","good","great"]},"sleep":{"type":"string","enum":["bad","ok","good"]},"heavy":{"anyOf":[{"type":"string","enum":["kids","money","him","lonely","work","body","nothing"]},{"type":"null"}]},"note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}},"required":["mood","sleep"],"additionalProperties":false}}}},"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"checkin":{"type":"object","properties":{"id":{"type":"string","minLength":1},"userId":{"type":"string","minLength":1},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"mood":{"type":"string","enum":["rough","meh","ok","good","great"]},"sleep":{"type":"string","enum":["bad","ok","good"]},"heavy":{"anyOf":[{"type":"string","enum":["kids","money","him","lonely","work","body","nothing"]},{"type":"null"}]},"note":{"type":["string","null"]},"coachReply":{"type":["string","null"]},"createdAt":{"type":"string"}},"required":["id","userId","date","mood","sleep","heavy","note","coachReply","createdAt"],"additionalProperties":false},"coachReply":{"type":"string"},"safetyCard":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false},{"type":"null"}]},"streak":{"type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"longest":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckinDate":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"graceUsedThisWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weekStart":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]}},"required":["current","longest","lastCheckinDate","graceUsedThisWeek","weekStart"],"additionalProperties":false},"firstSuggestion":{"anyOf":[{"type":"object","properties":{"title":{"type":"string"},"firstId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false},{"type":"null"}]}},"required":["checkin","coachReply","streak","firstSuggestion"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/coach":{"post":{"operationId":"talkWithCoach","summary":"Send one contextual coach message","description":"Let the tool send messages and receive replies that may refer to your previous conversations, saved memory, current check-in and upcoming personal dates. Messages are saved in your coach history. This does not allow downloading that history. Required scope: coach:use_sensitive. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"coach:use_sensitive","x-personal-content":true,"security":[{"AfterglowKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"content":{"type":"string","minLength":1,"maxLength":4000}},"required":["content"],"additionalProperties":false}}}},"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reply":{"type":"string"},"riskLevel":{"type":"string","enum":["none","elevated","crisis"]},"safetyCard":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false},{"type":"null"}]},"remainingToday":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"firstSuggestion":{"anyOf":[{"type":"object","properties":{"title":{"type":"string"},"firstId":{"type":["string","null"]}},"required":["title"],"additionalProperties":false},{"type":"null"}]}},"required":["reply","riskLevel","safetyCard","remainingToday","firstSuggestion"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/today":{"get":{"operationId":"readToday","summary":"Read the private daily page and prepare today's move","description":"Share today's check-in and note, coach reply, day-close journal, upcoming personal date labels, move, streak and envelope. Required scope: today:read_sensitive. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"today:read_sensitive","x-personal-content":true,"security":[{"AfterglowKey":[]}],"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"checkin":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"userId":{"type":"string","minLength":1},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"mood":{"type":"string","enum":["rough","meh","ok","good","great"]},"sleep":{"type":"string","enum":["bad","ok","good"]},"heavy":{"anyOf":[{"type":"string","enum":["kids","money","him","lonely","work","body","nothing"]},{"type":"null"}]},"note":{"type":["string","null"]},"coachReply":{"type":["string","null"]},"createdAt":{"type":"string"}},"required":["id","userId","date","mood","sleep","heavy","note","coachReply","createdAt"],"additionalProperties":false},{"type":"null"}]},"safetyCard":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false},{"type":"null"}]},"move":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"body":{"type":"string"},"minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"module":{"type":"string","enum":["sos","emotional","legal","money","home","body","social","coparenting","dating"]},"script":{"type":["string","null"]},"status":{"type":"string","enum":["offered","done","skipped","swapped"]}},"required":["id","title","body","minutes","module","status"],"additionalProperties":false},{"type":"null"}]},"canSwap":{"type":"boolean"},"close":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"userId":{"type":"string","minLength":1},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"oneFineThing":{"type":"string"},"voiceNoteUrl":{"type":["string","null"]},"createdAt":{"type":"string"}},"required":["id","userId","date","oneFineThing","voiceNoteUrl","createdAt"],"additionalProperties":false},{"type":"null"}]},"dreadedDateWarning":{"anyOf":[{"type":"object","properties":{"label":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"daysAway":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prepCard":{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"}},"required":["title","body"],"additionalProperties":false}},"required":["label","date","daysAway","prepCard"],"additionalProperties":false},{"type":"null"}]},"streak":{"type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"longest":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckinDate":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"graceUsedThisWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weekStart":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]}},"required":["current","longest","lastCheckinDate","graceUsedThisWeek","weekStart"],"additionalProperties":false},"graceUsedThisWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"envelope":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"envelopeId":{"type":"string","minLength":1},"body":{"type":"string"},"signoff":{"type":"string"},"deliveredAt":{"type":"string"},"openedAt":{"type":["string","null"]}},"required":["id","envelopeId","body","signoff","deliveredAt","openedAt"],"additionalProperties":false},{"type":"null"}]},"showSos":{"type":"boolean"}},"required":["date","checkin","move","canSwap","close","dreadedDateWarning","streak","graceUsedThisWeek","envelope","showSos"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/path":{"get":{"operationId":"readPath","summary":"Read the personal path and collected Firsts","description":"Share your season, personal threads, module progress, room and collected Firsts, including their titles and private notes. Required scope: path:read_sensitive. Existing account ownership, onboarding, entitlement and daily limits apply.","x-required-scope":"path:read_sensitive","x-personal-content":true,"security":[{"AfterglowKey":[]}],"responses":{"200":{"description":"Completed using the key owner's account.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"season":{"type":"string","enum":["steady","sort","rebuild","rise"]},"seasons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["steady","sort","rebuild","rise"]},"title":{"type":"string"},"when":{"type":"string"},"status":{"type":"string","enum":["done","current","upcoming"]},"exitSignal":{"type":"string"}},"required":["id","title","when","status","exitSignal"],"additionalProperties":false}},"threads":{"type":"array","items":{"type":"string","enum":["sleep","body","friends","money","confidence","weekends","faith","name"]}},"modules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["sos","emotional","legal","money","home","body","social","coparenting","dating"]},"title":{"type":"string"},"season":{"type":"string","enum":["steady","sort","rebuild","rise"]},"progress":{"type":"object","properties":{"done":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["done","total"],"additionalProperties":false}},"required":["id","title","season","progress"],"additionalProperties":false}},"room":{"type":"object","properties":{"style":{"type":"string","enum":["warm","minimal","maximal"]},"room":{"type":"string","enum":["steady","sort","rebuild","rise"]},"pieces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"svgKey":{"type":"string"},"order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unlockedAt":{"type":["string","null"]},"reason":{"anyOf":[{"type":"string","enum":["move","first","season","streak"]},{"type":"null"}]}},"required":["id","title","svgKey","order","unlockedAt","reason"],"additionalProperties":false}},"nextPiece":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"hint":{"type":"string"}},"required":["id","title","hint"],"additionalProperties":false},{"type":"null"}]}},"required":["style","room","pieces","nextPiece"],"additionalProperties":false},"firsts":{"type":"object","properties":{"collected":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"userId":{"type":"string","minLength":1},"firstId":{"type":"string"},"title":{"type":"string"},"loggedAt":{"type":"string"},"note":{"type":["string","null"]},"sourceCheckinId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["id","userId","firstId","title","loggedAt","note","sourceCheckinId"],"additionalProperties":false}},"available":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string"},"season":{"type":"string","enum":["steady","sort","rebuild","rise"]},"category":{"type":"string","enum":["solo","social","admin","body","kids","dating","money","home"]},"hint":{"type":"string"}},"required":["id","title","season","category","hint"],"additionalProperties":false}}},"required":["collected","available"],"additionalProperties":false},"exitReady":{"type":"boolean"}},"required":["season","seasons","threads","modules","room","firsts","exitReady"],"additionalProperties":false}}}},"400":{"description":"Invalid request or onboarding required.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Invalid, expired, revoked or insufficiently scoped key.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"402":{"description":"The current account plan does not include this action.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Method or path unavailable to API connections.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Content unavailable.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"60 requests per minute per key. Retry after 60 seconds. Coach/check-in transport limits include human-written safety resources; no message was classified or saved for this response.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"details":{},"paywall":{"type":"boolean"},"safetyCard":{"type":"object","properties":{"kind":{"type":"string","enum":["self_harm","abuse","none"]},"title":{"type":"string"},"body":{"type":"string"},"resources":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"},"phone":{"type":["string","null"]},"sms":{"anyOf":[{"type":"object","properties":{"number":{"type":"string"},"body":{"type":"string"}},"required":["number","body"],"additionalProperties":false},{"type":"null"}]},"url":{"type":["string","null"]}},"required":["label","detail","phone","sms","url"],"additionalProperties":false}},"callAFriend":{"type":"object","properties":{"label":{"type":"string"},"detail":{"type":"string"}},"required":["label","detail"],"additionalProperties":false},"footer":{"type":"string"}},"required":["kind","title","body","resources","callAFriend","footer"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}}}