Create a rocket
Add a rocket to an account.
POST/rockets
Authorizations
bearerAuthbearer <JWT>A token issued by the console.
Request body
The rocket to create.
namestringrequiredDisplay name.
status"design" | "testing" | "flying" | "retired"Lifecycle of a rocket.
stagesStage[]requiredAt least one stage.
Show child attributes
namestringrequiredName of the stage.
enginesinteger<int32>requiredNumber of engines on the stage.
reusablebooleanWhether the stage lands back.
curl -X POST 'https://api.rockets.example/v1/rockets' \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Zenith Heavy",
"status": "design",
"stages": [
{
"name": "Booster",
"engines": 9,
"reusable": false
}
]
}'{
"name": "Zenith Heavy",
"status": "design",
"stages": [
{
"name": "Booster",
"engines": 9,
"reusable": false
}
]
}Responses
201
201The rocket was created.
idstring<uuid>requiredIdentifier of the rocket.
namestringrequiredDisplay name.
status"design" | "testing" | "flying" | "retired"requiredLifecycle of a rocket.
thrustinteger<int64>Thrust at sea level, in kilonewtons.
stagesStage[]requiredStages, from the booster upwards.
Show child attributes
namestringrequiredName of the stage.
enginesinteger<int32>requiredNumber of engines on the stage.
reusablebooleanWhether the stage lands back.
createdAtstring<date-time>
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Zenith Heavy",
"status": "design",
"thrust": 7600,
"stages": [
{
"name": "Booster",
"engines": 9,
"reusable": false
}
],
"createdAt": "2026-01-01T00:00:00Z"
}422
422The payload did not pass validation.
codestringrequiredMachine-readable code.
messagestringrequiredWhat went wrong.
errorsobject[]One entry per rejected field.
Show child attributes
fieldstringreasonstring
{
"code": "not_found",
"message": "string",
"errors": [
{
"field": "stages",
"reason": "must contain at least one stage"
}
]
}