Medusa
Store APIAdmin API
Store APIAdmin API
Discord
Twitter
Linkedin
Github
  1. Promotions
  • Plugins
    • List Plugins
      GET
  • Auth
    • Refresh Authentication Token
      POST
    • Validate Authentication Callback
      POST
    • Generate Reset Password Token for Admin User
      POST
    • Retrieve Registration JWT Token
      POST
    • Authenticate User
      POST
    • Set Authentication Session
      POST
    • Delete Authentication Session
      DELETE
    • Reset an Admin User's Password
      POST
  • Draft Orders
    • Create a Draft Order Edit
      POST
    • Cancel Edit on Draft Order
      DELETE
    • Confirm an Edit on a Draft Order
      POST
    • Request Edit on Draft Order
      POST
    • Convert a Draft Order to an Order
      POST
    • Add Item to Draft Order Edit
      POST
    • Update Existing Item in Draft Order Edit
      POST
    • Remove Item from Draft Order Edit
      DELETE
    • Update New Item in Draft Order Edit
      POST
    • Add Promotions to Draft Order Edit
      POST
    • Remove Promotions from Draft Order Edit
      DELETE
    • Add Shipping Method to Draft Order Edit
      POST
    • Remove Shipping Method from Draft Order Edit
      DELETE
    • Update Existing Shipping Method in Draft Order Edit
      POST
    • Remove New Shipping Method from Draft Order
      DELETE
    • Update New Shipping Method in Draft Order Edit
      POST
    • Delete a Draft Order
      DELETE
    • Get a Draft Order
      GET
    • Update a Draft Order
      POST
    • Create Draft Order
      POST
    • List Draft Orders
      GET
  • Fulfillment Providers
    • List Fulfillment Options
    • List Fulfillment Providers
  • Fulfillment Sets
    • Delete Fulfillment Set
    • Add a Service Zone to a Fulfillment Set
    • Remove a Service Zone from Fulfillment Set
    • Get a Service Zone in a Fulfillment Set
    • Update the Service Zone of a Fulfillment Set
  • Inventory Items
    • Manage Inventory Levels
    • Manage Inventory Levels of Inventory Item
    • Create Inventory Level for Inventory Item
    • List Inventory Levels
    • Update an Inventory Level of an Inventory Item
    • Remove Inventory Level of Inventory Item
    • Create Inventory Item
    • List Inventory Items
    • Get a Inventory Item
    • Delete Inventory Item
    • Update an Inventory Item
  • Order Edits
    • Create Order Edit
    • Confirm Order Edit
    • Request Order Edit
    • Add Items to Order Edit
    • Update Order Item Quantity of Order Edit
    • Remove Item from Order Edit
    • Update an Item in an Order Edit
    • Add Shipping Method to Order Edit
    • Remove Shipping Method from Order Edit
    • Update Shipping Method of an Order Edit
    • Cancel Order Edit
  • Orders
    • List Changes on an Order
    • Mark a Fulfillment as Delivered.
    • Get Preview
    • Archive an Order
    • Cancel Order
    • Cancel Transfer Request
    • Create Credit Line for Order
    • Request Order Transfer
    • Complete Order
    • Update Order
    • Get an Order
    • List Line Items
    • Cancel Fulfillment
    • Create an Order Fulfillment
    • Create Shipment for an Order's Fulfillment
    • List Orders
  • Payment Collections
    • Delete a Payment Collection
    • Create Payment Collection
    • Mark a Payment Collection as Paid
  • Products
    • Create Product Import
    • Confirm Product Import
    • Export Products
    • Manage Products
    • Manage Variants in a Product
    • Associate Variant with Inventory Item
    • Remove Inventory Item Association with Product Variant
    • Update Product Variant's Inventory Details
    • Delete a Product
    • Get a Product
    • Update a Product
    • Create a Product Option
    • List a Product's Options
    • Get a Product's Option
    • Delete an Option from Product
    • Update a Product's Option
    • Get Variant of a Product
    • Delete Product Variant
    • Update a Product Variant
    • Manage Variants Inventory in a Product
    • Create a Product Variant
    • List Variants of a Product
    • Create Product
    • List Products
  • Claims
    • Get a Claim
    • Cancel a Claim
    • Add Inbound Items to a Claim
    • Remove an Inbound Item from Claim
    • Update Inbound Items of a Claim
    • Add an Inbound Shipping Method to a Claim
    • Cancel Claim Request
    • Confirm a Claim Request
    • Add Claim Items to a Claim
    • Remove a Claim Item from a Claim
    • Update a Claim Item
    • Remove Inbound Shipping Method from Claim
    • Update Inbound Shipping Method of a Claim
    • Add Outbound Items to a Claim
    • Remove an Outbound Item from Claim
    • Update Outbound Item of a Claim
    • Add Outbound Shipping Methods to a Claim
    • Remove Outbound Shipping Method from Claim
    • Update Outbound Shipping Method of a Claim
    • Create a Claim
    • List Claims
  • Currencies
    • Get a Currency
    • List Currencies
  • Exchanges
    • Get an Exchange
    • Cancel an Exchange
    • Add Inbound Items to an Exchange
    • Remove Inbound Item from Exchange
    • Update an Inbount Item of an Exchange
    • Add an Inbound Shipping Method to an Exchange
    • Cancel Exchange Request
    • Confirm an Exchange
    • Remove Inbound Shipping Method from Exchange
    • Update Inbound Shipping Method of an Exchange
    • Add Outbound Items to Exchange
    • Remove Outbound Item from Exchange
    • Update Outbound Item of an Exchange
    • Add Outbound Shipping Method to Exchange
    • Remove Outbound Shipping Method from Exchange
    • Update Outbound Shipping Method of Exchange
    • Create Exchange
    • List Exchanges
  • Fulfillments
    • Cancel a Fulfillment
    • Create Fulfillment
    • Create a Shipment for a Fulfillment
  • Invites
    • Refresh Invite Token
    • Get an Invite
    • Delete Invite
    • Accept Invite
    • Create Invite
    • List Invites
  • Notifications
    • Get a Notification
    • List Notifications
  • Payments
    • Get a Payment
    • Capture Payment
    • Refund Payment
    • List Payment Providers
    • List Payments
  • Returns
    • Cancel a return.
    • Get a Return
    • Update a Return
    • Add Damaged Items to Return
    • Remove Damaged Item from Return
    • Update Damaged Item of Return
    • Add Received Items to Return
    • Remove a Received Item from Return
    • Update a Received Item in a Return
    • Confirm Return Receival
    • Add Requested Items to Return
    • Remove Item from Return
    • Update Requested Item in Return
    • Add a Shipping Method to a Return
    • Remove Shipping Method from Return
    • Update a Shipping Method of a Return
    • Start Return Receival
    • Cancel Return Receival
    • Confirm Return Request
    • Cancel Return Request
    • Create Return
    • List Returns
  • Users
    • Get Logged-In User
    • Delete a User
    • Get a User
    • Update a User
    • List Users
  • Workflows Executions
    • Get a Workflows Execution
    • Subscribe to a Workflow's Execution
    • Get Workflow Execution's Details
    • Subscribe to Step of a Workflow's Execution
    • Fail a Step in a Workflow's Execution
    • Succeed a Step in a Workflow's Execution
    • List Workflows Executions
    • Execute a Workflow
  • Api Keys
    • Revoke API Key
    • Get API Key
    • Update an API Key
    • Delete an Api Key
    • Manage Sales Channels of a Publishable API Key
    • Create Api Key
    • List API Keys
  • Price Lists
    • Remove Products from Price List
    • Delete a Price List
    • Get a Price List
    • Update a Price List
    • Manage Prices in Price List
    • Create Price List
    • List Price Lists
  • Stores
    • Get a Store
    • Update a Store
    • List Stores
  • Tax Rates
    • Create Tax Rule for a Rate
    • Delete a Tax Rate
    • Get a Tax Rate
    • Update a Tax Rate
    • Remove Rule of Tax Rate
    • Create Tax Rate
    • List Tax Rates
  • Price Preferences
    • Delete a Price Preference
    • Get a Price Preference
    • Update a Price Preference
    • Create Price Preference
    • List Price Preferences
  • Return Reasons
    • Delete a Return Reason
    • Get a Return Reason
    • Update a Return Reason
    • Create Return Reason
    • List Return Reasons
  • Sales Channels
    • Delete a Sales Channel
    • Get a Sales Channel
    • Update a Sales Channel
    • Manage Products in Sales Channel
    • Create Sales Channel
    • List Sales Channels
  • Stock Locations
    • Delete a Stock Location
    • Get a Stock Location
    • Update a Stock Location
    • Add Fulfillment Set to Stock Location
    • Manage Fulfillment Providers of a Stock Location
    • Manage Sales Channels of a Stock Location
    • Create Stock Location
    • List Stock Locations
  • Tax Regions
    • Delete a Tax Region
    • Update a Tax Region
    • Get a Tax Region
    • Create Tax Region
    • List Tax Regions
  • Promotions
    • List Rule Attribute Options of a Rule Type
      GET
    • List Rules of a Promotion
      GET
    • List Rule Values Given a Rule Attribute
      GET
    • Manage the Buy Rules of a Promotion
      POST
    • Manage a Promotion's Rules
      POST
    • Manage Target Rules of a Promotion
      POST
    • Get a Promotion
      GET
    • Delete a Promotion
      DELETE
    • Update a Promotion
      POST
    • List Promotions
      GET
    • Create Promotion
      POST
  • Customer Groups
    • Get a Customer Group
    • Update a Customer Group
    • Delete a Customer Group
    • Manage Customers of a Customer Group
    • Create Customer Group
    • List Customer Groups
  • Product Tags
    • Delete a Product Tag
    • Get a Product Tag
    • Update a Product Tag
    • Create Product Tag
    • List Product Tags
  • Product Types
    • Delete a Product Type
    • Get a Product Type
    • Update a Product Type
    • Create Product Type
    • List Product Types
  • Refund Reasons
    • Get a Refund Reason
    • Update a Refund Reason
    • Delete a Refund Reason
    • Create Refund Reason
    • List Refund Reasons
  • Uploads
    • Get a File
    • Delete a File
    • Upload Files
  • Campaigns
    • Manage the Promotions of a Campaign
    • Get a Campaign
    • Delete a Campaign
    • Update a Campaign
    • List Campaigns
    • Create Campaign
  • Collections
    • Manage Products of a Collection
    • Delete a Collection
    • Get a Collection
    • Update a Collection
    • Create Collection
    • List Collections
  • Customers
    • Manage Customer Groups of Customer
    • Get a Customer
    • Delete a Customer
    • Update a Customer
    • List Addresses
    • Add a Customer Address
    • List Addresses
    • Remove an Address from Customer
    • Update a Customer's Address
    • Create Customer
    • List Customers
  • Product Categories
    • Manage Products in Product Category
    • Delete a Product Category
    • Get a Product Category
    • Update a Product Category
    • Create Product Category
    • List Product Categories
  • Reservations
    • Get a Reservation
    • Update a Reservation
    • Delete a Reservation
    • Create Reservation
    • List Reservations
  • Shipping Profiles
    • Delete a Shipping Profile
    • Get a Shipping Profile
    • Update a Shipping Profile
    • Create Shipping Profile
    • List Shipping Profiles
  • Regions
    • Get a Region
    • Delete a Region
    • Update a Region
    • Create Region
    • List Regions
  • Tax Providers
    • List Tax Providers
  • Shipping Options
    • Manage the Rules of a Shipping Option
    • Create Shipping Option
    • List Shipping Options
    • Delete a Shipping Option
    • Get a Shipping Option
    • Update a Shipping Option
  • Product Variants
    • List Product Variants
  1. Promotions

Create Promotion

POST
/admin/promotions
Promotions
Create a promotion.
Request Request Example
JavaScript
Shell
Java
Swift
curl --location -g --request POST '{{BASE_URL}}/admin/promotions' \
--header 'Content-Type: application/json' \
--data-raw '{
    "code": "string",
    "is_automatic": true,
    "campaign_id": "string",
    "type": "standard",
    "campaign": {
        "name": "string",
        "campaign_identifier": "string",
        "description": "string",
        "starts_at": "2019-08-24T14:15:22Z",
        "ends_at": "2019-08-24T14:15:22Z",
        "budget": {
            "limit": 0,
            "currency_code": "string",
            "type": "spend"
        }
    },
    "rules": [
        {
            "description": "string",
            "attribute": "items.product.id",
            "operator": "gte",
            "values": "prod_123"
        }
    ],
    "application_method": {
        "description": "string",
        "value": 0,
        "currency_code": "string",
        "max_quantity": 0,
        "apply_to_quantity": 0,
        "buy_rules_min_quantity": 0,
        "type": "fixed",
        "target_type": "order",
        "allocation": "each",
        "target_rules": [
            {
                "description": "string",
                "attribute": "items.product.id",
                "operator": "gte",
                "values": "prod_123"
            }
        ],
        "buy_rules": [
            {
                "description": "string",
                "attribute": "items.product.id",
                "operator": "gte",
                "values": "prod_123"
            }
        ]
    },
    "additional_data": {}
}'
Response Response Example
200 - Example 1
{
    "promotion": {
        "application_method": {
            "promotion": {},
            "target_rules": [
                {
                    "id": "string",
                    "description": "string",
                    "attribute": "customer_group_id",
                    "operator": "gt",
                    "values": [
                        "cusgroup_123"
                    ]
                }
            ],
            "buy_rules": [
                {
                    "id": "string",
                    "description": "string",
                    "attribute": "customer_group_id",
                    "operator": "gt",
                    "values": [
                        "cusgroup_123"
                    ]
                }
            ],
            "id": "string",
            "value": 0,
            "currency_code": "usd",
            "max_quantity": 0,
            "buy_rules_min_quantity": 0,
            "apply_to_quantity": 0,
            "type": "fixed",
            "target_type": "items",
            "allocation": "each"
        },
        "campaign": {
            "id": "string",
            "name": "string",
            "description": "string",
            "currency": "string",
            "campaign_identifier": "string",
            "starts_at": "string",
            "ends_at": "string",
            "created_at": "2019-08-24T14:15:22Z",
            "updated_at": "2019-08-24T14:15:22Z",
            "deleted_at": "2019-08-24T14:15:22Z",
            "budget": {
                "id": "string",
                "currency_code": "string",
                "limit": 0,
                "used": 0,
                "type": "spend"
            }
        },
        "rules": [
            {
                "id": "string",
                "description": "string",
                "attribute": "customer_group_id",
                "operator": "gt",
                "values": [
                    "cusgroup_123"
                ]
            }
        ],
        "id": "string",
        "code": "OFF50",
        "is_automatic": true,
        "campaign_id": "string",
        "created_at": "2019-08-24T14:15:22Z",
        "updated_at": "2019-08-24T14:15:22Z",
        "deleted_at": "2019-08-24T14:15:22Z",
        "type": "standard",
        "status": "draft"
    }
}

Request

Authorization
or
or
or
Query Params
fields
string 
fields
optional
Comma-separated fields that should be included in the returned data. if a field is prefixed with + it will be added to the default fields, using - will remove it from the default fields. without prefix it will replace the entire default fields.
Body Params application/json
The promotion's details.
code
string 
code
required
The promotion's code.
is_automatic
boolean 
is_automatic
optional
Whether the promotion is applied automatically.
campaign_id
string 
campaign_id
required
The ID of the campaign that the promotion belongs to.
type
enum<string> 
required
The promotion's type.
Allowed values:
standardbuyget
campaign
object 
optional
The details of a campaign to create and add the promotion to it.
name
string 
name
required
The campaign's name.
campaign_identifier
string 
campaign_identifier
required
The campaign's identifier.
description
string 
description
required
The campaign's description.
starts_at
string <date-time>
starts_at
required
The campaign's start date.
ends_at
string <date-time>
ends_at
required
The campaign's end date.
budget
object 
required
The campaign's budget which, when crossed, ends the campaign.
rules
array [object {4}] 
optional
The promotion's rules.
description
string 
description
required
The rule's description.
attribute
string 
attribute
required
The attribute to compare against when checking whether a promotion can be applied on a cart.
Example:
items.product.id
operator
enum<string> 
required
The operator used to check whether the buy rule applies on a cart. For example, eq means that the cart's value for the specified attribute must match the specified value.
Allowed values:
gteltegtlteqnein
values
required
application_method
object 
required
The promotion's application method.
description
string 
description
required
The application method's description.
value
number 
value
required
The discounted amount applied by the associated promotion based on the type.
currency_code
string 
currency_code
required
The application method's currency code.
max_quantity
number 
max_quantity
required
The max quantity allowed in the cart for the associated promotion to be applied.
apply_to_quantity
number 
apply_to_quantity
required
The quantity that results from matching the buyget promotion's condition. For example, if the promotion is a "Buy 2 shirts get 1 free", the value f this attribute is 1.
buy_rules_min_quantity
number 
buy_rules_min_quantity
required
The minimum quantity required for a buyget promotion to be applied. For example, if the promotion is a "Buy 2 shirts get 1 free", the value of this attribute is 2.
type
enum<string> 
required
The type of the application method indicating how the associated promotion is applied.
Allowed values:
fixedpercentage
target_type
enum<string> 
required
The target type of the application method indicating whether the associated promotion is applied to the cart's items, shipping methods, or the whole order.
Allowed values:
ordershipping_methodsitems
allocation
enum<string> 
optional
The allocation value that indicates whether the associated promotion is applied on each item in a cart or split between the items in the cart.
Allowed values:
eachacross
target_rules
array [object {4}] 
optional
The application method's target rules.
buy_rules
array [object {4}] 
optional
The application method's buy rules.
additional_data
object 
optional
Pass additional custom data to the API route. This data is passed to the underlying workflow under the additional_data parameter.
Examples

Responses

🟢200OK
application/json
OK
Body
The promotion's details.
promotion
object (AdminPromotion) 
required
The promotion's details.
application_method
object (AdminApplicationMethod) 
optional
The application method's details.
campaign
object (AdminCampaign) 
optional
The campaign's details.
rules
array[object (AdminPromotionRule) {5}] 
optional
The promotion's rules.
id
string 
id
required
The promotion's ID.
code
string 
code
optional
The promotion's code.
Example:
OFF50
is_automatic
boolean 
is_automatic
optional
Whether the promotion is applied on a cart automatically if it matches the promotion's rules.
campaign_id
string 
campaign_id
optional
The ID of the campaign this promotion belongs to.
created_at
string <date-time>
created_at
required
The date the promotion was created.
updated_at
string <date-time>
updated_at
required
The date the promotion was updated.
deleted_at
string <date-time>
deleted_at
required
The date the promotion was deleted.
type
enum<string> 
optional
The promotion's type.
Allowed values:
standardbuyget
status
enum<string> 
optional
The promotion's status.
Allowed values:
draftactiveinactive
🟠400Bad Request
🟠401Unauthorized
🟠404Record Not Found
🟠409409
🟠422Parameter Error
🔴500Server Error
Modified at 2025-06-17 04:10:32
Previous
List Promotions
Next
Get a Customer Group
Built with