### Materials

Use the /materials/v1 API endpoint to get up-to-date information about Shapeways’ materials.

---

### GET - List materials

Retrieves information on all available 40+ Shapeways’ materials.

#### Request

```
GET /materials/v1
```

#### Response

| parameters  | type      | description                                         |
|-------------|-----------|-----------------------------------------------------|
| result      | string    | A 'result' field stating 'success'                 |
| materials   | object    | Material objects                                   |

```json
{
  "<materialId>":{
    "id":"<materialId>",
    "type":"object",
    "description":"Material Object",
    "properties":{
       "title":{
          "type":"string",
          "description":"Material name"
       },
       "supportsColorFiles":{
          "type":"boolean",
          "description":"Material supports color"
       },
       "printerId":{
          "type":"int",
          "description":"Printer id that this material is printed on"
       },
       "swatch":{
          "type":"string",
          "description":"The url for the material swatch"
       },
       "restrictions":{
          "id":"restrictions",
          "type":"object",
          "description":"Material Restriction Object",
          "properties":{
             "<restrictionId>":{
                "id":"<restrictionId>",
                "type":"object",
                "description":"Material Restriction Object",
                "properties":{
                   "restrictionId":{
                      "type":"int",
                      "description":"Material Restriction ID"
                   },
                   "restrictionName":{
                      "type":"string",
                      "description":"Material Restriction Name"
                   },
                   "restrictionEntityIds":{
                      "type":"array",
                      "description":"Material Restriction Entity Ids",
                      "default":[

],
                      "items":{
                         "type":"int",
                         "description":"Material Restriction Entity Id"
                      }
                   }
                }
             }
          }
       }
    }
  }
}
```

nextActionSuggestions

object

Suggestions for next actions

### GET - Material information

Retrieves information for a specific material (Specified by the materialId)

#### Request

```
GET /materials/{materialId}/v1
```

| parameters    | type    | required | description               |
|---------------|---------|----------|---------------------------|
| materialId    | int     | required | Material id              |

#### Response

| parameters    | type      | description                                  |
|---------------|-----------|----------------------------------------------|
| result        | string    | A 'result' field stating 'success'           |
| materialId    | int       | Material ID                                  |
| title         | string    | Material name                                |
| supportsColorFiles | boolean | Material supports color                       |
| printerId     | int       | Printer id that this material is printed on  |
| swatch        | string    | The url for the material swatch              |
| restrictions   | object    | Material Restriction Object                   |

```json
{
  "<restrictionId>":{
    "id":"<restrictionId>",
    "type":"object",
    "description":"Material Restriction Object",
    "properties":{
       "restrictionId":{
          "type":"int",
          "description":"Material Restriction ID"
       },
       "restrictionName":{
          "type":"string",
          "description":"Material Restriction Name"
       },
       "restrictionEntityIds":{
          "type":"array",
          "description":"Material Restriction Entity Ids",
          "default":[

],
          "items":{
             "type":"int",
             "description":"Material Restriction Entity Id"
          }
       }
    }
  }
}
```

rejections

array

list of rejection Objects

```json
{
 "rejections":[
    {
       "reasonTitle":{
          "type":"string",
          "description":"The rejection reason type name"
       },
       "comment":{
          "type":"string",
          "description":"The rejection comment with details about the rejection"
       },
       "pictureUrl":{
          "type":"string",
          "description":"A url containing the rejection picture (if present)"
       }
    }
 ]
}
```

nextActionSuggestions

object

Suggestions for next actions

### Models

Easily manage your Shapeways’ 3D models with the /models/v1 API endpoint.

---

### POST - Upload a model

Uploads a new model. See [Upload a model](https://developers.shapeways.com/quick-start#upload-model) for instructions and code examples.

#### Request

```
POST /models/v1
```

| parameters    | type     | required | description                                         |
|---------------|----------|----------|-----------------------------------------------------|
| file          | string   | required | Model file data                                     |
| fileName      | string   | required | Model filename (with correct file extension)       |
| uploadScale   | float    | optional | Model scale in meters                               |
| hasRightsToModel | boolean | required | You have the rights to model                        |
| acceptTermsAndConditions | boolean | required | You accept the Shapeways' Terms and Conditions     |
| title         | string   | optional | Model title                                        |
| description   | string   | optional | Model description                                   |
| isPublic      | boolean  | optional | Model visibility                                    |
| isClaimable   | boolean  | optional | Whether a model is claimable with a claim key      |
| isForSale     | int      | optional | Model is for sale                                   |
| isDownloadable | boolean  | optional | Model is downloadable                               |
| tags          | array    | optional | Model tags                                         |
| materials     | object   | optional | Material objects                                    |
| defaultMaterialId | int    | optional | The material id for this model's default material  |
| categories     | array    | optional | Array of category ids.                             |

#### Response

| parameters      | type      | description                                         |
|-----------------|-----------|-----------------------------------------------------|
| result          | string    | A 'result' field stating 'success'                 |
| modelId        | int       | Model ID                                          |
| modelVersion    | int       | Model version                                     |
| title          | string    | Model title                                       |
| fileName      | string    | Model filename                                    |
| contentLength  | int       | The file size of the uploaded file in bytes      |
| fileMd5Checksum | string    | The md5 checksum of the file                     |
| description     | string    | Model description                                  |
| isPublic       | boolean   | Can be seen by the public                         |
| isClaimable    | boolean   | Can be claimed via claimKey                        |
| isForSale      | boolean   | Model is for sale                                 |
| isDownloadable  | boolean   | Model is downloadable                             |
| materials       | object    | Material objects                                   |
| secretKey      | string    | Model secret key                                   |
| claimKey       | string    | Model claim key                                    |
| defaultMaterialId | int     | The material id for this model's default material  |
| categories      | object    | Category Objects                                    |
| tags            | string    | Tags                                             |
| urls            | object    | Url Objects                                        |
| spin            | string    | SPIN                                              |
| printable       | string    | Model Printability                                 |
| nextActionSuggestions | object | Suggestions for next actions                       |

### GET - List models

Retrieves a list of models in the Shapeways account.

#### Request

```
GET /models/v1
```

| parameters | type | required | description |
|------------|------|----------|-------------|
| page       | int  | optional | The model page, starting with 1. Each page contains 36 models. |

#### Response

| parameters | type | description |
|------------|------|-------------|
| result     | string | A 'result' field stating 'success' |
| models     | array  | List of models |

```json
{
  "modelId":{
    "type":"int",
    "description":"Model ID"
  },
  "modelVersion":{
    "type":"int",
    "description":"Model version"
  },
  "title":{
    "type":"string",
    "description":"Model title"
  }
}
```

nextActionSuggestions

object

Suggestions for next actions

### GET - Model information

Retrieves information for a specific model like material printability and price (Specified by the modelId).

#### Request

```
GET /models/{modelId}/v1
```

| parameters | type | required | description |
|------------|------|----------|-------------|
| modelId    | int  | required | Model id    |

#### Response

| parameters | type      | description                                          |
|------------|-----------|-----------------------------------------------------|
| result     | string    | A 'result' field stating 'success'                  |
| modelId   | int       | Model ID                                          |
| modelVersion | int     | Model version                                    |
| title     | string    | Model title                                        |
| fileName   | string    | Model filename                                      |
| contentLength | int    | The file size of the uploaded file in bytes        |
| fileMd5Checksum | string | The md5 checksum of the file                       |
| fileData | string | Model file data                                    |
| description | string   | Model description                                   |
| isPublic   | boolean   | Can be seen by the public                          |
| isClaimable | boolean  | Can be claimed via claimKey                        |
| isForSale  | boolean  | Model is for sale                                  |
| isDownloadable | boolean | Model is downloadable                              |
| materials | object | Material objects                                   |
| secretKey   | string  | Model secret key                                   |
| claimKey | string | Model claim key                                    |
| defaultMaterialId | int | The material id for this model's default material|
| categories | object | Category Objects                                   |
| tags | string | Tags                                             |
| urls | object | Url Objects                                       |
| spin | string | SPIN                                              |
| printable | string | Model Printability                                 |
| restrictions | object | Material Restriction Object                          |

```json
{
  "<materialId>":{
    "id":"<materialId>",
    "type":"object",
    "description":"Material Object",
    "properties":{
       "markup":{
          "type":"float",
          "description":"Markup amount"
       },
       "isActive":{
          "type":"boolean",
          "description":"Is this material active"
       },
       "price":{
          "type":"float",
          "description":"Price"
       }
    }
  }
}
```

nextActionSuggestions

object

Suggestions for next actions

### DELETE - Delete a model

Deletes a model from the Shapeways’ account (Specified by the modelId).

#### Request

```
DELETE /models/{modelId}/v1
```

| parameters | type     | required | description                              |
|------------|----------|----------|------------------------------------------|
| modelId    | int      | required | ID of the model to delete.              |

#### Response

| parameters   | type       | description                                    |
|--------------|------------|------------------------------------------------|
| result       | string     | A 'result' field stating 'success'              |
| modelId      | int        | ID of the model that was deleted.              |
| nextActionSuggestions | object | Suggestions for next actions                |

### Orders

Use the /orders/v1 API endpoint to integrate with Shapeways fulfillment services to seamlessly place and manage orders.

---

### POST - Place an order

Creates and places a new order. See [Placing your first order](https://developers.shapeways.com/quick-start#placing-your-first-order) instructions and code examples.

#### Request

```
POST /orders/v1
```

| parameters | type       | required | description                              |
|------------|------------|----------|------------------------------------------|
| firstName   | string     | required | First name for shipping address          |
| lastName    | string     | required | Last name for shipping address           |
| country      | string     | required | Shipping address country name or 2-letter code [(ISO 3166)](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) |
| state        | string     | required | Shipping address state or region.       |
| city         | string     | required | Shipping address city name                 |
| address1     | string     | required | Street Address                            |
| address2     | string     | optional | Apartment or Suite                        |
| address3     | string     | optional | Company or c/o                           |
| zipCode      | string     | required | Shipping address zip code.               |
| phoneNumber   | string    | required | Customer phone number.                   |
| items        | array      | required | Set of items in your order               |
| incentives    | array      | optional | Set of incentives to apply to the order  |
| paymentVerificationId | string | optional | Shapeways-issued id to authorize payments for your app |
| paymentMethod | string     | required | Payment method for this order            |
| shippingOption | string     | required | Shipping option for this order           |
| manufacturingSpeed | string | optional | Manufacturing speed for this order       |
| refNumber    | string     | optional | Reference number associated with this order. |
| metadata      | array      | optional | metadata                                  |

#### Response

| parameters         | type     | description                                      |
|--------------------|----------|--------------------------------------------------|
| result              | string   | A 'result' field stating 'success'                |
| orderId            | int      | Id of the order that was created                 |
| productionOrderIds | array    | Set of production order ids                     |

nextActionSuggestions

object

Suggestions for next actions

### GET - List orders

Retrieves information like number of orders, their statuses, and shipping dates.

#### Request

```
GET /orders/v1
```

| parameters      | type   | required | description                                      |
|-----------------|--------|----------|--------------------------------------------------|
| orderIds       | string | optional | comma separated list of order ids                 |

#### Response

| parameters       | type       | description                               |
|------------------|------------|-------------------------------------------|
| result           | string     | A 'result' field stating 'success'          |
| ordersCount      | object     | Contains a summary of the number of orders classified by status |
| ordersStatus     | json_object | Contains a detailed summary of each order and it's status |
| ordersInfo       | array | Contains target ship date, target delivery date and shipments for each order |

nextActionSuggestions

object

Suggestions for next actions

### GET - Order information

Retrieves information for a specific order placed through the API (Specified by the orderId).

#### Request

```
GET /orders/{orderId}/v1
```

| parameters      | type    | required | description                                      |
|-----------------|---------|----------|--------------------------------------------------|
| orderIds        | string  | optional | Filter by order ids provided for the api orders  |
| orderId         | string  | optional | Filter by the order id provided for the api order |
| firstName       | string  | optional | Filter by first name on the address that was used to place the order |
| lastName        | string  | optional | Filter by lastName name on the address that was used to place the order |
| country         | string  | optional | Filter by country on the address that was used to place the order |
| state           | string  | optional | Filter by state or region on the address that was used to place the order |
| city            | string  | optional | Filter by city on the address that was used to place the order |
| address1        | string  | optional | Filter by address1 that was used to place the order|
| address2        | string  | optional | Filter by address street (line 1) that was used to place the order |
| address3        | string  | optional | Filter by address street (line 2) that was used to place the order |
| zipCode         | string  | optional | Filter by zip code on the address that was used to place the order |
| phoneNumber     | string  | optional | Filter by phone number used to place the order |
| email           | string  | optional | Filter by email used to place the order |
| limit           | int     | optional | Limits the number of orders returned. Limit cannot exceed 100. |

#### Response

| parameters       | type      | description                                     |
|------------------|-----------|-------------------------------------------------|
| result           | string    | A 'result' field stating 'success'               |
| ordersCount      | object    | Contains a summary of the number of orders classified by status |
| ordersStatus     | json_object | Contains a detailed summary of each order and its status |
| ordersInfo       | array     | Contains target ship date, target delivery date and shipments for each order |

nextActionSuggestions

object

Suggestions for next actions

### Shipping Options

Use the /cart/shipping-options/v1 API endpoint to determine what shipping options are available for your order.

---

### GET - Shipping Options

Retrieves information about the shipping options available to the shipping location

#### Request

```
GET /cart/shipping-options/v1
```

| parameters | type   | required | description                                    |
|------------|--------|----------|------------------------------------------------|
| country     | string | required | 2-letter country code (ISO 3166) of the shipping address |
| zipCode     | string | optional | Shipping address zip code                      |

#### Response

| parameters      | type      | description                                        |
|-----------------|-----------|---------------------------------------------------|
| result          | string    | A 'result' field stating 'success'                 |
| shippingOptions | object    | Available shipping options                        |

```json
{
  "shippingOptionId":{
    "type":"int",
    "description":"Id of the intended shipping option. Should be included in the request to the order creation endpoint to set the shipping option"
  },
  "price":{
    "type":"float",
    "description":"Cost of that shipping option without tax in USD"
  },
  "name":{
    "type":"string",
    "description":"Display name of shipping option"
  },
  "inTransitDaysMin":{
    "type":"int",
    "description":"Minimum shipping days (Business days)"
  },
  "inTransitDaysMax":{
    "type":"int",
    "description":"Maximum shipping days (Business days)"
  }
}
```
