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.io

Base URL

https://public-api.avisplus.io/api/public/v1

Swagger 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/v1

Breaking 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

Code
Description

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

Rule
Value

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

Method
Endpoint
Purpose

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

Parameter
Type
Required
Description

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:

  1. sort ascending

  2. created_at descending

Example request
Response 200

data[] Option Set object

Field
Type
Description

_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

Field
Type
Description

page

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

Parameter
Type
Required
Description

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.

Example request
Response 200

The data object uses the same structure as each item in data[] from the List Option Sets API.

Response 404

Returned when the id does not exist or the option set has been soft-deleted.


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.

Example request
Response 200

Settings data

Field
Type
Description

_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

Parameter
Type
Required
Description

locale

string

Yes

BCP 47 language code. Examples: en, vi, fr, de. If this parameter is missing, the API returns 400.

Example request
Response 200

Localization fields

Field
Type
Description

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_overrides is false.

  • data is returned from the base display_settings.

  • The API does not return 404 for missing locale overrides.

Common translation keys in data

Key
Type
Description

text_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:

Field
Meaning
Recommended usage

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

Field
Type
Description

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.

Use these fields when an option needs to work with product grouping or URL-based behavior.

Field
Value
Description

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.

Field
Type
Description

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.

View swatch JSON structure
Field
Type
Description

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.

View JSON structure

Field descriptions

Field
Type
Description

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.

Example: show engraving text only when engraving is selected

In this example:

  • field = the key of the “Add engraving?” option.

  • value = the value_id of 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".

View step JSON structure
Field
Type
Description

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

View slider JSON structure
Field
Type
Description

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

View dimension values JSON structure
Field
Type
Description

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.

View inventory JSON structure
Field
Type
Description

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

Type
Description

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

Type
Description

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

Type
Description

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

Type
Description

switch

On/off toggle.

slider

Numeric slider.

quantity

Quantity input.

dimension

Dimension input, such as W × H × D.

Content and layout options

Type
Description

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.

Type
Description

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.

Field
Returned values

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 = true means the swatch is a color swatch.

  • is_color = false means the swatch is an image swatch.


20. Example: Option with Values

View option JSON example

21. Example: Conditional Logic Between Two Options

View conditional logic JSON example

In this example:

  • engraving_text_key is the key of the option being controlled.

  • add_engraving_key is the key of the controlling option.

  • yes_value_id is the selected value ID that triggers the condition.

---

22. Changelog

Date
Change

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