POST
/
v1
/
products
package main

import(
	"context"
	"os"
	polargo "github.com/polarsource/polar-go"
	"github.com/polarsource/polar-go/models/components"
	"log"
)

func main() {
    ctx := context.Background()

    s := polargo.New(
        polargo.WithSecurity(os.Getenv("POLAR_ACCESS_TOKEN")),
    )

    res, err := s.Products.Create(ctx, components.ProductCreate{
        Name: "<value>",
        RecurringInterval: components.SubscriptionRecurringIntervalMonth.ToPointer(),
        Prices: []components.ProductCreatePrices{
            components.CreateProductCreatePricesProductPriceCustomCreate(
                components.ProductPriceCustomCreate{},
            ),
            components.CreateProductCreatePricesProductPriceFixedCreate(
                components.ProductPriceFixedCreate{
                    PriceAmount: 69025,
                },
            ),
        },
        OrganizationID: polargo.String("1dbfc517-0bbf-4301-9ba8-555ca42b9737"),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res.Product != nil {
        // handle response
    }
}
{
  "created_at": "2023-11-07T05:31:56Z",
  "modified_at": "2023-11-07T05:31:56Z",
  "id": "<string>",
  "name": "<string>",
  "description": "<string>",
  "recurring_interval": "month",
  "is_recurring": true,
  "is_archived": true,
  "organization_id": "<string>",
  "metadata": {},
  "prices": [
    {
      "created_at": "2023-11-07T05:31:56Z",
      "modified_at": "2023-11-07T05:31:56Z",
      "id": "<string>",
      "amount_type": "<string>",
      "is_archived": true,
      "product_id": "<string>",
      "type": "<string>",
      "recurring_interval": "month",
      "price_currency": "<string>",
      "price_amount": 123,
      "legacy": true
    }
  ],
  "benefits": [
    {
      "id": "<string>",
      "created_at": "2023-11-07T05:31:56Z",
      "modified_at": "2023-11-07T05:31:56Z",
      "type": "<string>",
      "description": "<string>",
      "selectable": true,
      "deletable": true,
      "organization_id": "<string>",
      "metadata": {},
      "properties": {
        "note": "<string>"
      }
    }
  ],
  "medias": [
    {
      "id": "<string>",
      "organization_id": "<string>",
      "name": "<string>",
      "path": "<string>",
      "mime_type": "<string>",
      "size": 123,
      "storage_version": "<string>",
      "checksum_etag": "<string>",
      "checksum_sha256_base64": "<string>",
      "checksum_sha256_hex": "<string>",
      "last_modified_at": "2023-11-07T05:31:56Z",
      "version": "<string>",
      "service": "<string>",
      "is_uploaded": true,
      "created_at": "2023-11-07T05:31:56Z",
      "size_readable": "<string>",
      "public_url": "<string>"
    }
  ],
  "attached_custom_fields": [
    {
      "custom_field_id": "<string>",
      "custom_field": {
        "created_at": "2023-11-07T05:31:56Z",
        "modified_at": "2023-11-07T05:31:56Z",
        "id": "<string>",
        "metadata": {},
        "type": "<string>",
        "slug": "<string>",
        "name": "<string>",
        "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
        "properties": {
          "form_label": "<string>",
          "form_help_text": "<string>",
          "form_placeholder": "<string>",
          "textarea": true,
          "min_length": 1,
          "max_length": 1
        }
      },
      "order": 123,
      "required": true
    }
  ]
}

Authorizations

Authorization
string
header
required

You can generate an Organization Access Token from your organization's settings.

Body

application/json

Schema to create a product.

name
string
required

The name of the product.

Minimum length: 3
recurring_interval
enum<string> | null
required

The recurring interval of the product. If None, the product is a one-time purchase.

Available options:
month,
year
prices
object[]
required

List of available prices for this product. It should contain at most one static price (fixed, custom or free), and any number of metered prices. Metered prices are not supported on one-time purchase products.

Schema to create a fixed price.

metadata
object

Key-value object allowing you to store additional information.

The key must be a string with a maximum length of 40 characters. The value must be either:

  • A string with a maximum length of 500 characters
  • An integer
  • A floating-point number
  • A boolean

You can store up to 50 key-value pairs.

description
string | null

The description of the product.

medias
string[] | null

List of file IDs. Each one must be on the same organization as the product, of type product_media and correctly uploaded.

attached_custom_fields
object[]

List of custom fields to attach.

Schema to attach a custom field to a resource.

organization_id
string | null

The ID of the organization owning the product. Required unless you use an organization token.

Example:

"1dbfc517-0bbf-4301-9ba8-555ca42b9737"

Response

201
application/json
Product created.

A product.

created_at
string
required

Creation timestamp of the object.

modified_at
string | null
required

Last modification timestamp of the object.

id
string
required

The ID of the product.

name
string
required

The name of the product.

description
string | null
required

The description of the product.

recurring_interval
enum<string> | null
required

The recurring interval of the product. If None, the product is a one-time purchase.

Available options:
month,
year
is_recurring
boolean
required

Whether the product is a subscription.

is_archived
boolean
required

Whether the product is archived and no longer available.

organization_id
string
required

The ID of the organization owning the product.

metadata
object
required
prices
object[]
required

List of prices for this product.

A recurring price for a product, i.e. a subscription.

Deprecated: The recurring interval should be set on the product itself.

benefits
object[]
required

List of benefits granted by the product.

A benefit of type custom.

Use it to grant any kind of benefit that doesn't fit in the other types.

medias
object[]
required

List of medias associated to the product.

File to be used as a product media file.

attached_custom_fields
object[]
required

List of custom fields attached to the product.

Schema of a custom field attached to a resource.

Was this page helpful?