Shapeways Models API
Upload, list, retrieve, and delete 3D models.
Upload, list, retrieve, and delete 3D models.
openapi: 3.0.3
info:
title: Shapeways Cart Models API
version: v1
description: 'The Shapeways API provides programmatic access to Shapeways'' on-demand 3D printing and additive manufacturing platform: browse the material catalog, upload and manage 3D models, retrieve shipping options, and place and track manufacturing orders. Authentication is OAuth 2.0 (client_credentials for single-account apps, authorization_code + refresh_token for multi-user apps). Endpoints are versioned with a trailing /v1 path segment. This document is a faithful transcription of the public API reference published at https://developers.shapeways.com/ — it is not an official Shapeways OpenAPI document.'
x-provenance:
generated: '2026-07-21'
method: generated
source: https://developers.shapeways.com/api-reference
contact:
name: Shapeways API
email: api@shapeways.com
url: https://developers.shapeways.com/
servers:
- url: https://api.shapeways.com
description: Production
security:
- oauth2: []
tags:
- name: Models
description: Upload, list, retrieve, and delete 3D models.
paths:
/models/v1:
post:
operationId: uploadModel
tags:
- Models
summary: Upload a model
description: Upload a 3D model file to the authenticated account.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ModelUpload'
responses:
'200':
description: The uploaded model.
content:
application/json:
schema:
$ref: '#/components/schemas/Model'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
get:
operationId: listModels
tags:
- Models
summary: List models
description: List the authenticated account's models, 36 per page.
parameters:
- name: page
in: query
required: false
schema:
type: integer
responses:
'200':
description: A page of models.
content:
application/json:
schema:
$ref: '#/components/schemas/ModelList'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/models/{modelId}/v1:
get:
operationId: getModel
tags:
- Models
summary: Get model information
parameters:
- name: modelId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Model detail.
content:
application/json:
schema:
$ref: '#/components/schemas/Model'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
delete:
operationId: deleteModel
tags:
- Models
summary: Delete a model
parameters:
- name: modelId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Deletion result.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
schemas:
ModelList:
type: object
properties:
result:
type: string
models:
type: array
items:
$ref: '#/components/schemas/Model'
nextActionSuggestions:
type: object
Result:
type: object
description: Standard response envelope. All responses carry a result field.
properties:
result:
type: string
description: success or failure.
nextActionSuggestions:
type: object
Model:
type: object
properties:
result:
type: string
modelId:
type: integer
modelVersion:
type: integer
title:
type: string
fileName:
type: string
contentLength:
type: integer
fileMd5Checksum:
type: string
secretKey:
type: string
claimKey:
type: string
urls:
type: object
spin:
type: string
printable:
type: object
materials:
type: object
restrictions:
type: object
nextActionSuggestions:
type: object
ModelUpload:
type: object
required:
- file
- fileName
- hasRightsToModel
- acceptTermsAndConditions
properties:
file:
type: string
description: Base64-encoded model file.
fileName:
type: string
hasRightsToModel:
type: boolean
acceptTermsAndConditions:
type: boolean
uploadScale:
type: number
title:
type: string
description:
type: string
isPublic:
type: boolean
isClaimable:
type: boolean
isForSale:
type: boolean
isDownloadable:
type: boolean
tags:
type: array
items:
type: string
materials:
type: object
defaultMaterialId:
type: integer
categories:
type: array
items:
type: integer
responses:
Unauthorized:
description: Missing or invalid OAuth 2.0 bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
BadRequest:
description: Malformed or invalid request.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
NotFound:
description: Resource not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
TooManyRequests:
description: Rate limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Result'
securitySchemes:
oauth2:
type: oauth2
description: OAuth 2.0. client_credentials for single-account apps; authorization_code (+ refresh_token) for multi-user apps.
flows:
clientCredentials:
tokenUrl: https://api.shapeways.com/oauth2/token
scopes: {}
authorizationCode:
authorizationUrl: https://api.shapeways.com/oauth2/authorize
tokenUrl: https://api.shapeways.com/oauth2/token
scopes: {}