Skip to content

Adds a child to the caller's pod.

POST
/api/v1/learners
curl --request POST \
--url https://app.jadwigo.pl/api/v1/learners \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "first_name": "example", "age_group": "example", "goals": [ { "name": "example" } ] }'

The server makes the handle, unique in the pod, from the first name.

Media typeapplication/json
object
first_name
required
string
>= 1 characters <= 60 characters
age_group
Any of:
string
>= 1 characters <= 30 characters
goals
Array<object>
<= 5 items
object
name
required
string
>= 1 characters <= 120 characters

Example generated

{
"first_name": "example",
"age_group": "example",
"goals": [
{
"name": "example"
}
]
}

Created.

Media typeapplication/json
object
learner
required
object
id
required
string
/^lrn_[0-7][0-9a-hjkmnp-tv-z]{25}$/
pod_id
required
string
/^pod_[0-7][0-9a-hjkmnp-tv-z]{25}$/
handle
required
string
>= 1 characters
first_name
required
string
>= 1 characters
age_group
required
string | null
created_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))$/
goals
required
Array<object>
object
id
required
string
/^gol_[0-7][0-9a-hjkmnp-tv-z]{25}$/
pod_id
required
string
/^pod_[0-7][0-9a-hjkmnp-tv-z]{25}$/
learner_id
required
string
/^lrn_[0-7][0-9a-hjkmnp-tv-z]{25}$/
name
required
string
>= 1 characters
created_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))$/

Example generated

{
"learner": {
"id": "example",
"pod_id": "example",
"handle": "example",
"first_name": "example",
"age_group": "example",
"created_at": "2026-04-15T12:00:00Z"
},
"goals": [
{
"id": "example",
"pod_id": "example",
"learner_id": "example",
"name": "example",
"created_at": "2026-04-15T12:00:00Z"
}
]
}

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"
}
}

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"
}
}