Your first request
curl https://www.boatshowavenue.com/api/v1/account \
-H "Authorization: Bearer $BSA_API_KEY"
Publish deliberately
Create a complete draft, upload its media, then request publication. New publication requests enter listing review. Read the current ETag and send it with If-Match when updating, deleting, publishing or managing media.
curl https://www.boatshowavenue.com/api/v1/listings \
-H "Authorization: Bearer $BSA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: inventory-import-boat-001" \
-d '{"title":"2024 Example 42","year":2024,"make":"Example",
"model":"42","length":42,"length_unit":"ft",
"condition":"used","price":{"amount":"125000","currency":"USD"},
"location":"Miami","country":"US",
"primary_category":"REPLACE_WITH_REFERENCE_CODE",
"description":"A complete description of the boat, its condition and equipment."}'
Retrieve category codes and countries from GET /api/v1/references. Asking prices currently use whole currency units; "125000.00" is also accepted.
JavaScript example
// Run on your server; keep the key in an environment variable.
const response = await fetch('https://www.boatshowavenue.com/api/v1/listings?limit=25', {
headers: { Authorization: `Bearer ${process.env.BSA_API_KEY}` }
});
const result = await response.json();
if (!response.ok) throw new Error(`${result.code}: ${result.detail}`);
for (const listing of result.data) console.log(listing.id, listing.title);
Media and privacy
Listing media is public content. Use marketing photos, videos and brochures; do not upload identity documents or confidential records. Photos are limited to 25 MiB and 40 megapixels; MP4 videos and PDF documents are limited to 100 MiB. Private document storage and malware scanning are not included in this release.
PHP example
$curl = curl_init('https://www.boatshowavenue.com/api/v1/usage');
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 20,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('BSA_API_KEY')],
]);
$body = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$result = json_decode($body, true, 32, JSON_THROW_ON_ERROR);
if ($status !== 200) throw new RuntimeException($result['detail'] ?? 'Request failed');
Testing, compatibility and integrations
Test credentials work only against the separately configured test environment that issued them. They do not create an automatic production sandbox. Use synthetic inventory and contacts when testing. Obtain the correct test base URL from your deployment administrator.
Version 1 uses additive changes for compatibility. Breaking changes require a new API version and at least 90 days of published deprecation notice. Integrations should ignore unknown response fields. OAuth delegation and ready-made CRM connectors are future work; they are not currently advertised as available.
Compare plans · Discuss a custom integration · API and plan terms