API & Webview reference
The AvisPlus Product Options Public API is a read-only REST API that allows merchants and external systems, such as a mobile app, headless storefront, or internal service, to retrieve option set data,
1. API Host, Base URL, and Swagger
API Host
https://public-api.avisplus.ioBase URL
https://public-api.avisplus.io/api/public/v1Swagger UI
https://public-api.avisplus.io/swagger/Use Swagger UI to check the latest request/response schema and test API endpoints.
GitBook expandable blocks
Long examples and sample responses are placed inside expandable sections to keep the page easier to scan.
Version path
The current API version path is:
/api/public/v1Breaking changes will be released under a new version path, for example:
Adding new fields is not considered a breaking change. Client applications should ignore unknown fields to remain compatible with future updates.
2. Authentication
All API requests require the following authorization header:
API token rules
The API token is issued per shop.
Each shop has one unique API token.
The shop must have an active app subscription.
The app must not be uninstalled from the shop.
If the shop does not meet these requirements, requests will return
403.
Token handling
In Avis option app, navigate to API Gateway > Scroll down to Create your API Token to generate your unique API token

Keep the API token secure. Do not publish it in public repositories, screenshots, client-side storefront code, or public documents.
3. Error Format
Error responses use the following format:
Common error codes
400
Bad request. Required query parameter is missing or invalid.
401
Missing authorization header or invalid API token.
403
The shop does not have an active subscription, or the app is uninstalled.
404
The requested resource does not exist.
429
Rate limit exceeded.
500
Server error.
4. Rate Limiting
Limit
60 requests per minute per shop
Calculation
Sliding window
Identifier
shop_id, identified from the API token
Exceeded response
429 with a retry message
5. Endpoints Overview
GET
/api/public/v1/option-sets
Retrieve a paginated list of option sets.
GET
/api/public/v1/option-sets/:id
Retrieve a single option set by ID.
GET
/api/public/v1/settings
Retrieve app settings for the authenticated shop.
GET
/api/public/v1/localizations
Retrieve localization strings for a specific locale.
6. List Option Sets
Use this endpoint to retrieve a paginated list of option sets for a shop.
Query parameters
page
integer
No
Page number, 1-based. Default: 1.
limit
integer
No
Number of results per page. Minimum: 1, maximum: 100. Default: 20.
status
string
No
Filter by option set status. Accepts "true" for active option sets or "false" for inactive option sets.
product_id
string
No
Filter option sets that apply to a specific Shopify product ID. The API uses the same matching logic as the storefront: manual sets assigned to the product, all-product sets, and automated sets whose conditions match the product.
name
string
No
Case-insensitive substring search by option set name. Example: color, wrap.
locale
string
No
BCP 47 language code, for example en, vi, fr, or de. When provided, option labels and values are overlaid with translated values when available.
Sort order
The response is sorted by:
sortascendingcreated_atdescending
data[] Option Set object
data[] Option Set object_id
string
Unique option set ID. MongoDB ObjectId.
option_set_name
string
Display name of the option set.
status
boolean
Option set status. true = active, false = disabled.
type
string
Option set applying type. Accepted values: manual, automated, all.
all_products
boolean
Whether the option set applies to all products in the shop.
products
array of strings
Assigned Shopify product IDs. Usually available when type = "manual".
options
array
List of options in the option set. See Option object.
translated
boolean
Only appears when locale is provided. true = translations were applied, false = no translation was found and original values are returned.
sort
number
Sorting order. Smaller numbers appear first. Default: 0.
conditional_applying_product
object
Product auto-apply conditions. Used when type = "automated".
conditional_applying_customer
object
Customer-based applying conditions.
select_customer_type
string
Customer selection mode. Accepted values: all, manual, automated, or none.
customers
array
List of customer IDs. Only available when select_customer_type = "manual".
markets
object
Shopify Markets configuration.
exclude_products
object
Product exclusion configuration.
template_info
object
Template information. Only available when the option set was created from a template.
isClone
boolean
Indicates whether this option set was cloned from another option set.
cloneId
string
Source option set ID. Only available when isClone = true.
live_preview_bg
object
Background configuration for live preview.
save_count
number
Total number of times the option set has been saved.
option_set_tag
array of strings
Tags assigned to the option set.
import_from
string or null
Import source. Example: easify. May be null or missing if the option set was created manually.
import_at
ISO date string
Import timestamp.
created_at
ISO date string
Creation timestamp.
updated_at
ISO date string
Last update timestamp.
pagination object
pagination objectpage
integer
Current page.
limit
integer
Number of results per page.
total
integer
Total number of option sets matching the filter.
pages
integer
Total number of pages. Calculated by Math.ceil(total / limit).
7. Get Option Set by ID
Use this endpoint to retrieve a single option set by ID.
Input
id
string
Yes
Path parameter. MongoDB ObjectId of the option set.
locale
string
No
Query parameter. BCP 47 language code. When provided, option labels and values are overlaid with translated values when available.
Response 200
The data object uses the same structure as each item in data[] from the List Option Sets API.
8. Get Settings
Use this endpoint to retrieve app settings for the authenticated shop.
The shop is automatically identified from the API token. This endpoint does not require query parameters.
Settings data
_id
string
Settings document ID.
app_status
string
Boolean-like string. Always "true" for enabled or "false" for disabled, not a boolean.
use_css_version
string
CSS rendering version. Accepted values: v1 or v2.
shopify_option
object
Shopify option display configuration. Controls whether native Shopify options are shown or hidden on the storefront.
show_add_charge_feat
boolean
Whether the add charge or extra pricing feature is enabled.
show_conditional_logic_feat
boolean
Whether the conditional logic feature is enabled.
widget
object
AvisPlus widget configuration. Includes fields such as position, enabled, and other widget settings.
s_option_img
object
Swatch image display configuration.
s_option_backg_size
string
CSS background-size value for image swatches.
s_option_show_tooltip
boolean
Whether to show tooltip on swatch hover.
add_to_cart_style
object
Add-to-cart button style configuration.
cart_page
object
Option display configuration for the cart page.
product_page
object
Option display configuration for the product page.
validate_settings
string
Validation display setting. Common values: inline or alert. May be auto-computed from the shop’s installation history if not explicitly set.
custom_css
string
Custom CSS injected into the storefront.
app_embed
boolean
Whether the app embed extension is active on the current theme.
app_embed_theme_id
string
ID of the theme where app embed is enabled.
app_embed_theme_name
string
Name of the theme where app embed is enabled.
theme_version
string
Theme version string.
hide_hover_img_swatches
boolean
Whether to hide hover images for swatches.
show_watermark_on_product_page
boolean
Whether to show the AvisPlus watermark on the product page.
listFonts
array of objects
Custom fonts uploaded by the merchant. Each item may include name, family, type, css, and fontURL.
9. Get Localizations
Use this endpoint to retrieve localization strings for a specific locale.
Query parameters
locale
string
Yes
BCP 47 language code. Examples: en, vi, fr, de. If this parameter is missing, the API returns 400.
Localization fields
shop
string
Shop domain identified from the authenticated API token.
locale
string
Locale code passed by the client.
has_overrides
boolean
Whether there is a separate setting_locales document for this locale. true = locale-specific overrides exist, false = response only uses base strings from display_settings.
data
object
Object in key -> translated string format. Base values come from display_settings; overrides from setting_locales[locale].data are merged on top. Empty override values such as null or "" fall back to the base value.
Localization fallback behavior
If no setting_locales document is found for the requested locale, the API still returns 200.
In that case:
has_overridesisfalse.datais returned from the basedisplay_settings.The API does not return
404for missing locale overrides.
Common translation keys in data
datatext_price_add
string
Format for displaying additional price. Placeholder: {price_add}.
customize_alert_required_min_characters
string
Alert shown when the input is below the minimum character length. Placeholder: {min}.
dynamic_checkout_notification
string
Message shown near checkout when required options have not been selected.
add_to_cart
string
Text for the “Add to cart” button.
added_to_cart
string
Message shown after a product is added to the cart.
sold_out
string
Text displayed when the product is sold out.
10. Option Object
options[] contains the option fields inside an option set.
Important identifier mapping
This is the most important part when consuming option data externally:
key
Stable unique option key. Usually a 30-character nanoid.
Use this as the main option identifier in external logic.
option_id
Unique option ID.
Internal option ID. Do not confuse this with key.
option_name
Internal option name used in admin.
For admin/internal reference only. Not the storefront label.
label_product
Label displayed on the product page.
Use this as the customer-facing label on product page UI.
label_cart
Label displayed in cart or order.
Use this as the customer-facing label in cart/order UI.
option_values[].value_id
Unique ID of a selectable value.
Use this as the selected value identifier for choice-based options.
For conditional logic, condition_items[].field must use the controlling option’s options[].key. It should not use option_id, option_name, or the display label.
Key fields
key
string
Unique option key. Usually a 30-character nanoid.
type
string
Option type. See Option Type Enum.
option_id
string
Unique option ID. Usually a 30-character nanoid.
option_name
string
Internal option name. Used in the admin only and not displayed on the storefront.
label_product
string
Label displayed on the product page storefront.
label_cart
string
Label displayed in the cart or order.
input_name
string
Technical name describing the UI input type.
class_name
string
Custom CSS class.
required
boolean
Whether the customer is required to select or enter a value.
sort
number
Option sorting order inside the option set. Smaller numbers appear first.
default_value
string
Default value.
placeholder
string
Input placeholder.
min
string
Minimum value. Used by number and date.
max
string
Maximum value. Used by number and date.
min_length
string or number
Minimum character length. Used by text.
max_length
string
Maximum character length.
min_selections
string
Minimum number of selections. Used by multi-choice option types such as checkbox, button_multi, and swatch_multi.
max_selections
string
Maximum number of selections.
allow_multiple
string
Boolean-like string. Always "true" or "false", not a boolean.
allow_value
string
Input validation rule. Examples: only_letters, only_letters_number.
help_text
string
Help text shown to customers.
help_text_select
string
Help text display mode. Accepted values: tooltip or none.
tooltip_display
string
Tooltip display mode. Accepted values: hide, show, or value.
tooltip_text
string
Tooltip content.
switch_label
string
Label for the switch option when type = "switch". Default: Yes.
default_status
string or boolean
Default status for switch or group.
display_type
string
Display type. Accepted values: accordion for group or hyperlink for modal.
styles_heading
string
HTML heading tag. Accepted values: h1 to h6, or p.
content_heading
string
Heading content when type = "heading".
option_show_price
string
Price display mode. Accepted values: only_value, only_label, both, or none.
add_price_quantity_type
string
Pricing mode by quantity. Accepted values: each or once.
unit
string
Measurement unit. Used by dimension and slider. Default: m.
step
number or object
Step value for number or slider, or multi-step configuration.
prefix
string or null
Display prefix.
suffix
string or null
Display suffix.
quantity_label
string
Label for advanced quantity input.
value_country
string
Country code. Default: US.
is_color
boolean
Whether the swatch is a color swatch. true = color swatch, false = image swatch.
is_option_default_value
boolean
Whether the option has a default value.
option_default_value
string
Default value ID. Matches value_id in option_values.
show_option_value_qty
boolean
Whether to show a quantity input for each option value.
check_total_qty
boolean
Whether to validate total quantity.
is_onetime
boolean
Whether the charge is applied only once and not multiplied by product quantity.
addcharge_per_character
boolean
Whether to charge per entered character.
text_transform
string
Text transform setting. Accepted values: uppercase, lowercase, capitalize, or empty string.
hide_price
boolean
Whether to hide the displayed price.
option_url
string
URL behavior for the option. Accepted values: none, group_product, only_url, or allowed_open_url.
url_display
string
Controls how the URL is displayed or opened. Accepted values: click_value or click_view.
rich_text_value
string
Rich text content. Used by paragraph and html.
rich_text_value_modal
string
Rich text content for modal popup.
rich_text_value_size_chart
string
Rich text content for size chart.
editor_type
string
Editor type for modal. Accepted values: empty string for rich text or code_editor.
group_id
number
Group ID. Only available when type = "option_group". Value is generated by Date.now().
group_parent
string
Parent group ID. Only available when the option belongs to a group.
step_parent
string
Parent step ID. Only available when the option belongs to a step.
button
object
Button configuration. Example: { "button_type": "combine", "step_required": true }.
dimension_price_total
string
Dimension-based pricing formula. Example: x * {{price}}.
conditional_logic
object
Conditional show/hide logic. See Conditional Logic.
slider
object
Slider configuration.
live_preview
object
Live preview configuration.
dimension_values
object
Dimension configuration.
inventory
object
Inventory configuration.
option_values
array
List of option values. See OptionValue object.
URL-related fields
Use these fields when an option needs to work with product grouping or URL-based behavior.
option_url
none
Default value when no URL behavior is selected.
option_url
group_product
Used for grouped product behavior.
option_url
only_url
The option only contains a URL.
option_url
allowed_open_url
Allows the URL to be opened.
url_display
click_value
The URL action is triggered when the customer clicks the option value.
url_display
click_view
The URL action is triggered when the customer clicks the view/open action.
11. OptionValue Object
option_values[] contains the selectable values of a choice-based option, such as radio, checkbox, dropdown, button, and swatch options.
value_id
string
Unique value ID. Usually a 30-character nanoid.
value
string
Label displayed on the storefront. Examples: Red, Size M, Custom text.
type
string
Pricing type. See Value Type Enum.
isValueActive
string
Boolean-like string. Always "TRUE" for active or "FALSE" for disabled, not a boolean.
price
number
Fixed additional price. Decimal value. Example: 5.99.
percentageCharge
number
Percentage-based charge based on the original product price. Example: 10 means 10%.
option_show_price
string
Price display mode. Accepted values: only_value, only_label, both, or none.
productId
string
Linked Shopify product ID. Used for charge or bundle logic.
productVariationId
string
Linked Shopify variant ID.
productName
string
Linked product name.
variantId
string
Shopify variant ID.
variantName
string
Variant name.
variantBundleName
string
Variant name in bundle logic.
productBundleName
string
Product name in bundle logic.
handle
string
Shopify product handle.
is_product_bundle
boolean
Whether the value is part of bundle logic.
isAdd
boolean
Add charge flag.
variant_image
string
Variant image URL.
inventory_quantity
number
Cached inventory quantity from Shopify.
des_value
string
HTML description or tooltip content for the value.
swatch
object
Swatch display configuration.
color
string
Hex color. Example: #FF0000.
file_image
object
Uploaded file data used by the frontend.
file_image_url
string
Swatch image URL.
is_color
boolean
Whether the swatch displays a color or an image. true = color swatch, false = image swatch.
colors_number
string
Number of colors displayed. Accepted values: one or two.
12. Conditional Logic
Conditional logic controls whether an option is shown or hidden based on another option’s selected value.
Field descriptions
type
string
Action when the condition matches. Accepted values: show or hide.
logic
string
How conditions are combined. Accepted values: all for AND logic or any for OR logic.
condition_items[].field
string
Key of the controlling option used for comparison. This must match options[].key.
condition_items[].type
string
Condition operator. Examples: contains, is.
condition_items[].field_label
string
Display label of the controlling option. Used for reference only.
condition_items[].value
string or null
Comparison value. For selectable options, this usually matches option_values[].value_id.
In this example:
field= thekeyof the “Add engraving?” option.value= thevalue_idof the “Yes” option value.The target option will be shown only when the selected value contains
yes_value_id.
13. Step Structure
Used for multi-step options when type = "step".
items
array
List of steps.
items[].step_id
string
Unique step ID.
items[].icon
string
Step icon URL.
items[].name
string
Step name.
items[].desc
string
Step description.
layout
string
Step layout style. Example: step-dots.
14. Slider Structure
status
boolean
Whether the slider configuration is enabled.
rows
number
Number of rows.
per_row
number
Number of items per row.
show_icon
boolean
Whether to show icons.
show_dot
boolean
Whether to show dots.
15. Dimension Values Structure
default
string
Default dimension value.
label
string
Main dimension label.
X.label
string
Label for width.
Y.label
string
Label for height.
Z.label
string
Label for depth.
16. Inventory Structure
Inventory data is hydrated from a separate collection and is not stored directly inside option_sets.
status
boolean
Whether inventory tracking is enabled for this option.
items
array
List of inventory items. Each item corresponds to an option value or an input-type option.
items[].value_id
string or undefined
ID of the option value. May exist when the item belongs to an option_value.
items[].key
string or undefined
Option key. May exist when the item belongs to an input-type option such as text or number.
items[].sku
string
SKU.
items[].barCode
string
Barcode.
items[].available
string or number
Available inventory quantity.
items[].onHand
string or number
Actual on-hand inventory quantity.
items[].committed
string or number
Committed quantity, usually reserved by existing orders.
items[].unavailable
string or number
Unavailable inventory quantity.
items[].tracked
boolean
Whether inventory is tracked.
items[].continueSelling
boolean
Whether selling continues when out of stock.
items[].option_name
string
Option name.
items[].option_value
string
Option value name.
17. Option Type Enum
Valid values for options[].type.
Input options
text
Single-line text input.
textarea
Multi-line text input.
number
Number input.
email
Email input.
phone
Phone number input.
date
Date or datetime picker.
file
File upload.
color
Color picker.
font
Font selector.
hidden_field
Hidden field.
Choice options
radio
Radio buttons. Single selection.
checkbox
Checkboxes. Multiple selection.
button_single
Button option. Single selection.
button_multi
Button option. Multiple selection.
select
Drop-down menu.
combo_box
Combo box.
combo_select
Combo dropdown.
Swatch options
swatch
Swatches, legacy or generic.
combo_color
Combo color.
combo_image
Combo image.
swatch_single_color
Color swatch. Single selection.
swatch_single_image
Image swatch. Single selection.
swatch_multi_color
Color swatch. Multiple selection.
swatch_multi_image
Image swatch. Multiple selection.
swatch_select_color
Color dropdown.
swatch_select_image
Image dropdown.
Pricing, quantity, and configuration options
switch
On/off toggle.
slider
Numeric slider.
quantity
Quantity input.
dimension
Dimension input, such as W × H × D.
Content and layout options
paragraph
Display text.
heading
Display heading.
html
Custom HTML.
divider
Divider line.
space
Spacer.
modal
Popup modal.
size_chart
Size chart.
step
Multi-step wizard.
option_group
Option group.
18. Value Type Enum
Valid values for option_values[].type.
adjustprice
Fixed additional price.
percentagecharge
Percentage-based charge based on the original product price.
chargeorbundle
Charge or bundle linked to a product or variant.
useexistingvariant
Use an existing Shopify variant.
createcharge
Create a new charge as a separate line item.
19. Important Notes
Boolean-like values stored as strings
Some fields look like booleans but are returned as strings.
isValueActive
"TRUE" or "FALSE"
allow_multiple
"true" or "false"
app_status
"true" or "false"
Client applications should parse these fields as strings unless explicitly converted.
IDs
key, option_id, and value_id are usually 30-character nanoid strings. Some values may be UUID v4 values depending on data source or legacy data.
Price
Price values are numbers and may contain decimals.
Group ID
group_id only exists when type = "option_group". Its value is a timestamp generated by Date.now().
Group and step parents
group_parent and step_parent only exist when an option is a child of a group or a step.
Swatch types
is_color = truemeans the swatch is a color swatch.is_color = falsemeans the swatch is an image swatch.
20. Example: Option with Values
21. Example: Conditional Logic Between Two Options
View conditional logic JSON example
In this example:
engraving_text_keyis the key of the option being controlled.add_engraving_keyis the key of the controlling option.yes_value_idis the selected value ID that triggers the condition.
---
22. Changelog
2026-05-25
Wrapped long examples, sample responses, and JSON structures in expandable sections for GitBook readability.
2026-05-25
Added option_url and url_display fields with accepted values.
2026-05-25
Updated API host to https://public-api.avisplus.io, added Swagger URL, clarified token handling, clarified field vs key usage, reorganized option type enum, and added examples.
2026-04-09
Added the translated field to option set responses when the locale query parameter is provided.
2026-04-06
Released Public API v1 with option sets list/detail, settings, and localizations endpoints.
Last updated