> For the complete documentation index, see [llms.txt](https://synap.ac/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://synap.ac/docs/api/reference/attempts/report-cumulative-active-time-for-an-attempt-sitting.md).

# Report cumulative active time for an attempt sitting

```json
{"openapi":"3.0.1","info":{"title":"Synap API","version":"3.0.0"},"tags":[{"name":"Attempts","description":"Endpoints related to managing attempts for a quiz, whether it's a self-practice attempt or a high-stakes exam."}],"servers":[{"url":"https://api.synap.ac/v3","description":"Production"},{"url":"https://api-stage.synap.ac/v3","description":"Staging"}],"security":[{"SessionAuth":[]},{"PATAuth":[]},{"LegacySessionAuth":[]}],"components":{"securitySchemes":{"SessionAuth":{"type":"http","scheme":"bearer","description":"Authorize the request using a Session Token.","bearerFormat":"r:<token>"},"PATAuth":{"type":"http","scheme":"bearer","description":"Authorise the request using a personal access token.","bearerFormat":"p:"},"LegacySessionAuth":{"type":"apiKey","description":"[Legacy] Authorize the request using a Session Token.","in":"header","name":"X-Syn-Session-Token"}},"schemas":{"ObjectId":{"type":"string","description":"The primary key for each resource."},"AttemptActiveDuration":{"type":"object","required":["id","type"],"properties":{"id":{"$ref":"#/components/schemas/ObjectId"},"type":{"type":"string","description":"Identifies the Resource.","enum":["AttemptActiveDuration"]},"attributes":{"type":"object","additionalProperties":false,"properties":{"activeTime":{"type":"object","writeOnly":true,"required":["sittingMs"],"additionalProperties":false,"description":"Cumulative active-millisecond counters, never deltas, in the same shape the attempt stores them. The server merges every counter with max(), so resending is always safe. Send only counters that grew.","properties":{"sittingMs":{"type":"object","description":"Exactly one entry: the syncing sitting's id mapped to its own cumulative total. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":1,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000},"minProperties":1},"sectionMs":{"type":"object","description":"Sparse map of sectionId to cumulative active milliseconds for the attempt. Keys that are not real sections of the attempt are ignored. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}},"sectionInstructionsMs":{"type":"object","description":"Sparse map of sectionId to cumulative active milliseconds spent on that section's instructions screen, a subset of sectionMs. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}},"sectionOutroMs":{"type":"object","description":"Sparse map of sectionId to cumulative active milliseconds spent on that section's outro screen, a subset of sectionMs. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}},"attemptInstructionsMs":{"type":"integer","minimum":0,"maximum":2592000000,"description":"Cumulative active milliseconds on the attempt's own instructions screen, which precedes every section and so belongs to none of them."},"questionMs":{"type":"object","description":"Sparse map of questionId to cumulative active milliseconds for the attempt. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}}}},"totalMs":{"type":"integer","minimum":0,"readOnly":true,"description":"The attempt-wide merged lifetime total after this sync."}}},"relationships":{"type":"object","required":["attempt"],"additionalProperties":false,"properties":{"attempt":{"type":"object","description":"This is a resource linkage for a to-one relationship. It is like a Parse Pointer.","readOnly":false,"properties":{"data":{"type":"object","required":["id","type"],"nullable":false,"properties":{"id":{"$ref":"#/components/schemas/ObjectId"},"type":{"type":"string","description":"Identifies the Resource.","enum":["Attempt"]}}}}}}}}},"BackgroundJob":{"type":"object","required":["id","type"],"properties":{"id":{"$ref":"#/components/schemas/ObjectId"},"type":{"type":"string","description":"Identifies the Resource.","enum":["BackgroundJob"]},"attributes":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"createdAt":{"type":"string","readOnly":true},"timeStarted":{"type":"string","readOnly":true},"timeCompleted":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true},"status":{"type":"string","enum":["queued","delayed","started","stalled","successful","failed","panic"],"readOnly":true},"progress":{"type":"number","readOnly":true},"message":{"type":"string","readOnly":true},"data":{"type":"array","readOnly":true,"items":{"type":"array","readOnly":true,"items":{"oneOf":[{"type":"string"},{"type":"object"}],"maxItems":2}}},"params":{"type":"object","readOnly":true},"error":{"type":"string","readOnly":true},"result":{"type":"object","readOnly":true,"nullable":true}}},"relationships":{"type":"object","properties":{}}}},"BadRequestApiError":{"type":"object","description":"The request was invalid.","properties":{"id":{"type":"string","description":"Unique ID of this error occurrence."},"status":{"type":"string","description":"HTTP status code."},"code":{"type":"string","description":"Synap internal error code."},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"},"parameter":{"type":"string"}}}}},"UnauthorizedApiError":{"type":"object","description":"Unauthorized request.","properties":{"id":{"type":"string","description":"Unique ID of this error occurrence."},"status":{"type":"string","description":"HTTP status code."},"code":{"type":"string","description":"Synap internal error code."},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"},"parameter":{"type":"string"}}}}},"ForbiddenApiError":{"type":"object","description":"Forbidden request.","properties":{"id":{"type":"string","description":"Unique ID of this error occurrence."},"status":{"type":"string","description":"HTTP status code."},"code":{"type":"string","description":"Synap internal error code."},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"},"parameter":{"type":"string"}}}}},"NotFoundApiError":{"type":"object","description":"The request resource could not be found.","properties":{"id":{"type":"string","description":"Unique ID of this error occurrence."},"status":{"type":"string","description":"HTTP status code."},"code":{"type":"string","description":"Synap internal error code."},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"},"parameter":{"type":"string"}}}}},"ApiError":{"type":"object","description":"This is an error response structure. The id, status, code, title and detail will vary based on the error situation.","properties":{"id":{"type":"string","description":"Unique ID of this error occurrence."},"status":{"type":"string","description":"HTTP status code."},"code":{"type":"string","description":"Synap internal error code."},"title":{"type":"string"},"detail":{"type":"string"},"source":{"type":"object","properties":{"pointer":{"type":"string"},"parameter":{"type":"string"}}}}}}},"paths":{"/attempt-active-durations":{"post":{"summary":"Report cumulative active time for an attempt sitting","tags":["Attempts"],"parameters":[],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["type","attributes","relationships"],"properties":{"type":{"type":"string","description":"Identifies the Resource.","enum":["AttemptActiveDuration"]},"attributes":{"type":"object","required":["activeTime"],"additionalProperties":false,"properties":{"activeTime":{"type":"object","writeOnly":true,"required":["sittingMs"],"additionalProperties":false,"description":"Cumulative active-millisecond counters, never deltas, in the same shape the attempt stores them. The server merges every counter with max(), so resending is always safe. Send only counters that grew.","properties":{"sittingMs":{"type":"object","description":"Exactly one entry: the syncing sitting's id mapped to its own cumulative total. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":1,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000},"minProperties":1},"sectionMs":{"type":"object","description":"Sparse map of sectionId to cumulative active milliseconds for the attempt. Keys that are not real sections of the attempt are ignored. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}},"sectionInstructionsMs":{"type":"object","description":"Sparse map of sectionId to cumulative active milliseconds spent on that section's instructions screen, a subset of sectionMs. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}},"sectionOutroMs":{"type":"object","description":"Sparse map of sectionId to cumulative active milliseconds spent on that section's outro screen, a subset of sectionMs. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}},"attemptInstructionsMs":{"type":"integer","minimum":0,"maximum":2592000000,"description":"Cumulative active milliseconds on the attempt's own instructions screen, which precedes every section and so belongs to none of them."},"questionMs":{"type":"object","description":"Sparse map of questionId to cumulative active milliseconds for the attempt. Keys must match ^[A-Za-z0-9_-]{1,64}$, at most 100 per request.","maxProperties":100,"additionalProperties":{"type":"integer","minimum":0,"maximum":2592000000}}}},"totalMs":{"type":"integer","minimum":0,"readOnly":true,"description":"The attempt-wide merged lifetime total after this sync."}}},"relationships":{"type":"object","required":["attempt"],"additionalProperties":false,"properties":{"attempt":{"type":"object","description":"This is a resource linkage for a to-one relationship. It is like a Parse Pointer.","readOnly":false,"properties":{"data":{"type":"object","required":["id","type"],"nullable":false,"properties":{"id":{"$ref":"#/components/schemas/ObjectId"},"type":{"type":"string","description":"Identifies the Resource.","enum":["Attempt"]}}}}}}}}}}}}}},"responses":{"201":{"description":"Created","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AttemptActiveDuration"}}}}}},"202":{"description":"Accepted","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/BackgroundJob"}}}}}},"400":{"description":"Bad Request","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/BadRequestApiError"}}}}}}},"401":{"description":"Unauthorized","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/UnauthorizedApiError"}}}}}}},"403":{"description":"Forbidden","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/ForbiddenApiError"}}}}}}},"404":{"description":"Not Found","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/NotFoundApiError"}}}}}}},"409":{"description":"Conflict","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/ApiError"}}}}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://synap.ac/docs/api/reference/attempts/report-cumulative-active-time-for-an-attempt-sitting.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
