Vendor API V1

This is a legacy API. V3 is the actively maintained version. New integrations should use Venue API V3 instead.

Authentication

Vendors

1 endpoints
GET /vapi/v1/vendors

List vendors connected to the integrator

Returns all active vendor connections. Auth requires only the integrator token.

Example

curl -X GET "https://app.posabit.com/vapi/v1/vendors" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
status string(20) No Default: active
name string Yes
description text No
address string No
city string No
state string(2) No
zip string(10) No
phone string No
email string No
website string No
contact_name string No
created_at datetime Yes
updated_at datetime Yes
logo string No
timezone string No
suppliers_count integer No Default: 0
core_brands_count integer No Default: 0
is_supplier boolean No Default: false
has_catalogs boolean No Default: false
inheritor_id integer No
territory string(2) No
region_id integer No
merged boolean No Default: false
core_isn string No
core_token string No
retailers_count integer No Default: 0
retailers_analyzed_at datetime No
subscription_id integer No
subscription_price integer No
salesforce_account_number string No
last_subscription_changed datetime No
is_demo boolean Yes Default: false
last_rate_card_changed_at datetime No
enable_catalog boolean No Default: false

Inventories

1 endpoints
GET /vapi/v1/retailers/{retailer_id}/inventories

Get VMI inventory data for a retailer

Returns inventory data from Redshift. Paginated with array slicing.

Parameters

Name Type In Required Description
retailer_id integer path Yes Retailer ID
sales_range_in_weeks integer query No Sales lookback in weeks (default 4)
page integer query No Page number (default 1)
per_page integer query No Results per page (default 100, max 1000)

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers/{retailer_id}/inventories" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found

Response Fields

Field Type Required Description
product_id integer Yes
tier_id integer No
barcode string No
price integer Yes Default: 0
last_price integer No
cost integer Yes Default: 0
discountable boolean Yes Default: true
quantity_on_hand decimal Yes Default: 0.0
optimum_level integer No Default: 0
reorder_threshold integer No
calc_threshold integer No
last_replenish_date datetime No
velocity decimal Yes Default: 0.0
sold integer Yes Default: 0
days_supply integer Yes Default: 0
avg_cost integer No
avg_price integer No
sync_expires_at datetime No
last_order datetime No
created_at datetime No
updated_at datetime No
supplier_id integer No
updated_by string No
unit string(15) Yes Default: units
weight decimal Yes Default: 0.0
weight_unit string(15) No
is_active boolean No Default: true
notes text No
sellable_quantity decimal Yes Default: 0.0
ecomm_quantity decimal Yes Default: 0.0
allow_undercost boolean Yes Default: false
manifest_items_count integer No Default: 0
thc decimal No
cbd decimal No
cbn decimal No
equivalent_weight decimal No
equivalent_unit string No
thc_min decimal No
thc_max decimal No
cbd_min decimal No
cbd_max decimal No
cbn_min decimal No
cbn_max decimal No
api_id string No
inheritor_id integer No
med_price integer No
terpenes text No
manifest_transfer_date date No
thca decimal No
thca_min decimal No
thca_max decimal No
cbda decimal No
cbda_min decimal No
cbda_max decimal No
total_thc decimal No
total_thc_min decimal No
total_thc_max decimal No
producer_id integer No
doh_compliant boolean No Default: false
total_cbd decimal No
total_cbd_min decimal No
total_cbd_max decimal No
last_received_quantity decimal No Default: 0.0

Sales

1 endpoints
GET /vapi/v1/retailers/{retailer_id}/sales

Get sales data for a retailer

Returns daily sales aggregated by product type from Redshift. Accepts a custom date range via start_date/end_date (ISO 8601, e.g. 2025-01-01). The range must not exceed 31 days. Defaults to the last 30 days.

Parameters

Name Type In Required Description
retailer_id integer path Yes Retailer ID
start_date string query No Start date (ISO 8601, e.g. 2025-01-01)
end_date string query No End date (ISO 8601, e.g. 2025-01-31)
page integer query No Page number (default 1)
per_page integer query No Results per page (default 100, max 1000)

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers/{retailer_id}/sales" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found
422 Invalid or out-of-range dates

Products

1 endpoints
GET /vapi/v1/retailers/{retailer_id}/products

Get core products carried by a retailer

Parameters

Name Type In Required Description
retailer_id integer path Yes Retailer ID
page integer query No Page number (default 1)
per_page integer query No Results per page (default 100)

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers/{retailer_id}/products" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found

Response Fields

Field Type Required Description
monetary_value integer No Default: 0
name string No
display_name string No
image string No
product_type_id integer No
product_brand_id integer No
product_strain_id integer No
flower_type string No
shared boolean Yes Default: false
created_at datetime No
updated_at datetime No
description string(8000) No Default:
description_html text No
report_cat string No Default:
weight_unit string(2) No
is_sample boolean Yes Default: false
is_medical_only boolean Yes Default: false
weight decimal No Default: 0.0
concentrate_type string No
available_on string Yes Default: everywhere
inheritor_id integer No
skus_count integer No Default: 0
sellable_quantity decimal Yes Default: 0.0
quantity_on_hand decimal Yes Default: 0.0
unit string Yes Default: units
external_id string No
archived boolean Yes Default: false
internal_id string No
curated_product_id integer No
instructions text No
servings integer No
pack_size integer No
tag_list text No
manufacturing_method text No
ingredients text No
solvent string No
allergens text No
thc_per_serving decimal No
cbd_per_serving decimal No
core_product_id integer No
image_assocs_count integer No Default: 0
has_image boolean No Default: false
seo_title string No
seo_meta_description text No
seo_keywords text No
last_catalog_sync datetime No
catalog_synced boolean No Default: false
tag_list_enh text No

Purchase Orders

1 endpoints
Purchase Orders allow vendors to manage and track orders from their retailers. View all incoming purchase orders, update their status, and communicate directly with retailers through the POSaBIT portal.
GET /vapi/v1/retailers/{retailer_id}/purchase_orders

Get purchase orders for a retailer

Parameters

Name Type In Required Description
retailer_id integer path Yes Retailer ID
page integer query No Page number (default 1)
per_page integer query No Results per page (default 100)

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers/{retailer_id}/purchase_orders" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found

Response Fields

Field Type Required Description
retailer_id integer Yes
created_by integer Yes
manifest_id integer No
aasm_state string Yes Default: pending
created_at datetime Yes
updated_at datetime Yes
items_count integer Yes Default: 0
ref_number string No
owner_type string No
owner_id integer No

Manifests

2 endpoints
GET /vapi/v1/retailers/{retailer_id}/manifests

Get manifests for a retailer

Parameters

Name Type In Required Description
retailer_id integer path Yes Retailer ID
page integer query No Page number (default 1)
per_page integer query No Results per page (default 100)

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers/{retailer_id}/manifests" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found

Response Fields

Field Type Required Description
supplier_id integer No
reference_no string No
aasm_state string No Default: pending
transfer_date date No
delivery_time datetime No
notes text No
created_at datetime No
updated_at datetime No
api_id string No
accepted_by string No
accepted_at datetime No
pickup_time datetime No
transportation_type string No
destination_id integer No
driver_name string No
driver_id string No
driver_dob date No
vehicle_id string No
vehicle_year string No
vehicle_color string No
vehicle_model string No
vehicle_make string No
license_plate string No
courier_id integer No
type string No
route text No
courier_license_number string No
voided_lot_numbers text No
transferred_at datetime No
voided_at datetime No
incoming_created_at datetime No
estimated_departed_at datetime No
estimated_arrival_at datetime No
venue_destination_id integer No
received_cost integer No
accepted_cost integer No Default: 0
received_quantity integer No
accepted_quantity integer No Default: 0
has_marijuana boolean Yes Default: false
json_filename string No
import_source string No
discount integer No
excise_tax boolean Yes Default: false
total_excise_tax integer No Default: 0
external_driver_id string No
external_vehicle_id string No
sts_license_id integer No
payment_method string(25) No
core_external_ref string(50) No Default:
external_pdf string No
GET /vapi/v1/retailers/{retailer_id}/manifests/{id}

Get manifest details with line items

Parameters

Name Type In Required Description
retailer_id integer path Yes Retailer ID
id integer path Yes Manifest ID

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers/{retailer_id}/manifests/{id}" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found

Response Fields

Field Type Required Description
supplier_id integer No
reference_no string No
aasm_state string No Default: pending
transfer_date date No
delivery_time datetime No
notes text No
created_at datetime No
updated_at datetime No
api_id string No
accepted_by string No
accepted_at datetime No
pickup_time datetime No
transportation_type string No
destination_id integer No
driver_name string No
driver_id string No
driver_dob date No
vehicle_id string No
vehicle_year string No
vehicle_color string No
vehicle_model string No
vehicle_make string No
license_plate string No
courier_id integer No
type string No
route text No
courier_license_number string No
voided_lot_numbers text No
transferred_at datetime No
voided_at datetime No
incoming_created_at datetime No
estimated_departed_at datetime No
estimated_arrival_at datetime No
venue_destination_id integer No
received_cost integer No
accepted_cost integer No Default: 0
received_quantity integer No
accepted_quantity integer No Default: 0
has_marijuana boolean Yes Default: false
json_filename string No
import_source string No
discount integer No
excise_tax boolean Yes Default: false
total_excise_tax integer No Default: 0
external_driver_id string No
external_vehicle_id string No
sts_license_id integer No
payment_method string(25) No
core_external_ref string(50) No Default:
external_pdf string No

Retailers

2 endpoints
GET /vapi/v1/retailers

List all active retailers for the vendor

Parameters

Name Type In Required Description
vendor_id integer query No Vendor ID (alternative to vendor_token in auth header)

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
GET /vapi/v1/retailers/{id}

Get retailer details with inventory metrics

Parameters

Name Type In Required Description
id integer path Yes Retailer ID

Example

curl -X GET "https://app.posabit.com/vapi/v1/retailers/{id}" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found