openapi: 3.0.3 info: title: SpaceX REST Capsules Dragons API description: 'Community-maintained, open-source REST API for SpaceX data — launches, rockets, capsules, cores, crew, dragons, payloads, ships, landpads, launchpads, Starlink satellites, the Tesla Roadster ephemeris, company info, and historical events. Source: https://github.com/r-spacex/SpaceX-API (Apache 2.0). STATUS: Maintenance-only as of 2024. New launches/missions are NOT being added. Existing data remains queryable; project remains hosted for historical lookups and as a teaching/sample API. Each resource is independently versioned. The Launches resource has both v4 and v5 surfaces; v5 omits the v4 response/query transforms (`tdb` typo retained for v4 parity). All other resources are v4-only. Authentication: only required for destructive (create/update/delete) admin routes via the `spacex-key` header. All read operations are public. Querying: every resource exposes a POST `/{resource}/query` endpoint that accepts a mongoose-paginate-v2 body of the form `{ query: , options: {...} }`. ' version: '4.0' contact: name: r-spacex community url: https://github.com/r-spacex/SpaceX-API license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 x-generated-from: documentation x-last-validated: '2026-05-29' x-status: maintenance-only servers: - url: https://api.spacexdata.com description: Canonical hosted REST endpoint (community-operated) security: [] tags: - name: Dragons description: Detailed info about Dragon capsule versions. paths: /v4/dragons: get: operationId: listDragons summary: List All Dragon Versions description: Return every Dragon capsule version record (Dragon 1, Dragon 2, etc.). tags: - Dragons responses: '200': description: Array of Dragon version records. content: application/json: schema: type: array items: $ref: '#/components/schemas/Dragon' x-microcks-operation: delay: 0 dispatcher: FALLBACK /v4/dragons/{id}: get: operationId: getDragon summary: Get One Dragon Version description: Return a single Dragon version record by its UUID. tags: - Dragons parameters: - $ref: '#/components/parameters/IdParam' responses: '200': description: Dragon version record. content: application/json: schema: $ref: '#/components/schemas/Dragon' '404': $ref: '#/components/responses/NotFound' x-microcks-operation: delay: 0 dispatcher: FALLBACK /v4/dragons/query: post: operationId: queryDragons summary: Query Dragons description: Run a mongoose-paginate-v2 query against the dragons collection. tags: - Dragons requestBody: $ref: '#/components/requestBodies/QueryBody' responses: '200': description: Paginated dragon result. content: application/json: schema: $ref: '#/components/schemas/PaginatedDragons' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: CubicMetersFeet: type: object properties: cubic_meters: type: number nullable: true cubic_feet: type: number nullable: true MetersFeet: type: object properties: meters: type: number nullable: true feet: type: number nullable: true PaginatedDragons: allOf: - $ref: '#/components/schemas/PaginationEnvelope' - type: object properties: docs: type: array items: $ref: '#/components/schemas/Dragon' PaginationEnvelope: type: object description: Default mongoose-paginate-v2 wrapper. properties: totalDocs: type: integer offset: type: integer limit: type: integer totalPages: type: integer page: type: integer pagingCounter: type: integer hasPrevPage: type: boolean hasNextPage: type: boolean prevPage: type: integer nullable: true nextPage: type: integer nullable: true QueryRequest: type: object description: mongoose-paginate-v2 query body. properties: query: type: object description: MongoDB find() filter document. additionalProperties: true options: type: object description: Pagination + projection options. properties: select: description: Fields to include/exclude (string or object). oneOf: - type: string - type: object sort: description: Sort order (string or object). oneOf: - type: string - type: object offset: type: integer page: type: integer limit: type: integer pagination: type: boolean populate: description: Populate definitions (array, object, or string). oneOf: - type: array items: {} - type: object - type: string Dragon: type: object description: A Dragon capsule version (Dragon 1, Dragon 2, etc.). properties: id: type: string name: type: string type: type: string active: type: boolean crew_capacity: type: integer sidewall_angle_deg: type: number orbit_duration_yr: type: number dry_mass_kg: type: number dry_mass_lb: type: number first_flight: type: string nullable: true heat_shield: type: object properties: material: type: string size_meters: type: number temp_degrees: type: number dev_partner: type: string thrusters: type: array description: Array of thruster groups. items: type: object additionalProperties: true launch_payload_mass: $ref: '#/components/schemas/KgLb' launch_payload_vol: $ref: '#/components/schemas/CubicMetersFeet' return_payload_mass: $ref: '#/components/schemas/KgLb' return_payload_vol: $ref: '#/components/schemas/CubicMetersFeet' pressurized_capsule: type: object properties: payload_volume: $ref: '#/components/schemas/CubicMetersFeet' trunk: type: object properties: trunk_volume: $ref: '#/components/schemas/CubicMetersFeet' cargo: type: object properties: solar_array: type: integer unpressurized_cargo: type: boolean height_w_trunk: $ref: '#/components/schemas/MetersFeet' diameter: $ref: '#/components/schemas/MetersFeet' flickr_images: type: array items: type: string format: uri wikipedia: type: string format: uri description: type: string required: - name - type - active - crew_capacity Error: type: object properties: message: type: string description: Human-readable error message. status: type: integer description: HTTP status code echoed in body. KgLb: type: object properties: kg: type: number nullable: true lb: type: number nullable: true parameters: IdParam: name: id in: path required: true description: Resource UUID (MongoDB ObjectId, e.g. `5e9d0d95eda69973a809d1ec`). schema: type: string pattern: ^[a-f0-9]{24}$ responses: NotFound: description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/Error' requestBodies: QueryBody: description: mongoose-paginate-v2 query body. required: false content: application/json: schema: $ref: '#/components/schemas/QueryRequest' example: query: {} options: limit: 10 page: 1 securitySchemes: SpacexKey: type: apiKey in: header name: spacex-key description: 'Admin API key for destructive (create/update/delete) operations. Not required for any read endpoint. '