> ## Documentation Index
> Fetch the complete documentation index at: https://aisa.one/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> - Base URLs: models `https://api.aisa.one/v1` (Gemini GenerateContent: `https://api.aisa.one/v1beta`); data APIs `https://api.aisa.one/apis/v1`. The `servers` of each operation in https://aisa.one/openapi.yaml is authoritative.
> - Auth: `Authorization: Bearer $AISA_API_KEY`. Never print, log, or commit the key.
> - MCP (preferred for agents): `https://mcp.aisa.one/mcp`, signed in with OAuth, so there is no key to paste.
> - Agent Skill: `npx skills add AIsa-team/agent-skills --skill aisa`. Fallback with the AIsa CLI: `aisa skills install aisa`.
> - Spending: docs, https://aisa.one/models, https://aisa.one/api, `/v1/models`, and MCP `search`, `list_categories`, `get_details`, `batch_quote`, and the `account` operation are free. Quote the exact calls before running them (MCP `batch_quote`, CLI `aisa quote --json`). If the quote reports `auto_execute_eligible: true`, run it unless the user set a tighter limit or asked only for a quote. Otherwise, tell the user in one message the planned calls, the quoted price, and a total USD budget for the task, then wait for approval. Direct HTTP calls follow the stricter rule at https://aisa.one/docs/get-started/cli.md#direct-http-fallback. Do not make paid calls to test availability. Full rule: https://aisa.one/llms.txt

# GET Route

> <!-- aisa-pricing:start -->
Usage-based billing; Default request estimate: $0.0007 USD (not a fixed price). Declared unit rate: $0.000001 USD per provider_credit. Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->

## Request contract

* **Method and path:** POST /apis/v1/graphhopper/get-route
* **Availability:** enabled
* **Request URL template:** `https://api.aisa.one/apis/v1/graphhopper/get-route`
* **Runtime facts:** 6a72f8e2fa7fb1c29379e3b24b3a247c8428a3b6ed621b3f84f84e75cb0de2bc

[Complete OpenAPI definition](https://aisa.one/docs/reference-contracts/graphhopper.json)

Effective request and pricing declaration (including authentication and referenced schemas):

```json theme={null}
{
  "operationId": "graphhopper.get-route",
  "method": "POST",
  "path": "/apis/v1/graphhopper/get-route",
  "servers": [
    {
      "url": "https://api.aisa.one"
    }
  ],
  "parameters": [],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "properties": {
            "debug": {
              "type": "boolean",
              "default": false,
              "description": "Enable formatted output for debugging."
            },
            "point": {
              "items": {
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 2,
              "type": "array",
              "description": "Route waypoints as 'latitude,longitude' strings. Specify at least origin and destination. Via points are possible. Example: ['51.131,12.414', '48.224,3.867']"
            },
            "locale": {
              "type": "string",
              "default": "en",
              "examples": [
                "en",
                "de",
                "fr"
              ],
              "description": "Locale for turn instructions. Examples: 'en', 'de', 'fr', 'pt_PT'"
            },
            "details": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Path detail types to include. Available: 'street_name', 'street_ref', 'street_destination', 'leg_time', 'leg_distance', 'roundabout', 'country', 'time', 'distance', 'max_speed', 'max_weight', 'max_width', 'toll', 'road_class', 'road_class_link', 'road_access', 'road_environment', 'hazmat', 'hazmat_tunnel', 'hazmat_water', 'lanes', 'surface', 'smoothness', 'hike_rating', 'mtb_rating', 'foot_network', 'bike_network'"
            },
            "heading": {
              "type": "array",
              "items": {
                "type": "integer"
              },
              "description": "Preferred heading direction for each point in degrees (0-360, north-based clockwise). Specify one for start or one per point. Requires ch.disable=true."
            },
            "profile": {
              "enum": [
                "car"
              ],
              "type": "string",
              "description": "The routing profile determining network, speed, and physical attributes. Common values: 'car', 'bike', 'foot', 'motorcycle', 'mtb', 'racingbike', 'hike'. Default: 'car'"
            },
            "curbside": {
              "type": "array",
              "items": {
                "enum": [
                  "any",
                  "left",
                  "right"
                ],
                "type": "string"
              },
              "description": "Side of the road for leaving/arriving at each point. Specify for all points or none. Only for motor vehicles."
            },
            "optimize": {
              "enum": [
                "false"
              ],
              "type": "string",
              "description": "If 'true', reorders points to minimize total travel time. Applies route optimization limits and increases the price."
            },
            "algorithm": {
              "enum": [
                "round_trip",
                "alternative_route"
              ],
              "type": "string",
              "description": "Special routing algorithm. 'round_trip': returns to start with randomness. 'alternative_route': provides multiple route options."
            },
            "elevation": {
              "type": "boolean",
              "default": false,
              "description": "Include altitude as third coordinate in response. Changes format of points and snapped_waypoints fields."
            },
            "ch.disable": {
              "type": "boolean",
              "default": false,
              "description": "Enable flexible mode to use custom_model or advanced options below. Set to true for heading, algorithm, etc."
            },
            "point_hint": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Optional road name hints for snapping each point. Specify none or the same number as points."
            },
            "calc_points": {
              "type": "boolean",
              "default": true,
              "description": "Whether to calculate route geometry points."
            },
            "instructions": {
              "type": "boolean",
              "default": true,
              "description": "Whether to calculate and return turn-by-turn instructions."
            },
            "pass_through": {
              "type": "boolean",
              "default": false,
              "description": "Avoid u-turns at via-points with regard to heading_penalty. Requires ch.disable=true."
            },
            "points_encoded": {
              "type": "boolean",
              "default": true,
              "description": "Use polyline encoding for geometry (true) or simple coordinate pairs (false)."
            },
            "heading_penalty": {
              "type": "integer",
              "default": 300,
              "minimum": 0,
              "description": "Time penalty in seconds for not obeying specified heading. Requires ch.disable=true."
            },
            "round_trip.seed": {
              "type": "integer",
              "description": "Random seed for deterministic round trip results. Requires algorithm='round_trip'."
            },
            "snap_prevention": {
              "type": "array",
              "items": {
                "enum": [
                  "motorway",
                  "trunk",
                  "ferry",
                  "tunnel",
                  "bridge",
                  "ford"
                ],
                "type": "string"
              },
              "description": "Prevent snapping to specific road types. Values: 'motorway', 'trunk', 'ferry', 'tunnel', 'bridge', 'ford'"
            },
            "round_trip.distance": {
              "type": "integer",
              "default": 10000,
              "minimum": 0,
              "description": "Approximate round trip length in meters. Requires algorithm='round_trip'."
            },
            "alternative_route.max_paths": {
              "type": "integer",
              "default": 2,
              "minimum": 1,
              "description": "Maximum number of alternative paths. Requires algorithm='alternative_route'."
            },
            "alternative_route.max_share_factor": {
              "type": "number",
              "default": 0.6,
              "maximum": 1,
              "minimum": 0,
              "description": "Maximum similarity factor between alternative and optimal route. Requires algorithm='alternative_route'."
            },
            "alternative_route.max_weight_factor": {
              "type": "number",
              "default": 1.4,
              "minimum": 0,
              "description": "Maximum factor by which alternatives can be longer than optimal route. Requires algorithm='alternative_route'."
            }
          },
          "required": [
            "optimize",
            "point",
            "profile"
          ]
        }
      }
    }
  },
  "x-aisa-status": "enabled",
  "x-aisa-pricing": {
    "cost_contract": "response_units",
    "customer_multiplier": 1.0,
    "customer_pricing": "provider_cost_multiplier",
    "default_request_estimate_usd": 0.0007,
    "estimate_source": "profile_seed",
    "evidence_source": "response_body",
    "maximum_units": 10000000,
    "unit": "provider_credit",
    "unit_rate_usd": 1e-06
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}
```

## Cost and request rules

Usage-based billing; Default request estimate: \$0.0007 USD (not a fixed price). Declared unit rate: \$0.000001 USD per provider\_credit. Account-specific pricing and final settlement may differ.

Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.

* **Default request reference estimate (USD):** 0.0007
* **Declared unit rate (USD):** 1e-06
* **Billing unit:** provider\_credit
* **Cost contract:** response\_units
* **Published reference multiplier:** 1.0
* **Declared maximum count/units:** 10000000
* **Settlement evidence source:** response\_body


## OpenAPI

````yaml reference-contracts/graphhopper.json POST /apis/v1/graphhopper/get-route
openapi: 3.1.0
info:
  description: ''
  title: GraphHopper
  version: '1'
  x-aisa-capabilities:
    idempotency: Idempotency-Key
    max_price: X-AISA-Max-Price-USD
    quote:
      header: X-AISA-Cost-Mode
      value: quote
  x-aisa-configured-paths:
    - /apis/v1/graphhopper/geocode-get
    - /apis/v1/graphhopper/get-matrix
    - /apis/v1/graphhopper/get-route
    - /apis/v1/graphhopper/isochrone-get
    - /apis/v1/graphhopper/matrix-post
    - /apis/v1/graphhopper/route-post
  x-aisa-document:
    facts_hash: 6a72f8e2fa7fb1c29379e3b24b3a247c8428a3b6ed621b3f84f84e75cb0de2bc
    generator_version: '3'
    protocol_version: '1'
    schema_version: '1'
    composer_version: '28'
    response_pending: []
    document_hash: sha256:d9dd70cdbeb543115e630c23fe89116520ef370e8db5c5a9cc923630f4fca8ab
  x-aisa-plans:
    builder: 1
    display_plan: payg
    payg: 1
    similarweb_payg: 1
    team: 1
    version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
  x-aisa-provider: graphhopper
  x-aisa-catalogs:
    graphhopper:
      title: GraphHopper
      description: ''
      x-aisa-document:
        facts_hash: 6a72f8e2fa7fb1c29379e3b24b3a247c8428a3b6ed621b3f84f84e75cb0de2bc
        generator_version: '3'
        protocol_version: '1'
        schema_version: '1'
      x-aisa-plans:
        builder: 1
        display_plan: payg
        payg: 1
        similarweb_payg: 1
        team: 1
        version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
      x-aisa-capabilities:
        idempotency: Idempotency-Key
        max_price: X-AISA-Max-Price-USD
        quote:
          header: X-AISA-Cost-Mode
          value: quote
servers:
  - url: https://api.aisa.one
security:
  - bearerAuth: []
paths:
  /apis/v1/graphhopper/get-route:
    post:
      tags:
        - GraphHopper
      summary: GET Route
      description: >-
        <!-- aisa-pricing:start -->

        Usage-based billing; Default request estimate: $0.0007 USD (not a fixed
        price). Declared unit rate: $0.000001 USD per provider_credit.
        Account-specific pricing and final settlement may differ.

        <!-- aisa-pricing:end -->
      operationId: graphhopper.get-route
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                debug:
                  type: boolean
                  default: false
                  description: Enable formatted output for debugging.
                point:
                  items:
                    type: string
                  maxItems: 10
                  minItems: 2
                  type: array
                  description: >-
                    Route waypoints as 'latitude,longitude' strings. Specify at
                    least origin and destination. Via points are possible.
                    Example: ['51.131,12.414', '48.224,3.867']
                locale:
                  type: string
                  default: en
                  examples:
                    - en
                    - de
                    - fr
                  description: >-
                    Locale for turn instructions. Examples: 'en', 'de', 'fr',
                    'pt_PT'
                details:
                  type: array
                  items:
                    type: string
                  description: >-
                    Path detail types to include. Available: 'street_name',
                    'street_ref', 'street_destination', 'leg_time',
                    'leg_distance', 'roundabout', 'country', 'time', 'distance',
                    'max_speed', 'max_weight', 'max_width', 'toll',
                    'road_class', 'road_class_link', 'road_access',
                    'road_environment', 'hazmat', 'hazmat_tunnel',
                    'hazmat_water', 'lanes', 'surface', 'smoothness',
                    'hike_rating', 'mtb_rating', 'foot_network', 'bike_network'
                heading:
                  type: array
                  items:
                    type: integer
                  description: >-
                    Preferred heading direction for each point in degrees
                    (0-360, north-based clockwise). Specify one for start or one
                    per point. Requires ch.disable=true.
                profile:
                  enum:
                    - car
                  type: string
                  description: >-
                    The routing profile determining network, speed, and physical
                    attributes. Common values: 'car', 'bike', 'foot',
                    'motorcycle', 'mtb', 'racingbike', 'hike'. Default: 'car'
                curbside:
                  type: array
                  items:
                    enum:
                      - any
                      - left
                      - right
                    type: string
                  description: >-
                    Side of the road for leaving/arriving at each point. Specify
                    for all points or none. Only for motor vehicles.
                optimize:
                  enum:
                    - 'false'
                  type: string
                  description: >-
                    If 'true', reorders points to minimize total travel time.
                    Applies route optimization limits and increases the price.
                algorithm:
                  enum:
                    - round_trip
                    - alternative_route
                  type: string
                  description: >-
                    Special routing algorithm. 'round_trip': returns to start
                    with randomness. 'alternative_route': provides multiple
                    route options.
                elevation:
                  type: boolean
                  default: false
                  description: >-
                    Include altitude as third coordinate in response. Changes
                    format of points and snapped_waypoints fields.
                ch.disable:
                  type: boolean
                  default: false
                  description: >-
                    Enable flexible mode to use custom_model or advanced options
                    below. Set to true for heading, algorithm, etc.
                point_hint:
                  type: array
                  items:
                    type: string
                  description: >-
                    Optional road name hints for snapping each point. Specify
                    none or the same number as points.
                calc_points:
                  type: boolean
                  default: true
                  description: Whether to calculate route geometry points.
                instructions:
                  type: boolean
                  default: true
                  description: Whether to calculate and return turn-by-turn instructions.
                pass_through:
                  type: boolean
                  default: false
                  description: >-
                    Avoid u-turns at via-points with regard to heading_penalty.
                    Requires ch.disable=true.
                points_encoded:
                  type: boolean
                  default: true
                  description: >-
                    Use polyline encoding for geometry (true) or simple
                    coordinate pairs (false).
                heading_penalty:
                  type: integer
                  default: 300
                  minimum: 0
                  description: >-
                    Time penalty in seconds for not obeying specified heading.
                    Requires ch.disable=true.
                round_trip.seed:
                  type: integer
                  description: >-
                    Random seed for deterministic round trip results. Requires
                    algorithm='round_trip'.
                snap_prevention:
                  type: array
                  items:
                    enum:
                      - motorway
                      - trunk
                      - ferry
                      - tunnel
                      - bridge
                      - ford
                    type: string
                  description: >-
                    Prevent snapping to specific road types. Values: 'motorway',
                    'trunk', 'ferry', 'tunnel', 'bridge', 'ford'
                round_trip.distance:
                  type: integer
                  default: 10000
                  minimum: 0
                  description: >-
                    Approximate round trip length in meters. Requires
                    algorithm='round_trip'.
                alternative_route.max_paths:
                  type: integer
                  default: 2
                  minimum: 1
                  description: >-
                    Maximum number of alternative paths. Requires
                    algorithm='alternative_route'.
                alternative_route.max_share_factor:
                  type: number
                  default: 0.6
                  maximum: 1
                  minimum: 0
                  description: >-
                    Maximum similarity factor between alternative and optimal
                    route. Requires algorithm='alternative_route'.
                alternative_route.max_weight_factor:
                  type: number
                  default: 1.4
                  minimum: 0
                  description: >-
                    Maximum factor by which alternatives can be longer than
                    optimal route. Requires algorithm='alternative_route'.
              required:
                - optimize
                - point
                - profile
      responses:
        '200':
          description: Tool result data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__public_data
        default:
          content:
            application/json:
              schema: {}
          description: >-
            Error response; upstream passthrough responses may use provider
            formats
components:
  schemas:
    Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__public_data:
      $ref: >-
        #/components/schemas/Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__e91e566ce74d501a
    Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__e91e566ce74d501a:
      type: object
      required:
        - paths
        - info
      properties:
        info:
          $ref: >-
            #/components/schemas/Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__dd58ad11f3a72566
        hints:
          type: object
          additionalProperties: true
        paths:
          type: array
          items:
            $ref: >-
              #/components/schemas/Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__96c1715d49b67585
    Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__dd58ad11f3a72566:
      type: object
      required:
        - copyrights
        - took
      properties:
        took:
          type: number
        copyrights:
          type: array
          items:
            type: string
        road_data_timestamp:
          type: string
    Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__96c1715d49b67585:
      type: object
      required:
        - distance
        - time
      properties:
        bbox:
          type: array
          items:
            type: number
        legs:
          type: array
          items:
            type: object
            additionalProperties: true
        time:
          type: integer
        ascend:
          type: number
        points:
          anyOf:
            - type: string
            - type: array
              items:
                type: array
                items:
                  type: number
            - type: object
              additionalProperties: true
        weight:
          type: number
        descend:
          type: number
        details:
          type: object
          additionalProperties: true
        distance:
          type: number
        transfers:
          type: integer
        instructions:
          type: array
          items:
            $ref: >-
              #/components/schemas/Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__b8e08fbc09499288
        points_order:
          type: array
          items:
            type: integer
        points_encoded:
          type: boolean
        snapped_waypoints:
          anyOf:
            - type: string
            - type: array
              items:
                type: array
                items:
                  type: number
            - type: object
              additionalProperties: true
        points_encoded_multiplier:
          type: number
    Response576A0Ea506F3_connect_GRAPHHOPPER_GET_ROUTE__output__b8e08fbc09499288:
      type: object
      required:
        - text
        - distance
        - time
        - interval
        - sign
      properties:
        sign:
          type: integer
        text:
          type: string
        time:
          type: integer
        heading:
          type: number
        distance:
          type: number
        interval:
          type: array
          items:
            type: integer
        street_ref:
          type: string
        turn_angle:
          type: number
        exit_number:
          type: integer
        street_name:
          type: string
        last_heading:
          type: number
        street_destination:
          type: string
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.