Skip to content

Sends one try at the current question, or a skip.

POST
/api/v1/attempts/{id}/answers
curl --request POST \
--url https://app.jadwigo.pl/api/v1/attempts/example/answers \
--header 'Content-Type: application/json' \
--data '{ "event_id": "example", "seq": 1, "try_no": 1, "latency_ms": 1, "asked_at": "2026-04-15T12:00:00Z", "answered_at": "2026-04-15T12:00:00Z", "kind": "try", "value": { "chosen": [ "example" ] } }'

No sign-in: the attempt id is the access, and whoever holds it may use it. Strict: a field the server owns (correct, mistake_class, help_used) is refused. Idempotent by event_id.

id
required
string
/^att_[0-7][0-9a-hjkmnp-tv-z]{25}$/
Media typeapplication/json
One of:
object
event_id
required
string
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
seq
required
integer
>= 1 <= 9007199254740991
try_no
required
integer
>= 1 <= 9007199254740991
latency_ms
required
integer
<= 9007199254740991
asked_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
answered_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
kind
required
string
Allowed value: try
value
required
Any of:
object
chosen
required
Array<string>

Created.

Media typeapplication/json
object
event_id
required
string
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
seq
required
integer
>= 1 <= 9007199254740991
try_no
required
integer
>= 1 <= 9007199254740991
replayed
required
boolean
correct
required
boolean | null
parts
required
Any of:
Array<object>
object
id
required
string
correct
required
boolean
reveal
required
Any of:
object
why
string
worked_solution
Array<string>
other_form
string
question_form
string
ended
required
Any of:
string
Allowed values: correct skipped missed done
next
required
Any of:
object
seq
required
integer
>= 1 <= 9007199254740991
lesson_question_id
required
string
/^lq_[0-7][0-9a-hjkmnp-tv-z]{25}$/
question_type
required
string
Allowed values: true_false recognition lettered_choice multi_select mark_numbers fraction_compare production short_text expression measure fill_gaps fill_table label_picture column pyramid clock_read money_count order bucket match number_line_place hotspot spatial_build draw_graph clock_set money_pay fraction_shade area_model explain
say
required
string
question
required
One of:
object
family
required
string
Allowed value: choose
data
required
object
stem
object
text
string
image
string
image_alt
string
text_replaces_say
boolean
pictures
Array<object>
object
src
required
string
alt
required
string
width
required
number
height
required
number
decorative
boolean
labels
object
range
required
array
>= 2 items <= 2 items
items
required
Array<object>
object
content
required
string
coordinates
required
array
>= 2 items <= 2 items
alignment
required
string
math
boolean
terminal
object
lang
required
string
Allowed value: bash
copy
required
boolean
lines
required
Array<object>
object
cmd
required
string
out
required
Any of:
Array<string>
figure
One of:
object
kind
required
string
Allowed value: expression
text
required
string
reference
object
prompt
required
string
text
required
string
audio
object
clip
required
string
slow
string
audio_text
object
text
required
string
language
required
string
slow
boolean
options
required
Array<object>
object
id
required
string
content
required
One of:
object
kind
required
string
Allowed value: text
text
required
string
letter
string
select
required
string
Allowed values: one many
layout
required
string
Allowed values: list grid binary lettered inline
tokens
string
Allowed values: marked words
line
string
boost
string
added
required
string
Allowed values: planned twin
placed
required
Any of:
string
Allowed values: now review_round
added_for
required
Any of:
integer
>= 1 <= 9007199254740991
help_released
required
integer
<= 9007199254740991
help
required
Array<object>
object
rung
required
integer
>= 1 <= 4
card
required
Any of:
object
text
required
string
picture
One of:
object
kind
required
string
Allowed value: image
src
required
string
alt
required
string
width
number
height
number
focus
Array<string>
focus
required
Array<string>
given
required
Any of:
object
key
additional properties
worked
required
Any of:
Array<string>
blank
required
boolean
hints
required
Array<object>
object
text
required
string
pictures
Array<object>
object
src
required
string
alt
required
string
width
required
number
height
required
number
decorative
boolean
labels
object
range
required
array
>= 2 items <= 2 items
items
required
Array<object>
object
content
required
string
coordinates
required
array
>= 2 items <= 2 items
alignment
required
string
math
boolean
tries
required
integer
<= 9007199254740991
ended
required
Any of:
string
Allowed values: correct skipped missed done
asked_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$/
attempt_status
required
string
Allowed values: in_progress paused finished

Example

{
"ended": "correct",
"next": {
"question_type": "true_false",
"question": {
"family": "choose",
"data": {
"stem": {
"pictures": [
{
"decorative": true,
"labels": {
"items": [
{
"math": false
}
]
}
}
],
"terminal": {
"lang": "bash"
},
"figure": {
"kind": "expression"
},
"audio_text": {
"slow": true
}
},
"options": [
{
"content": {
"kind": "text"
}
}
],
"select": "one",
"layout": "list",
"tokens": "marked"
}
},
"added": "planned",
"placed": "now",
"help": [
{
"card": {
"picture": {
"kind": "image"
}
},
"hints": [
{
"pictures": [
{
"decorative": true,
"labels": {
"items": [
{
"math": false
}
]
}
}
]
}
]
}
],
"ended": "correct"
},
"attempt_status": "in_progress"
}

An error: {error: {type, message}}. The type names the cause, and answers with one status:

  • 400: BadRequest, ServerFieldSupplied
  • 401: NotSignedIn, Unauthorized
  • 404: NotFound
  • 409: AccountMissing, AttemptClaimed, AttemptPreview, AssignmentClosed, AttemptFinished, AttemptNotFinished, AttemptPaused, QuestionNotOpen, TryOutOfOrder, AnswerConflict, EventIdMismatch, WriteOnce
  • 429: AnswerLimit
  • 502: BankUnavailable
Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: BadRequest ServerFieldSupplied NotSignedIn NotFound AccountMissing AttemptClaimed AttemptPreview AssignmentClosed AttemptFinished AttemptNotFinished AttemptPaused QuestionNotOpen TryOutOfOrder AnswerConflict EventIdMismatch WriteOnce AnswerLimit Unauthorized BankUnavailable
message
required
string

Example

{
"error": {
"type": "BadRequest"
}
}

An error: {error: {type, message}}. The type names the cause, and answers with one status:

  • 400: BadRequest, ServerFieldSupplied
  • 401: NotSignedIn, Unauthorized
  • 404: NotFound
  • 409: AccountMissing, AttemptClaimed, AttemptPreview, AssignmentClosed, AttemptFinished, AttemptNotFinished, AttemptPaused, QuestionNotOpen, TryOutOfOrder, AnswerConflict, EventIdMismatch, WriteOnce
  • 429: AnswerLimit
  • 502: BankUnavailable
Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: BadRequest ServerFieldSupplied NotSignedIn NotFound AccountMissing AttemptClaimed AttemptPreview AssignmentClosed AttemptFinished AttemptNotFinished AttemptPaused QuestionNotOpen TryOutOfOrder AnswerConflict EventIdMismatch WriteOnce AnswerLimit Unauthorized BankUnavailable
message
required
string

Example

{
"error": {
"type": "BadRequest"
}
}