Create and send a transfer
Moving packages between facilities means creating a manifest with the shipper, recipient, packages, and how they're being transported.
Assemble the package list
Each package on the transfer needs its own line:
{
"package_id" : "pkg_2385762" ,
"tag" : "1A40F0000000001000000001" ,
"item_name" : "Blue Dream Flower" ,
"quantity" : 453.6 ,
"unit_of_measure" : "Grams"
}
Create the transfer
curl -X POST https://api.seedlink.dev/v1/connections/8f9ab02c-78c2-4292-a43d-79a327a4efd5/facilities/fac_C11-0000123-LIC/transfers \
-H "Authorization: Bearer sl_at_..." \
-H "Content-Type: application/json" \
-d '{
"transfer_type": "wholesale",
"shipper_facility": "fac_C11-0000123-LIC",
"recipient_facility": "fac_C10-0000045-LIC",
"packages": [
{
"package_id": "pkg_2385762",
"tag": "1A40F0000000001000000001",
"item_name": "Blue Dream Flower",
"quantity": 453.6,
"unit_of_measure": "Grams"
}
],
"transporter": "Acme Logistics",
"driver_name": "J. Rivera",
"vehicle_info": "White box truck, plate 7ABC123"
}'
The response includes the transfer's id and a manifest_number.
Track its status
curl https://api.seedlink.dev/v1/connections/8f9ab02c-78c2-4292-a43d-79a327a4efd5/facilities/fac_C11-0000123-LIC/transfers/txf_58291 \
-H "Authorization: Bearer sl_at_..."
status moves through pending, in_transit, received, or rejected as the upstream system updates it.
Gotchas
Transfer writes only work against sandbox connections. There's also no endpoint yet to change a transfer's status yourself (accepting or rejecting on arrival). Status is read-only once the transfer exists, reflecting whatever the upstream system reports.
Last modified on August 2, 2026