Vendor API V1
This is a legacy API.
V3 is the actively maintained version. New integrations should use
Venue API V3
instead.
Resources
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 | 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
|
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 | 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
|
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 | 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
|
Purchase Orders
1 endpointsPurchase 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 | 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 | — |
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 | 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 |
|
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 |