---
title: "Take a list of operational point references and return for each of them the macro node of the scenario referencing the same operational point"
method: POST
path: "/scenarios/{scenario_id}/match_macro_nodes"
tags: ["scenarios"]
---

# Take a list of operational point references and return for each of them the macro node of the scenario referencing the same operational point

`POST /scenarios/{scenario_id}/match_macro_nodes`

## Request

- Base URL: `https://demo.osrd.fr/api`
- URL: `https://demo.osrd.fr/api/scenarios/{scenario_id}/match_macro_nodes`
- Auth: none declared

## Path parameters

- `scenario_id` integer, required

## Request body

- object
  - `operational_point_references` OperationalPointReference[], required
    - union
      - object
        - `operational_point` string, required: The object id of an operational point
        - `type` 'id', required
      - object
        - `country_code` string, required
        - `main_code` string, required: The operational point main code
        - `secondary_code` string, nullable: An optional secondary code to identify a more specific location
        - `type` 'domestic', required
      - object
        - `secondary_code` string, nullable: An optional secondary code to identify a more specific location
        - `type` 'uic', required
        - `uic` integer, required: The [UIC](https://en.wikipedia.org/wiki/List_of_UIC_country_codes) code of an operational point

## Response `200`

The macro node matching each operational point reference

- object
  - `related_operational_points` MacroNodeResponse[], required
    - `full_name` string, nullable
    - `id` integer, required
    - `is_collapsed` boolean, required
    - `labels` string[], required
    - `node_location` union, required: The location represented by a macro node
      - object
        - `offset` integer, required: Offset in mm
        - `track` string, required: Track section identifier
        - `type` 'track_offset', required
      - object
        - `operational_point` union, required
          - object
            - `operational_point` string, required: The object id of an operational point
            - `type` 'id', required
          - object
            - `country_code` string, required
            - `main_code` string, required: The operational point main code
            - `secondary_code` string, nullable: An optional secondary code to identify a more specific location
            - `type` 'domestic', required
          - object
            - `secondary_code` string, nullable: An optional secondary code to identify a more specific location
            - `type` 'uic', required
            - `uic` integer, required: The [UIC](https://en.wikipedia.org/wiki/List_of_UIC_country_codes) code of an operational point
        - `type` 'operational_point_reference', required
    - `position_x` integer, required
    - `position_y` integer, required
    - `short_name` string, nullable

## Other responses

- `404`
- `500`
- `503`

## Changes

> 799 revisions in range; 24 not diffed.

- **2026-11-12** `38e66418eff0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openrailassociation/apis/osrd-editoast/changes/scenarios/:scenario_id/match_macro_nodes/post.md)

---

[API](https://skmtc.dev/openrailassociation/apis/osrd-editoast.md) - [All operations](https://skmtc.dev/openrailassociation/apis/osrd-editoast/llms.txt) - [OpenAPI document](https://skmtc.dev/openrailassociation/apis/osrd-editoast/revisions/38e66418eff0?raw)
