# Collect

        <p>The Collect resource connects a product to a custom collection.</p>
        {{ '/api/reference/collect.png' | image }}
        <p>Collects are meant for managing the relationship between products and custom collections. For every product in a custom collection there is a collect that tracks the ID of both the product and the custom collection. A product can be in more than one collection, and will have a collect connecting it to each collection. Unlike many Shopify resources, collects aren't apparent to store owners.</p>
        <p>Collects are for placing products in custom collections only. <a href="/docs/admin-api/rest/reference/products/smartcollection">Smart collections</a> use rules to determine which products are their members. Creating a collect that links a product to a smart collection results in a <strong>403 Forbidden</strong> error.</p>
        <p>For more information on custom collections, see the <a href="/docs/admin-api/rest/reference/products/customcollection">CustomCollection</a> resource.</p>

## Resource Properties

### Collect

* collection_id: The ID of the custom collection containing the product.
  * Type: x-string
  * Example: 841564295
* created_at: The date and time (<a href='https://en.wikipedia.org/wiki/ISO_8601' target="_blank">ISO 8601</a> format) when the collect was created.
  * Type: x-string
  * Example: "2018-04-25T13:51:12-04:00"
* id: A unique numeric identifier for the collect.
  * Type: x-string
  * Example: 841564295
* position: The position of this product in a manually sorted custom collection. The first position is 1. This value is applied only when the custom collection is sorted manually.
  * Type: x-string
  * Example: 2
* product_id: The unique numeric identifier for the product in the custom collection.
  * Type: x-string
  * Example: 632910392
* sort_value: This is the same value as <code>position</code> but padded with leading zeroes to make it alphanumeric-sortable. This value is applied only when the custom collection is sorted manually.
  * Type: x-string
  * Example: "0000000002"
* updated_at: The date and time (<a href='https://en.wikipedia.org/wiki/ISO_8601' target="_blank">ISO 8601</a> format) when the collect was last updated.
  * Type: x-string
  * Example: "2018-04-25T13:51:12-04:00"
## Adds a product to a custom collection

Adds a product to a custom collection.

### Endpoint
/admin/api/#{api_version}/collects.json (POST)

### Parameters
* api_version (required): 

### Responses
#### 201
Adds a product to a custom collection

Examples:
##### Create a new link between an existing product and an existing collection
Request:
```
POST /admin/api/unstable/collects.json
{"collect":{"product_id":921728736,"collection_id":841564295}}
```

Response:
```
HTTP/1.1 201 Created
{"collect":{"id":1071559574,"collection_id":841564295,"product_id":921728736,"created_at":"2025-01-02T11:20:42-05:00","updated_at":"2025-01-02T11:20:42-05:00","position":2,"sort_value":"0000000002"}}
```
#### 422
Adds a product to a custom collection

Examples:
##### Creating a collect without a product or collection ID fails and returns an error
Request:
```
POST /admin/api/unstable/collects.json
{"collect":{"body":"foobar"}}
```

Response:
```
HTTP/1.1 422 Unprocessable Entity
{"errors":{"product":["can't be blank"],"collection":["can't be blank"],"product_id":["must belong to John Smith Test Store"],"collection_id":["must belong to John Smith Test Store"]}}
```
## Retrieves a list of collects

Retrieves a list of collects. <strong>Note:</strong> This endpoint implements pagination by using links that are provided in the response header. To learn more, refer to <a href='/api/usage/pagination-rest'>Make paginated requests to the REST Admin API</a>.

### Endpoint
/admin/api/#{api_version}/collects.json (GET)

### Parameters
* api_version (required): 
* fields: Show only certain fields, specified by a comma-separated list of field names.
* limit: The maximum number of results to show.
* since_id: Restrict results to after the specified ID.

### Responses
#### 200
Retrieves a list of collects

Examples:
##### Retrieve all collects for the shop
Request:
```
GET /admin/api/2019-07/collects.json
```

Response:
```
HTTP/1.1 200 OK
{"collects":[{"id":358268117,"collection_id":482865238,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"},{"id":455204334,"collection_id":841564295,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"},{"id":773559378,"collection_id":395646240,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"},{"id":800915878,"collection_id":482865238,"product_id":921728736,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"}]}
```
##### Retrieve only collects for a certain collection
Request:
```
GET /admin/api/2019-07/collects.json
```

Response:
```
HTTP/1.1 200 OK
{"collects":[{"id":455204334,"collection_id":841564295,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"},{"id":1071559575,"collection_id":841564295,"product_id":921728736,"created_at":"2025-01-02T11:20:44-05:00","updated_at":"2025-01-02T11:20:44-05:00","position":2,"sort_value":"0000000002"}]}
```
##### Retrieve only collects for a certain product
Request:
```
GET /admin/api/2019-07/collects.json
```

Response:
```
HTTP/1.1 200 OK
{"collects":[{"id":358268117,"collection_id":482865238,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"},{"id":455204334,"collection_id":841564295,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"},{"id":773559378,"collection_id":395646240,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"}]}
```
## Removes a product from a collection

Removes a product from a collection.

### Endpoint
/admin/api/#{api_version}/collects/{collect_id}.json (DELETE)

### Parameters
* api_version (required): 
* collect_id (required): 

### Responses
#### 200
Removes a product from a collection

Examples:
##### Delete the link between a product an a collection
Request:
```
DELETE /admin/api/unstable/collects/455204334.json
```

Response:
```
HTTP/1.1 200 OK
{}
```
## Retrieves a specific collect by its ID

Retrieves a specific collect by its ID.

### Endpoint
/admin/api/#{api_version}/collects/{collect_id}.json (GET)

### Parameters
* api_version (required): 
* collect_id (required): 
* fields: Show only certain fields, specified by a comma-separated list of field names.

### Responses
#### 200
Retrieves a specific collect by its ID

Examples:
##### Retrieve a collect with a certain ID
Request:
```
GET /admin/api/unstable/collects/455204334.json
```

Response:
```
HTTP/1.1 200 OK
{"collect":{"id":455204334,"collection_id":841564295,"product_id":632910392,"created_at":null,"updated_at":null,"position":1,"sort_value":"0000000001"}}
```
## Retrieves a count of collects

Retrieves a count of collects.

### Endpoint
/admin/api/#{api_version}/collects/count.json (GET)

### Parameters
* api_version (required): 

### Responses
#### 200
Retrieves a count of collects

Examples:
##### Count all collects for the shop
Request:
```
GET /admin/api/2020-01/collects/count.json
```

Response:
```
HTTP/1.1 200 OK
{"count":2}
```
##### Count only collects for a certain collection
Request:
```
GET /admin/api/2020-01/collects/count.json
```

Response:
```
HTTP/1.1 200 OK
{"count":1}
```
##### Count only collects for a certain product
Request:
```
GET /admin/api/2020-01/collects/count.json
```

Response:
```
HTTP/1.1 200 OK
{"count":2}
```