# Subscribe on AWS Marketplace

Before you can deploy Deepgram on Amazon SageMaker AI, you must subscribe to the product in the AWS Marketplace. Subscribing creates a billing agreement but does not start any charges — you are not billed for the product until you deploy an [Amazon SageMaker AI Endpoint resource](https://docs.aws.amazon.com/sagemaker/latest/dg/manage-endpoints-console.html).

Subscribe through the console or the Marketplace API, then note the **Model Package ARN** you will pass to [Deploy Deepgram on Amazon SageMaker](/guides/amazon-sagemaker-deploy-amazon-sagemaker) or [Deploy with Terraform](/guides/amazon-sagemaker-terraform-deploy-sagemaker).

## Prerequisites

- An AWS account

- AWS IAM permissions to SageMaker and Marketplace

  - [**IAM Policy**](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceManageSubscriptions.html): AWSMarketplaceManageSubscriptions
  - [**IAM Policy**](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html): AmazonSageMakerFullAccess

- The Deepgram product you want to deploy. See [Supported Products](/guides/amazon-sagemaker-supported-products-sagemaker).

## Subscribe through the AWS Marketplace console

::::steps
:::step
Login to the [AWS Management Console](https://console.aws.amazon.com/) for the account you’d like to deploy in
:::

:::step
Navigate to the [AWS Marketplace console, pre-filtered for Deepgram SageMaker Model products](https://us-east-1.console.aws.amazon.com/marketplace/search#!mpSearch/search?text=deepgram\&filter%3AFULFILLMENT_OPTION_TYPE=SAGEMAKER_MODEL)
:::

:::step
Click on the Deepgram product you’re interested in deploying (eg. _Deepgram Voice AI- Nova-3 Monolingual Speech-to-Text (STT) Streaming_)
:::

:::step
Click on the **View Purchase Options** button
:::

:::step
Ensure the **Offer Type** of **Public Offer** is selected (_if required_)
:::

:::step
Scroll down and click the **Subscribe** button
:::
::::

Once the subscription is active, continue to [Find the Model Package ARN](/guides/amazon-sagemaker-subscribe-aws-marketplace#find-the-model-package-arn).

## Subscribe through the Marketplace API

If you provision infrastructure as code, you can subscribe to a Deepgram SageMaker product entirely through the AWS Marketplace API instead of the console. This section is an alternative to [subscribing through the console](/guides/amazon-sagemaker-subscribe-aws-marketplace#subscribe-through-the-aws-marketplace-console) — use whichever method fits your workflow, then continue to [Find the Model Package ARN](/guides/amazon-sagemaker-subscribe-aws-marketplace#find-the-model-package-arn).

:::callout{intent="note"}
The steps below use the AWS CLI, but AWS also publishes [SDKs for many languages](https://aws.amazon.com/developer/tools/) — including Python (Boto3), Node.js, Java, Go, and .NET — that expose the same Marketplace Discovery and Agreement Service APIs. Use whichever SDK fits your stack to build your own subscription automations and scripts.
:::

:::callout{intent="info"}
Subscribing creates a billing agreement on your AWS account. You are not charged until you deploy a SageMaker Endpoint and send it traffic — the usage-based pricing term has no upfront cost — but `AcceptAgreementRequest` (the last step below) is not a dry run. It creates a real, active agreement.
:::

### Additional permissions

The [AWSMarketplaceManageSubscriptions](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceManageSubscriptions.html) policy referenced in [Prerequisites](/guides/amazon-sagemaker-subscribe-aws-marketplace#prerequisites) covers product discovery (`SearchListings`, `GetOffer`, `GetOfferTerms`, `ListPurchaseOptions`, and similar) but does **not** include the AWS Marketplace Agreement Service actions this flow also needs: `CreateAgreementRequest`, `AcceptAgreementRequest`, `DescribeAgreement`, `SearchAgreements`, and `GetAgreementTerms`. Either attach [AWSMarketplaceFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceFullAccess.html) or add those five actions to a custom policy alongside `AWSMarketplaceManageSubscriptions`.

:::::steps
:::step{title="Find the product ID"}
List Deepgram’s SageMaker-deployable products, filtered by fulfillment type and seller:

```bash
aws marketplace-discovery search-listings \
  --region us-east-1 \
  --filters '[
    {"filterType": "FULFILLMENT_OPTION_TYPE", "filterValues": ["SAGEMAKER_MODEL"]},
    {"filterType": "PUBLISHER", "filterValues": ["6efa21f9-9a33-4cae-ba44-756436fa71dd"]}
  ]' \
  --query 'listingSummaries[].{name:listingName,productId:associatedEntities[0].product.productId}'
```

```json
[
  {
    "name": "Deepgram Voice AI Nova-3 Monolingual Speech-to-Text (STT) Streaming",
    "productId": "prod-tnv5pm6nlcm44"
  },
  {
    "name": "Deepgram Voice AI- Aura-2 Text-to-Speech- English",
    "productId": "prod-..."
  }
]
```

`6efa21f9-9a33-4cae-ba44-756436fa71dd` is Deepgram’s AWS Marketplace seller profile ID. Note the `productId` for the listing you want to deploy (eg. `prod-tnv5pm6nlcm44` for Nova-3 Monolingual Streaming).

Calls the [`SearchListings`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_SearchListings.html) action of the [AWS Marketplace Discovery API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Discovery.html).
:::

:::step{title="Find the standard offer for that product"}
```bash
aws marketplace-discovery list-purchase-options \
  --region us-east-1 \
  --filters '[{"filterType": "PRODUCT_ID", "filterValues": ["prod-tnv5pm6nlcm44"]}]' \
  --query 'purchaseOptions[].{offerId:purchaseOptionId,name:purchaseOptionName,badges:badges}'
```

This can return more than one purchase option — for example, a private offer your account manager extended to you, alongside the standard public offer. **The standard public offer has no `PRIVATE_PRICING` badge and no custom `purchaseOptionName`** (AWS labels it `"Offer created on <timestamp>"`). Use a private offer’s ID instead if your account has negotiated pricing.

Calls the [`ListPurchaseOptions`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_ListPurchaseOptions.html) action of the [AWS Marketplace Discovery API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Discovery.html).
:::

:::step{title="Get the offer's proposal ID and pricing model"}
```bash
aws marketplace-discovery get-offer --region us-east-1 --offer-id <offer-id-from-previous-step>
```

Note the `agreementProposalId` and `pricingModel.pricingModelType` from the response — you need both for the next steps.

Calls the [`GetOffer`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html) action of the [AWS Marketplace Discovery API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Discovery.html).
:::

:::step{title="Get the offer's terms"}
```bash
aws marketplace-discovery get-offer-terms --region us-east-1 --offer-id <offer-id>
```

The response has an `offerTerms` array. Each entry is a one-key object whose key names the term kind — `legalTerm`, `supportTerm`, `usageBasedPricingTerm`, `freeTrialPricingTerm` — and whose inner object carries the term’s `id` and `type`:

```json
{
  "offerTerms": [
    {"legalTerm": {"id": "...", "type": "LegalTerm", "documents": [...]}},
    {"supportTerm": {"id": "...", "type": "SupportTerm", "refundPolicy": "..."}},
    {"usageBasedPricingTerm": {"id": "...", "type": "UsageBasedPricingTerm", "rateCards": [...]}},
    {"freeTrialPricingTerm": {"id": "...", "type": "FreeTrialPricingTerm", "duration": "P14D"}}
  ]
}
```

For a `USAGE`-priced Deepgram SageMaker product, expect `LegalTerm`, `SupportTerm`, and `UsageBasedPricingTerm` — collect all three `id` values (for example, `aws marketplace-discovery get-offer-terms ... --query 'offerTerms[].*.id'`). Deepgram’s public SageMaker listings also include a `FreeTrialPricingTerm` (14 days); collect its `id` too if you want to claim the trial. See [Required terms by pricing model](https://docs.aws.amazon.com/marketplace/latest/developerguide/work-with-agreement-api-buyer.html#car-required-terms-by-pricing-model) if the offer uses a different pricing model.

Calls the [`GetOfferTerms`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html) action of the [AWS Marketplace Discovery API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Discovery.html).
:::

::::step{title="Generate a quote"}
```bash
aws marketplace-agreement create-agreement-request \
  --region us-east-1 \
  --agreement-proposal-identifier <agreementProposalId-from-step-3> \
  --intent NEW \
  --requested-terms '[
    {"id": "<LegalTerm id>"},
    {"id": "<SupportTerm id>"},
    {"id": "<UsageBasedPricingTerm id>"},
    {"id": "<FreeTrialPricingTerm id>"}
  ]'
```

Returns an `agreementRequestId` and a `chargeSummary`. For usage-based pricing, `newAgreementValue` is `"0.00"` — you’re only quoted for the mandatory terms, not future usage.

Calls the [`CreateAgreementRequest`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_CreateAgreementRequest.html) action of the [AWS Marketplace Agreement Service API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Agreement_Service.html).

:::callout{intent="warning"}
`FreeTrialPricingTerm` can be accepted only once per product. If your account has already used the trial for this product, omit that term’s `id` from `requestedTerms` — including it again returns a `ValidationException`. If your account already has an active agreement for this product at all, the whole call fails with `ValidationException` / `UNSUPPORTED_ACTION` (“This action is not supported when an active agreement exists on the same resourceId”). Check first with the [`SearchAgreements`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_SearchAgreements.html) action: `aws marketplace-agreement search-agreements --region us-east-1 --catalog AWSMarketplace --filters '[{"name":"PartyType","values":["Acceptor"]},{"name":"AgreementType","values":["PurchaseAgreement"]},{"name":"ResourceIdentifier","values":["<productId>"]}]'`. `SearchAgreements` returns `EXPIRED`, `CANCELLED`, and `REPLACED` agreements as well as `ACTIVE` ones, so check the `status` of each result: only an agreement with `"status": "ACTIVE"` means you’re subscribed. If one exists, skip to [Find the Model Package ARN](/guides/amazon-sagemaker-subscribe-aws-marketplace#find-the-model-package-arn).
:::
::::

:::step{title="Accept the quote to subscribe"}
```bash
aws marketplace-agreement accept-agreement-request \
  --region us-east-1 \
  --agreement-request-id <agreementRequestId-from-previous-step>
```

Returns the new `agreementId`. This is the subscribe action — it’s equivalent to clicking **Subscribe** in the console.

Calls the [`AcceptAgreementRequest`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_AcceptAgreementRequest.html) action of the [AWS Marketplace Agreement Service API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Agreement_Service.html).
:::

:::step{title="Confirm the subscription is active"}
```bash
aws marketplace-agreement describe-agreement --region us-east-1 --agreement-id <agreementId>
```

`status` moves from `ACTIVE` immediately, but the underlying entitlement can take a few minutes to provision — the same delay you’d see waiting on the console’s subscription page. Poll `aws marketplace-agreement get-agreement-entitlements --region us-east-1 --agreement-id <agreementId>` until it clears `PENDING`/`PROVISIONING_IN_PROGRESS` before continuing to [Find the Model Package ARN](/guides/amazon-sagemaker-subscribe-aws-marketplace#find-the-model-package-arn).

Calls the [`DescribeAgreement`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_DescribeAgreement.html) and [`GetAgreementEntitlements`](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-agreements_GetAgreementEntitlements.html) actions of the [AWS Marketplace Agreement Service API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_Operations_AWS_Marketplace_Agreement_Service.html).
:::
:::::

## Find the Model Package ARN

The AWS CLI, Boto3, and Terraform deployment paths all reference the **Model Package ARN** for the product version and AWS Region you plan to deploy. The AWS Marketplace surfaces the ARN through the CLI configuration view.

::::steps
:::step
In the AWS Management Console, navigate to the [AWS Marketplace **Manage subscriptions** console](https://us-east-1.console.aws.amazon.com/marketplace/subscriptions)
:::

:::step
On the **Active subscriptions** tab, find the subscription for the Deepgram product you want to deploy (eg. _Deepgram Voice AI- Nova-3 Monolingual Speech-to-Text (STT) Streaming_)
:::

:::step
Click the **Configure** button in the **Actions** column on the right-hand side
:::

:::step
In the **Setup** box, under **Service**, choose **AWS command line interface (CLI)**
:::

:::step
Under the **Version** header, select the product version from the dropdown. If the listing has more than one version, read the version name and the release notes to understand the set of languages (or features) each version provides, and choose the version that matches your needs
:::

:::step
Scroll down. On the right-hand side of the page, a list of **Model ARNs** is shown. Note the correct Model Package ARN for the AWS Region you plan to deploy to
:::
::::

### Programmatic alternative

The [deepgram-devs/dg-sagemaker](https://github.com/deepgram-devs/dg-sagemaker) repository includes a script that resolves the Model Package ARN for a product, version, and Region from the command line. It requires [`uv`](https://docs.astral.sh/uv/) and AWS credentials for the subscribed account:

```bash
git clone https://github.com/deepgram-devs/dg-sagemaker.git
cd dg-sagemaker/skills/deepgram-sagemaker/scripts
uv run resolve_model_package_arn.py nova-3-mono-streaming --region us-east-2 --version "de/en/es"
```

The script prints the ARN together with the version’s `SupportedRealtimeInferenceInstanceTypes`, so you can confirm your planned instance types before deploying. Pass `--list-versions` to see the available versions of a product first.

:::callout{intent="note"}
The script calls the same read-only Marketplace operation the **Manage subscriptions** console uses to render the **Model ARNs** list. That operation is not part of the documented AWS API, so if the script fails, fall back to the console steps above. The documented `aws marketplace-discovery list-fulfillment-options --region us-east-1 --product-id <product-id>` command lists a product’s versions, release notes, and recommended instance type, but does not return the Model Package ARN.
:::

## Private offers

If you have received a SageMaker private offer for a management account of an AWS organization, you may use [AWS License Manager](https://aws.amazon.com/blogs/awsmarketplace/manage-your-aws-marketplace-license-entitlements-in-aws-license-manager/) to grant usage of the SageMaker private offer to member accounts within your AWS organization as a Marketplace license entitlement after accepting the offer in the payer account. If you choose not to centrally manage license entitlements with AWS License Manager, you will need to accept the private offer in each linked account individually after you have accepted the offer in the payer account to be able to launch a SageMaker Endpoint with private pricing in the linked account.

For pricing and how to request a private offer, see [Private offers](/guides/amazon-sagemaker-index#private-offers) on the overview page.

## Switch offers

Only one offer (public or private) can be subscribed to for each SageMaker product listing at any one time. If you already have a subscription for a listing and try to subscribe to a different offer for it (for example, subscribing to a new private offer when you previously subscribed to the public offer), the **Accept offer** button is greyed out and an _Existing subscription detected_ warning (“You already have a subscription for this product.”) may appear at the top of the page. To switch offers, cancel the existing subscription first:

::::steps
:::step
In the warning message, click **View Subscription** to open the **Manage subscriptions** page of the AWS Marketplace console.
:::

:::step
Find the product you’re already subscribed to in the table. Click the hyperlinked agreement ID shown next to the product name.
:::

:::step
Click the **Actions** dropdown, then click **Cancel subscription** and confirm the cancellation.
:::

:::step
Once the subscription is cancelled, subscribe to the new offer.
:::
::::

## Next steps

- [Deploy Deepgram on Amazon SageMaker](/guides/amazon-sagemaker-deploy-amazon-sagemaker) with the AWS CLI or Boto3
- [Deploy with Terraform](/guides/amazon-sagemaker-terraform-deploy-sagemaker)
- [Requesting SageMaker Quota](/guides/amazon-sagemaker-request-sagemaker-quota)

## Related pages

- [Supported Products](./amazon-sagemaker-supported-products-sagemaker.md)
- [Requesting SageMaker Quota](./amazon-sagemaker-request-sagemaker-quota.md)
- [Deploy Deepgram on Amazon SageMaker](./amazon-sagemaker-deploy-amazon-sagemaker.md)
- [Deploy with Terraform](./amazon-sagemaker-terraform-deploy-sagemaker.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
