# SSL catalogue and prices

> Certificate packages and their prices, and the exact price for any product, operation and period at checkout.

## GET /api/v1/products/ssls

Certificate packages and their prices. Use it to pick the `packageCode` for [SSL purchase](https://www.domainnameapi.com/docs/ssl/buy/).

**Request**

```http
GET /api/v1/products/ssls?maxResultCount=100&currency=USD&validationType=1
```

| Parameter | Notes |
| --- | --- |
| `filterText` | Matches package name or code. |
| `currency` | e.g. `USD`, `TRY`. |
| `validationType` | `1` DV, `2` OV, `3` EV. |
| `isWildcard` | `true` / `false`. |
| `isMultiDomain` | `true` / `false`. |
| `vendorName` | e.g. `Sectigo`, `DigiCert`. |
| `skipCount, maxResultCount, sorting` | Standard paging. |

**Response — 200**

```json
{
  "totalCount": 24,
  "items": [
    {
      "name": "PositiveSSL",
      "productCode": "POSITIVESSL",
      "vendorName": "Sectigo",
      "validationType": "DV",
      "isWildcard": false,
      "isMultiDomain": false,
      "defaultSanCount": 0,
      "maxSanCount": 0,
      "warrantyAmount": 50000,
      "issueTimeMinutes": 15,
      "isReissueFree": true,
      "requiresCsr": true,
      "prices": [
        {
          "priceGroup": "Standard",
          "create": [
            { "period": 1, "price": 8.50, "currency": "USD" }
          ]
        }
      ]
    }
  ]
}
```

| Field | How to use it |
| --- | --- |
| `productCode` | **This is the `packageCode` for `/ssls/initialize`.** |
| `validationType` | `DV` issues in minutes; `OV` and `EV` take days. Set customer expectations accordingly. |
| `isWildcard` | If `true`, `configure` **requires** `wildcardList`. |
| `isMultiDomain` | If `true`, `configure` **requires** `sanList`. |
| `defaultSanCount / maxSanCount` | Names included in the base price, and the ceiling. |
| `issueTimeMinutes` | Typical issue time. Treat it as a guide for DV; OV and EV are driven by manual vetting, not this number. |
| `isReissueFree` | Whether `/ssls/reissue` costs anything. |
| `prices[].create` | Only `create` exists — SSL terms are always one year. |

## GET /api/v1/products/info

One product with its selling price recalculated for your account right now. Costs 1 quota point. Use it at checkout to show the exact price you will be charged.

**Request**

```http
GET /api/v1/products/info?productName=com&orderType=1&period=1
```

| Parameter | Required | Notes |
| --- | --- | --- |
| `productName` | required | Extension or package name. **Letters and dots only.** A leading dot is stripped, so `.com` and `com` both work. |
| `orderType` | required | `1` Register · `2` Renew · `3` Transfer · `4` Restore · `11` Create (SSL/hosting). |
| `period` | required | **1 to 10.** Outside that range is an error. |

**Response — 200**

```json
{
  "id": "e1d7a92c-5f38-4b06-9c41-8a2e7f3d5b94",
  "parentProductId": null,
  "productName": "com",
  "productCode": "COM",
  "entityId": "4f8b1c23-9d05-4a71-b83e-2c6f9a1d7e40",
  "productType": 1,
  "sellingPrice": 11.40,
  "sellingCurrency": "USD",
  "subproducts": []
}
```

:::tip[This is your real price]
`sellingPrice` includes any negotiated rate on your account, so it can be lower than the catalogue figure. This is the number to show at checkout and the number that will be debited.

`subproducts` is populated when the product has add-ons — the trustee service is the common case. Add those to your displayed total.
:::

**Errors**

| Code | Meaning and fix |
| --- | --- |
| `Dna.ProductService.Product:10002` | `period` outside 1–10. **Note:** this code is also used for an invalid `sorting` value — read the message. |
| `Dna.ProductService.Product:10003` | `productName` contains characters other than letters and dots. |
| `Dna.ProductService.Product:10001` | Product not found. |
| `Dna.ProductService.Product:10004` | Unsupported currency. |
