{"openapi":"3.1.0","info":{"title":"SintetizAI API","version":"1.0.0","description":"Version 1 of the core first-party application endpoints for SintetizAI, a source-grounded study system. Endpoints are designed for the signed-in web application and require the Auth.js session cookie unless marked public. There is currently no general-purpose API-key program. Send X-SintetizAI-API-Version: 1. New versions will be additive where possible. Breaking changes will receive a new version. Deprecations will be announced in the developer documentation with Deprecation and Sunset response headers during the migration window.","contact":{"email":"hello@sintetizai.com","name":"SintetizAI"}},"x-sintetizai-versioning":{"strategy":"header","header":"X-SintetizAI-API-Version","current":"1","deprecation":"Deprecation and Sunset headers will be sent before a version is retired."},"servers":[{"url":"https://www.sintetizai.com","description":"SintetizAI production"}],"externalDocs":{"description":"SintetizAI developer documentation and agent guidance","url":"https://www.sintetizai.com/developers"},"security":[{"AuthSession":[]}],"tags":[{"name":"Sources","description":"Upload and process study material"},{"name":"Generations","description":"Create and inspect study outputs"},{"name":"Library","description":"Read and update saved study material"},{"name":"Account","description":"Account and billing operations"}],"paths":{"/api/signup":{"post":{"operationId":"createAccount","summary":"Create an account","description":"Create an account","security":[],"parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}}},"responses":{"201":{"description":"Account created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/upload":{"post":{"operationId":"uploadStudyMaterial","summary":"Upload files or import a public study document URL","description":"Upload files or import a public study document URL","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string","format":"binary"}},"url":{"type":"string","format":"uri","description":"Public HTTP or HTTPS document URL."}}}}}},"responses":{"201":{"description":"Documents accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"413":{"description":"Input exceeds a configured limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/summarize":{"post":{"operationId":"createStudySummary","summary":"Create a source-grounded study summary","description":"Create a source-grounded study summary","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeRequest"}}}},"responses":{"202":{"description":"Generation accepted. Poll the Location URL until the job is ready or failed.","headers":{"Location":{"description":"Relative URL to poll for the durable generation status.","schema":{"type":"string","example":"/api/generations/job_123"}},"Retry-After":{"description":"Suggested number of seconds before the first status poll.","schema":{"type":"integer","minimum":1,"example":2}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedGenerationResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/generations":{"get":{"operationId":"listGenerations","summary":"List the signed-in user's generations","description":"List the signed-in user's generations","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"responses":{"200":{"description":"Generation list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/generations/{generationId}":{"get":{"operationId":"getGeneration","summary":"Read a generation status","description":"Read a generation status","parameters":[{"$ref":"#/components/parameters/ApiVersion"},{"name":"generationId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Generation status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/generations/{generationId}/retry":{"post":{"operationId":"retryGeneration","summary":"Retry a failed generation","description":"Retry a failed generation","parameters":[{"$ref":"#/components/parameters/ApiVersion"},{"name":"generationId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Retry accepted. Poll the Location URL until the job is ready or failed.","headers":{"Location":{"description":"Relative URL to poll for the durable generation status.","schema":{"type":"string","example":"/api/generations/job_123"}},"Retry-After":{"description":"Suggested number of seconds before the first status poll.","schema":{"type":"integer","minimum":1,"example":2}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedGenerationResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/tts":{"post":{"operationId":"generateStudyAudio","summary":"Generate optional audio from a ready summary","description":"Generate optional audio from a ready summary","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TtsRequest"}}}},"responses":{"202":{"description":"Audio generation accepted. Poll the Location URL until the job is ready or failed.","headers":{"Location":{"description":"Relative URL to poll for the durable generation status.","schema":{"type":"string","example":"/api/generations/job_123"}},"Retry-After":{"description":"Suggested number of seconds before the first status poll.","schema":{"type":"integer","minimum":1,"example":2}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedGenerationResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/notes":{"get":{"operationId":"listNotes","summary":"List saved notes","description":"List saved notes","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"responses":{"200":{"description":"Saved note list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateNote","summary":"Update a saved note","description":"Update a saved note","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNoteRequest"}}}},"responses":{"200":{"description":"Note updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteNote","summary":"Delete a saved note","description":"Delete a saved note","parameters":[{"$ref":"#/components/parameters/ApiVersion"},{"name":"id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Note deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/folders":{"get":{"operationId":"listFolders","summary":"List folders","description":"List folders","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"responses":{"200":{"description":"Folder list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createFolder","summary":"Create a folder","description":"Create a folder","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":60}}}}}},"responses":{"201":{"description":"Folder created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/audio/{noteId}":{"get":{"operationId":"streamNoteAudio","summary":"Stream an authorized audio file","description":"Stream an authorized audio file","parameters":[{"$ref":"#/components/parameters/ApiVersion"},{"name":"noteId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Range","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Audio stream.","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"206":{"description":"Partial audio stream.","content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/activity":{"get":{"operationId":"listActivity","summary":"Read activity for the signed-in user","description":"Read activity for the signed-in user","parameters":[{"$ref":"#/components/parameters/ApiVersion"},{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Activity page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/search":{"get":{"operationId":"searchLibrary","summary":"Search the signed-in user's library","description":"Search the signed-in user's library","parameters":[{"$ref":"#/components/parameters/ApiVersion"},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Search results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/account/export":{"get":{"operationId":"exportAccountData","summary":"Export account data","description":"Export account data","parameters":[{"$ref":"#/components/parameters/ApiVersion"}],"responses":{"200":{"description":"JSON account export.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonResponse"}}}},"400":{"description":"The request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"The authenticated account cannot perform this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"The resource is in a state that does not allow this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"The input is well-formed but cannot be processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"The request exceeded a configured rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"The server could not complete the operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"parameters":{"ApiVersion":{"name":"X-SintetizAI-API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1"],"default":"1"},"description":"Optional version selector. Missing means the current stable version."}},"schemas":{"ErrorResponse":{"type":"object","required":["error","code","message","resolution","status"],"properties":{"error":{"type":"string","description":"Backward-compatible error identifier or message."},"code":{"type":"string","pattern":"^[a-z][a-z0-9_]+$","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable explanation of the failure."},"resolution":{"type":"string","description":"Action an agent or developer can take next."},"status":{"type":"integer","minimum":400,"maximum":599},"details":{"type":["object","array","null"],"description":"Optional validation or resource details."}}},"JsonResponse":{"type":"object","description":"Successful response object. Fields are defined by each operation and may include persisted IDs, status or result data.","additionalProperties":true},"AcceptedGenerationResponse":{"type":"object","required":["generationId","status","statusUrl"],"properties":{"generationId":{"type":"string","description":"Durable job identifier used for later status requests."},"status":{"type":"string","enum":["queued","running"]},"phase":{"type":["string","null"]},"noteId":{"type":["string","null"]},"statusUrl":{"type":"string","description":"Relative polling URL. It matches the Location response header."}},"additionalProperties":true},"SignupRequest":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8},"name":{"type":"string","maxLength":80}}},"SummarizeRequest":{"type":"object","required":["language","durationMinutes"],"properties":{"text":{"type":"string"},"documentIds":{"type":"array","items":{"type":"string"}},"language":{"type":"string","enum":["es","en","fr","it","pt"]},"durationMinutes":{"type":"integer","minimum":1,"maximum":60},"type":{"type":"string"},"generateAudio":{"type":"boolean","default":false},"model":{"type":"string","enum":["basic","premium"],"default":"basic"}}},"TtsRequest":{"type":"object","required":["text","language"],"properties":{"text":{"type":"string","minLength":1},"language":{"type":"string","enum":["es","en","fr","it","pt"]},"noteId":{"type":"string"},"generationId":{"type":"string"},"durationMinutes":{"type":"integer","minimum":1,"maximum":60},"model":{"type":"string","enum":["basic","premium"]}}},"UpdateNoteRequest":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"folderId":{"type":["string","null"]},"order":{"type":"integer"}}}},"securitySchemes":{"AuthSession":{"type":"apiKey","in":"cookie","name":"__Secure-authjs.session-token","description":"Signed Auth.js browser session. Development may use the unprefixed authjs.session-token cookie."}}}}