Vendor API V1

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

Authentication

Resources

9 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 Nullable Default
status string(20) Yes active
name string No
description text Yes
address string Yes
city string Yes
state string(2) Yes
zip string(10) Yes
phone string Yes
email string Yes
website string Yes
contact_name string Yes
created_at datetime No
updated_at datetime No
logo string Yes
timezone string Yes
suppliers_count integer Yes 0
core_brands_count integer Yes 0
is_supplier boolean Yes false
has_catalogs boolean Yes false
inheritor_id integer Yes
territory string(2) Yes
region_id integer Yes
merged boolean Yes false
core_isn string Yes
core_token string Yes
retailers_count integer Yes 0
retailers_analyzed_at datetime Yes
subscription_id integer Yes
subscription_price integer Yes
salesforce_account_number string Yes
last_subscription_changed datetime Yes
is_demo boolean No false
last_rate_card_changed_at datetime Yes
enable_catalog boolean Yes false
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 Nullable Default
product_id integer No
tier_id integer Yes
barcode string Yes
price integer No 0
last_price integer Yes
cost integer No 0
discountable boolean No true
quantity_on_hand decimal No 0.0
optimum_level integer Yes 0
reorder_threshold integer Yes
calc_threshold integer Yes
last_replenish_date datetime Yes
velocity decimal No 0.0
sold integer No 0
days_supply integer No 0
avg_cost integer Yes
avg_price integer Yes
sync_expires_at datetime Yes
last_order datetime Yes
created_at datetime Yes
updated_at datetime Yes
supplier_id integer Yes
updated_by string Yes
unit string(15) No units
weight decimal No 0.0
weight_unit string(15) Yes
is_active boolean Yes true
notes text Yes
sellable_quantity decimal No 0.0
ecomm_quantity decimal No 0.0
allow_undercost boolean No false
manifest_items_count integer Yes 0
thc decimal Yes
cbd decimal Yes
cbn decimal Yes
equivalent_weight decimal Yes
equivalent_unit string Yes
thc_min decimal Yes
thc_max decimal Yes
cbd_min decimal Yes
cbd_max decimal Yes
cbn_min decimal Yes
cbn_max decimal Yes
api_id string Yes
inheritor_id integer Yes
med_price integer Yes
terpenes text Yes
manifest_transfer_date date Yes
thca decimal Yes
thca_min decimal Yes
thca_max decimal Yes
cbda decimal Yes
cbda_min decimal Yes
cbda_max decimal Yes
total_thc decimal Yes
total_thc_min decimal Yes
total_thc_max decimal Yes
producer_id integer Yes
doh_compliant boolean Yes false
total_cbd decimal Yes
total_cbd_min decimal Yes
total_cbd_max decimal Yes
last_received_quantity decimal Yes 0.0
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
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 Nullable Default
monetary_value integer Yes 0
name string Yes
display_name string Yes
image string Yes
product_type_id integer Yes
product_brand_id integer Yes
product_strain_id integer Yes
flower_type string Yes
shared boolean No false
created_at datetime Yes
updated_at datetime Yes
description string(8000) Yes
description_html text Yes
report_cat string Yes
weight_unit string(2) Yes
is_sample boolean No false
is_medical_only boolean No false
weight decimal Yes 0.0
concentrate_type string Yes
available_on string No everywhere
inheritor_id integer Yes
skus_count integer Yes 0
sellable_quantity decimal No 0.0
quantity_on_hand decimal No 0.0
unit string No units
external_id string Yes
archived boolean No false
internal_id string Yes
curated_product_id integer Yes
instructions text Yes
servings integer Yes
pack_size integer Yes
tag_list text Yes
manufacturing_method text Yes
ingredients text Yes
solvent string Yes
allergens text Yes
thc_per_serving decimal Yes
cbd_per_serving decimal Yes
core_product_id integer Yes
image_assocs_count integer Yes 0
has_image boolean Yes false
seo_title string Yes
seo_meta_description text Yes
seo_keywords text Yes
last_catalog_sync datetime Yes
catalog_synced boolean Yes false
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 Nullable Default
retailer_id integer No
created_by integer No
manifest_id integer Yes
aasm_state string No pending
created_at datetime No
updated_at datetime No
items_count integer No 0
ref_number string Yes
owner_type string Yes
owner_id integer Yes
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 Nullable Default
supplier_id integer Yes
reference_no string Yes
aasm_state string Yes pending
transfer_date date Yes
delivery_time datetime Yes
notes text Yes
created_at datetime Yes
updated_at datetime Yes
api_id string Yes
accepted_by string Yes
accepted_at datetime Yes
pickup_time datetime Yes
transportation_type string Yes
destination_id integer Yes
driver_name string Yes
driver_id string Yes
driver_dob date Yes
vehicle_id string Yes
vehicle_year string Yes
vehicle_color string Yes
vehicle_model string Yes
vehicle_make string Yes
license_plate string Yes
courier_id integer Yes
type string Yes
route text Yes
courier_license_number string Yes
voided_lot_numbers text Yes
transferred_at datetime Yes
voided_at datetime Yes
incoming_created_at datetime Yes
estimated_departed_at datetime Yes
estimated_arrival_at datetime Yes
venue_destination_id integer Yes
received_cost integer Yes
accepted_cost integer Yes 0
received_quantity integer Yes
accepted_quantity integer Yes 0
has_marijuana boolean No false
json_filename string Yes
import_source string Yes
discount integer Yes
excise_tax boolean No false
total_excise_tax integer Yes 0
external_driver_id string Yes
external_vehicle_id string Yes
sts_license_id integer Yes
payment_method string(25) Yes
core_external_ref string(50) Yes
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 Nullable Default
supplier_id integer Yes
reference_no string Yes
aasm_state string Yes pending
transfer_date date Yes
delivery_time datetime Yes
notes text Yes
created_at datetime Yes
updated_at datetime Yes
api_id string Yes
accepted_by string Yes
accepted_at datetime Yes
pickup_time datetime Yes
transportation_type string Yes
destination_id integer Yes
driver_name string Yes
driver_id string Yes
driver_dob date Yes
vehicle_id string Yes
vehicle_year string Yes
vehicle_color string Yes
vehicle_model string Yes
vehicle_make string Yes
license_plate string Yes
courier_id integer Yes
type string Yes
route text Yes
courier_license_number string Yes
voided_lot_numbers text Yes
transferred_at datetime Yes
voided_at datetime Yes
incoming_created_at datetime Yes
estimated_departed_at datetime Yes
estimated_arrival_at datetime Yes
venue_destination_id integer Yes
received_cost integer Yes
accepted_cost integer Yes 0
received_quantity integer Yes
accepted_quantity integer Yes 0
has_marijuana boolean No false
json_filename string Yes
import_source string Yes
discount integer Yes
excise_tax boolean No false
total_excise_tax integer Yes 0
external_driver_id string Yes
external_vehicle_id string Yes
sts_license_id integer Yes
payment_method string(25) Yes
core_external_ref string(50) Yes
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