BOLINA
Developers

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.

Request the home page as Markdown
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.

Fetch one module
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 shape
{
  "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.

Send an enquiry
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.