> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.one.mtxsci.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.one.mtxsci.com/_mcp/server.

# samples-v1

GET https://%7Bsamples%7D

## List samples

Retrieve a page of sample records, including sample identifiers, product details, status, and dates. Use this request to inspect sample progress before retrieving laboratory results with **results-v1**.

**Request:** `GET {{baseUrl}}/{{samples}}`\
**Success:** `200 OK` with a JSON body. The recorded response media type is `text/plain;charset=utf-8`. No request body is used.

### Query parameters

| Parameter              | Format                      | Usage                                                                                       |
| ---------------------- | --------------------------- | ------------------------------------------------------------------------------------------- |
| `api_token`            | String                      | Credential for the selected environment, supplied through `{{api_token}}`.                  |
| `page`                 | Integer in the query string | Page to retrieve. The saved request starts at `1`.                                          |
| `sample_id`            | String                      | Sample identifier filter. The saved request sends an empty value.                           |
| `sample_submission_id` | String                      | Sample-submission row identifier filter. The saved request sends an empty value.            |
| `start_date`           | `YYYY-MM-DD`                | Start of the requested date range. Replace the saved example date with your intended range. |
| `end_date`             | `YYYY-MM-DD`                | End of the requested date range. Replace the saved example date with your intended range.   |

The saved request demonstrates a date range with blank identifier filters. Use the id filters to retrieve specific samples based on the sample\_id (lab number) from the laborotory or use the submission\_id returned from a successful submission post request.

### Response envelope

| Field         | Observed type    | Description                                  |
| ------------- | ---------------- | -------------------------------------------- |
| `page`        | String           | Returned page number, for example `"1"`.     |
| `hasNextPage` | Boolean          | Indicates whether another page is available. |
| `samples`     | Array of objects | Sample records in this page.                 |

Keep filters unchanged while paging. Increment `page` when `hasNextPage` is `true` and stop when it is `false`.

### Sample fields

Types below reflect the saved response.

| Field                  | Observed type | Description                                                                                                                    |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `sample_id`            | String        | Downstream sample identifier. Repeated values occur in the recorded data; do not assume it uniquely identifies a response row. |
| `sample_submission_id` | String        | Sample-submission row identifier. Recorded values include `""`; a usable mapping is not guaranteed.                            |
| `submitted_at`         | String        | Submission date and time as display text.                                                                                      |
| `collected_at`         | String        | Collection date and time as display text.                                                                                      |
| `description`          | String        | Sample description; may be empty.                                                                                              |
| `product_id`           | String        | Product identifier returned by the service.                                                                                    |
| `product_description`  | String        | Product description; may be empty. The draft POST uses the different field name `product_desc`.                                |
| `lot`                  | String        | Lot reference. Preserve as text.                                                                                               |
| `request_number`       | String        | Request reference; may be empty.                                                                                               |
| `status`               | String        | Sample status. `completed` appears in the saved response; the full set is unspecified.                                         |
| `due_date`             | String        | Due date and time as display text.                                                                                             |
| `validation_date`      | String        | Validation date and time as display text.                                                                                      |

Date strings such as `Aug 25, 2026 6:30 pm` have no timezone offset. They differ from the UTC timestamp in the draft creation response. Preserve the original value unless an agreed parsing convention is available.

### Saved example

The attached `200` example contains synthetic sample data and illustrates `hasNextPage: true`. Use the response flag to determine whether to continue.

### Related workflow

Use **results-v1** for test-level values, units, and specifications. Preserve the identifiers returned by the service; do not replace `sample_id` with `client_sample_ref`, `line_number`, or the parent `submission_id`.

Reference: https://docs.one.mtxsci.com/ms-cp-customer-api/samples-v-1

## Request

### Query parameters

- `api_token` (string, optional)
- `page` (integer, optional)
- `sample_id` (string, optional)
- `sample_submission_id` (string, optional)
- `start_date` (string, optional)
- `end_date` (string, optional)

## Response

### 200

OK

## Examples

**Response**

```json
{
  "hasNextPage": true,
  "page": "1",
  "samples": [
    {
      "collected_at": "Jul 22, 2026 6:30 pm",
      "description": "Illustrative environmental sample 1",
      "due_date": "Jul 24, 2026 6:30 pm",
      "lot": "EXAMPLE-LOT-001",
      "product_description": "",
      "product_id": "ENVIRONMENTAL",
      "request_number": "",
      "sample_id": "EXAMPLE-SAMPLE-001",
      "sample_submission_id": "",
      "status": "completed",
      "submitted_at": "Aug 25, 2026 6:30 pm",
      "validation_date": "Aug 25, 2026 6:55 pm"
    },
    {
      "collected_at": "Jul 22, 2026 6:30 pm",
      "description": "Illustrative environmental sample 2",
      "due_date": "Jul 24, 2026 6:30 pm",
      "lot": "EXAMPLE-LOT-002",
      "product_description": "",
      "product_id": "ENVIRONMENTAL",
      "request_number": "",
      "sample_id": "EXAMPLE-SAMPLE-002",
      "sample_submission_id": "",
      "status": "completed",
      "submitted_at": "Aug 25, 2026 6:30 pm",
      "validation_date": "Aug 25, 2026 6:55 pm"
    }
  ]
}
```

**SDK Code**

```python samples-v1_example
import requests

url = "https://https/%7Bsamples%7D"

querystring = {"api_token":"{{api_token}}","end_date":"2026-08-30","page":"1","sample_id":"","sample_submission_id":"","start_date":"2026-08-20"}

response = requests.get(url, params=querystring)

print(response.json())
```

```javascript samples-v1_example
const url = 'https://https/%7Bsamples%7D?api_token=%7B%7Bapi_token%7D%7D&end_date=2026-08-30&page=1&sample_id=&sample_submission_id=&start_date=2026-08-20';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go samples-v1_example
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://https/%7Bsamples%7D?api_token=%7B%7Bapi_token%7D%7D&end_date=2026-08-30&page=1&sample_id=&sample_submission_id=&start_date=2026-08-20"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby samples-v1_example
require 'uri'
require 'net/http'

url = URI("https://https/%7Bsamples%7D?api_token=%7B%7Bapi_token%7D%7D&end_date=2026-08-30&page=1&sample_id=&sample_submission_id=&start_date=2026-08-20")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java samples-v1_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://https/%7Bsamples%7D?api_token=%7B%7Bapi_token%7D%7D&end_date=2026-08-30&page=1&sample_id=&sample_submission_id=&start_date=2026-08-20")
  .asString();
```

```php samples-v1_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://https/%7Bsamples%7D?api_token=%7B%7Bapi_token%7D%7D&end_date=2026-08-30&page=1&sample_id=&sample_submission_id=&start_date=2026-08-20');

echo $response->getBody();
```

```csharp samples-v1_example
using RestSharp;

var client = new RestClient("https://https/%7Bsamples%7D?api_token=%7B%7Bapi_token%7D%7D&end_date=2026-08-30&page=1&sample_id=&sample_submission_id=&start_date=2026-08-20");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift samples-v1_example
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://https/%7Bsamples%7D?api_token=%7B%7Bapi_token%7D%7D&end_date=2026-08-30&page=1&sample_id=&sample_submission_id=&start_date=2026-08-20")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```