Bolina Marine developer docs
Everything this site publishes for software and AI agents: machine-readable summaries, a small read-only API, and how to reach the team. No API key is needed.
What is public
This site (https://bolinamarine.com) publishes facts about Bolina Marine: its feature modules, its integrations, and a way to send the team an enquiry. All of it is open, read-only and needs no authentication.
Your fleet data lives in the Bolina app at https://app.bolinamarine.com, and its API is not public yet. If you need programmatic access to your own vessels, bookings or reports, tell us what you are building at contact@bolinamarine.com.
Machine-readable files
Start here if you are an agent or a crawler.
- /llms.txtShort Markdown summary: modules, integrations, when to use Bolina, and how agents should call this site.
- /llms-full.txtEvery page of the site as one Markdown document.
- /openapi.jsonOpenAPI 3.1 description of the endpoints below.
- /sitemap.xmlEvery indexable page.
Markdown on request
Any page returns Markdown instead of HTML when the request prefers it. Send an Accept header that lists text/markdown; browsers keep getting HTML. Responses carry Vary: Accept, and pages that do not exist return a Markdown 404.
curl -H "Accept: text/markdown" https://bolinamarine.com/Website API
JSON over HTTPS, no authentication. Read-only responses are cached for an hour and allow any origin.
- GET /api/featuresAll feature modules with their overview and sub-features.
- GET /api/features/{slug}One module, for example scheduling or owner-reporting.
- GET /api/integrationsIntegration catalogue by category, each with Live, Beta or Coming soon status.
- POST /api/contactSend the team an enquiry. See below.
curl https://bolinamarine.com/api/features/scheduling
{
"data": {
"slug": "scheduling",
"name": "Scheduling",
"tagline": "One calendar per boat — no conflicts, no surprises.",
"subFeatures": [{ "title": "Unified vessel calendar", "body": "…" }, …]
}
}Errors
Every error is JSON with a stable code, a message, and a hint about what to do next. Validation errors add a details object keyed by field. Unknown /api paths return not_found rather than an HTML page.
{
"error": {
"code": "validation_error",
"message": "Some fields are missing or invalid.",
"hint": "name, email and message are required; company and vessels are optional strings.",
"details": { "email": "must be a valid email address" }
}
}Contact endpoint
POST /api/contact emails an enquiry to the team, who reply within one business day. name, email and message are required; company and vessels (fleet size, such as 4-10) are optional. Only submit on behalf of a person who asked you to.
If email delivery is unavailable the endpoint answers 503 with code email_not_configured; write to contact@bolinamarine.com instead.
curl -X POST https://bolinamarine.com/api/contact \
-H "Content-Type: application/json" \
-d '{"name":"Ana Costa","email":"ana@example.com","vessels":"4-10","message":"We run eight catamarans and want a demo."}'
{ "ok": true }Building something with Bolina? Tell us about it.