# Retrieve a product

Retrieve a product by ID.

## GET

/accounts/{accountID}/products/{productID}

### Ask

```shell
curl -X GET "https://api.moov.io/accounts/{accountID}/products/{productID}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00"
```

### Ask

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.products.get({
    accountID: "a749d848-5ebc-42a4-9ae6-555804317835",
    productID: "dd0b4873-5cf5-4aa8-aa86-e31d86f7e38a",
  });

console.log(result);
}

run();
```

### Ask

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$response = $sdk->products->get(
    accountID: 'a749d848-5ebc-42a4-9ae6-555804317835',
    productID: 'dd0b4873-5cf5-4aa8-aa86-e31d86f7e38a'
);

if ($response->product !== null) {
    // handle response
}
```

### Ask

```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetProductResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

GetProductResponse res = sdk.products().get()
                .accountID("a749d848-5ebc-42a4-9ae6-555804317835")
                .productID("dd0b4873-5cf5-4aa8-aa86-e31d86f7e38a")
                .call();

if (res.product().isPresent()) {
            System.out.println(res.product().get());
        }
    }
}
```

### Ask

```python
from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.products.get(account_id="a749d848-5ebc-42a4-9ae6-555804317835", product_id="dd0b4873-5cf5-4aa8-aa86-e31d86f7e38a")

# Handle response
    print(res)
```

### Ask

```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.products.get(account_id: 'a749d848-5ebc-42a4-9ae6-555804317835', product_id: 'dd0b4873-5cf5-4aa8-aa86-e31d86f7e38a')

unless res.product.nil?
  # handle response
end
```

### Ask

```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

var res = await sdk.Products.GetAsync(
    accountID: "a749d848-5ebc-42a4-9ae6-555804317835",
    productID: "dd0b4873-5cf5-4aa8-aa86-e31d86f7e38a"
);

// handle response
```

The request completed successfully.

### Example

A good or service offered by a merchant.

```json
{
  "productID": "string",
  "title": "string",
  "description": "string",
  "basePrice": {
    "currency": "USD",
    "valueDecimal": "12.987654321"
  },
  "optionGroups": [
    {
      "name": "string",
      "description": "string",
      "minSelect": 0,
      "maxSelect": 1,
      "options": [
        {
          "name": "string",
          "description": "string",
          "priceModifier": {
            "currency": "USD",
            "valueDecimal": "12.987654321"
          },
          "images": [
            {
              "imageID": "string",
              "altText": "string",
              "link": "https://api.moov.io/images/q7lKWleAy9fUNhEGezQ1g",
              "publicID": "q7lKWleAy9fUNhEGezQ1g"
            }
          ]
        }
      ]
    }
  ],
  "images": [
    {
      "imageID": "string",
      "altText": "string",
      "link": "https://api.moov.io/images/q7lKWleAy9fUNhEGezQ1g",
      "publicID": "q7lKWleAy9fUNhEGezQ1g"
    }
  ],
  "createdOn": "2019-08-24T14:15:22Z",
  "updatedOn": "2019-08-24T14:15:22Z",
  "disabledOn": "2019-08-24T14:15:22Z"
}
```

### Response headers

A unique identifier used to trace requests.
