Skip to content

Apps & dashboards ​

Apps are workflows published with a simple form-style front end; Dashboards collect chart outputs from workflow runs into categories and let users filter and regenerate them. This page also covers the legacy "flow app" runner used by older apps.

Endpoints ​

MethodPathPurpose
GET/dashboard/category/List dashboards (boards)
POST/dashboard/category/Create a board
GET/dashboard/category/{id}/Tiles on a board
POST/dashboard/category/{id}/Duplicate a board
PUT/dashboard/category/{id}/Rename, describe or share a board
DELETE/dashboard/category/{id}/Delete a board
GET/dashboard/chart/All my tiles (the catalogue)
POST/dashboard/chart/Add a tile to a board
PUT/dashboard/chart/{id}/Update a tile
PATCH/dashboard/chart/{id}/Partially update a tile
DELETE/dashboard/chart/{id}/Remove a tile
GET/dashboard/chart/mgids/My chart documents in use
GET/dashboard/chart/mgid-usage/Where a chart document is used
POST/dashboard/chart/remove-mgid-everywhere/Remove a chart document from every tile
GET/microservices/dashboard-data/Read a chart document
DELETE/microservices/dashboard-data/Delete chart data
POST/microservices/dashboard-data/delete-step/Delete every chart a workflow step produced
POST/microservices/dashboard-chat/Ask a question about a chart
POST/microservices/dashboard-chart-filter/Regenerate a chart with filters
PATCH/microservices/dashboard-applied-filters/Save my filters for a chart
POST/microservices/dashboard-applied-filters/batch/Read my filters for several charts
PATCH/microservices/dashboard-filter-favourites/Save favourite filter sets for a chart
GET/microservices/dashboard-insights/AI insights for a chart
GET/microservices/dashboard-history/Chart history versions
GET/microservices/dashboard-history/{version}/One chart history version
DELETE/microservices/dashboard-history/{version}/Delete a chart history version
GET/artifacts/Files the platform generated for me
GET/workflow/List research flows (legacy)
POST/workflow/Create a research flow (legacy)
GET/workflow/{id}/Get a research flow (legacy)
PUT/workflow/{id}/Update a research flow (legacy)
DELETE/workflow/{id}/Delete a research flow (legacy)
POST/workflow/strategy/generate/Generate a research strategy (legacy)
POST/workflow/strategy/save/Save a research strategy (legacy)
POST/workflow/run/stream/Run a research flow (legacy, streamed)

GET /dashboard/category/ ​

List dashboards (boards)

Boards you own plus boards shared with you, newest first.

Auth: Session token · In the app: Apps → Dashboard tab

Response 200 — Boards.

Array of:

FieldTypeDescription
idinteger
dashboard_name_enstring
dashboard_name_arstring, nullable
description_enstring, nullable
description_arstring, nullable
sharedinteger[]User ids that can view the board (also applied to its tiles).
created_atstring (date-time)
userintegerOwner id.

Example

bash
curl -X GET "https://api.example.com/dashboard/category/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /dashboard/category/ ​

Create a board

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
idintegerno
dashboard_name_enstringno
dashboard_name_arstring, nullableno
description_enstring, nullableno
description_arstring, nullableno
sharedinteger[]noUser ids that can view the board (also applied to its tiles).
created_atstring (date-time)no
userintegernoOwner id.
json
{
  "dashboard_name_en": "Sales overview",
  "description_en": "Weekly sales KPIs"
}

Response 201 — Created.

FieldTypeDescription
idinteger
dashboard_name_enstring
dashboard_name_arstring, nullable
description_enstring, nullable
description_arstring, nullable
sharedinteger[]User ids that can view the board (also applied to its tiles).
created_atstring (date-time)
userintegerOwner id.
json
{
  "id": 3,
  "dashboard_name_en": "Sales overview",
  "dashboard_name_ar": "نظرة عامة على المبيعات",
  "description_en": "Weekly sales KPIs",
  "description_ar": null,
  "shared": [
    57
  ],
  "created_at": "2026-08-01T09:00:00Z",
  "user": 42
}

Response 400 — Validation errors.

json
{
  "username": [
    "A user with that username already exists."
  ]
}

Example

bash
curl -X POST "https://api.example.com/dashboard/category/" \
  -H "Authorization: Token $FINBLADE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"dashboard_name_en":"Sales overview","description_en":"Weekly sales KPIs"}'

GET /dashboard/category/{id}/ ​

Tiles on a board

Charts on the board that you own or that are shared with you. An empty board answers {"message": "No charts found"}.

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Response 200 — Tiles (array) — or {"message": "No charts found"} when empty.

Array of:

FieldTypeDescription
idinteger
chart_namestring
chart_typestringbar, line, pie, doughnut, radar, scatter, bubble, a metric type, or html_artifact.
chat_sessionsinteger[]Chat sessions that produced/discuss this chart.
category_idintegerBoard id.
workflow_idstring
node_idstringThe workflow step that produced the chart.
mgidstring, nullableChart document id (see GET /microservices/dashboard-data/).
sharedinteger[]
metadataobjectTile settings (position, size, aggregated tabs, artifact id, source connection).
locked_versionintegerPin the tile to a chart-history version (0 = live).
created_atstring (date-time)
userinteger

Example

bash
curl -X GET "https://api.example.com/dashboard/category/3/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /dashboard/category/{id}/ ​

Duplicate a board

Copies the board and all its tiles as <name> (Copy).

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Response 201 — The new board.

FieldTypeDescription
idinteger
dashboard_name_enstring
dashboard_name_arstring, nullable
description_enstring, nullable
description_arstring, nullable
sharedinteger[]User ids that can view the board (also applied to its tiles).
created_atstring (date-time)
userintegerOwner id.
json
{
  "id": 3,
  "dashboard_name_en": "Sales overview",
  "dashboard_name_ar": "نظرة عامة على المبيعات",
  "description_en": "Weekly sales KPIs",
  "description_ar": null,
  "shared": [
    57
  ],
  "created_at": "2026-08-01T09:00:00Z",
  "user": 42
}

Example

bash
curl -X POST "https://api.example.com/dashboard/category/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

PUT /dashboard/category/{id}/ ​

Rename, describe or share a board

Partial update. Changing shared propagates to every tile on the board.

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Request body (application/json)

FieldTypeRequiredDescription
idintegerno
dashboard_name_enstringno
dashboard_name_arstring, nullableno
description_enstring, nullableno
description_arstring, nullableno
sharedinteger[]noUser ids that can view the board (also applied to its tiles).
created_atstring (date-time)no
userintegernoOwner id.
json
{
  "shared": [
    57,
    61
  ]
}

Response 200 — Updated.

FieldTypeDescription
idinteger
dashboard_name_enstring
dashboard_name_arstring, nullable
description_enstring, nullable
description_arstring, nullable
sharedinteger[]User ids that can view the board (also applied to its tiles).
created_atstring (date-time)
userintegerOwner id.
json
{
  "id": 3,
  "dashboard_name_en": "Sales overview",
  "dashboard_name_ar": "نظرة عامة على المبيعات",
  "description_en": "Weekly sales KPIs",
  "description_ar": null,
  "shared": [
    57
  ],
  "created_at": "2026-08-01T09:00:00Z",
  "user": 42
}

Response 403 — No access.

json
{
  "detail": "Authentication credentials were not provided."
}

Example

bash
curl -X PUT "https://api.example.com/dashboard/category/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"shared":[57,61]}'

DELETE /dashboard/category/{id}/ ​

Delete a board

Deletes the board and its tiles; chart data used by no other tile is deleted too.

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Response 200 — Deleted.

FieldTypeDescription
messagestring
json
{
  "message": "OK"
}

Example

bash
curl -X DELETE "https://api.example.com/dashboard/category/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /dashboard/chart/ ​

All my tiles (the catalogue)

Every chart tile you own or that is shared with you, across boards. The app uses this as the catalogue of dashboards a chat can reference.

Auth: Session token · In the app: Apps → Dashboard; Chat AI → dashboard picker

Response 200 — Tiles.

Array of:

FieldTypeDescription
idinteger
chart_namestring
chart_typestringbar, line, pie, doughnut, radar, scatter, bubble, a metric type, or html_artifact.
chat_sessionsinteger[]Chat sessions that produced/discuss this chart.
category_idintegerBoard id.
workflow_idstring
node_idstringThe workflow step that produced the chart.
mgidstring, nullableChart document id (see GET /microservices/dashboard-data/).
sharedinteger[]
metadataobjectTile settings (position, size, aggregated tabs, artifact id, source connection).
locked_versionintegerPin the tile to a chart-history version (0 = live).
created_atstring (date-time)
userinteger

Example

bash
curl -X GET "https://api.example.com/dashboard/chart/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /dashboard/chart/ ​

Add a tile to a board

Pin a chart document (from a workflow run or a Chat AI turn) or a Studio artifact to a board.

Auth: Session token · In the app: Save chart to dashboard

Request body (application/json)

FieldTypeRequiredDescription
chart_namestringyes
chart_typestringyes
category_idintegeryes
workflow_idstringyes
node_idstringyes
mgidstringno
chat_sessionsinteger[]no
sharedinteger[]no
metadataobjectno
locked_versionintegernoDefault: 0.
json
{
  "chart_name": "Orders by month",
  "chart_type": "bar",
  "category_id": 3,
  "workflow_id": "7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d",
  "node_id": "step4",
  "mgid": "mg_5f3e2d1c"
}

Response 201 — Created.

FieldTypeDescription
idinteger
chart_namestring
chart_typestringbar, line, pie, doughnut, radar, scatter, bubble, a metric type, or html_artifact.
chat_sessionsinteger[]Chat sessions that produced/discuss this chart.
category_idintegerBoard id.
workflow_idstring
node_idstringThe workflow step that produced the chart.
mgidstring, nullableChart document id (see GET /microservices/dashboard-data/).
sharedinteger[]
metadataobjectTile settings (position, size, aggregated tabs, artifact id, source connection).
locked_versionintegerPin the tile to a chart-history version (0 = live).
created_atstring (date-time)
userinteger
json
{
  "id": 91,
  "chart_name": "Orders by month",
  "chart_type": "bar",
  "chat_sessions": [
    9174
  ],
  "category_id": 3,
  "workflow_id": "7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d",
  "node_id": "step4",
  "mgid": "mg_5f3e2d1c",
  "shared": [
    57
  ],
  "metadata": {
    "position": {
      "x": 0,
      "y": 0
    },
    "size": {
      "width": 6,
      "height": 4
    }
  },
  "locked_version": 0,
  "created_at": "2026-09-01T09:00:00Z",
  "user": 42
}

Response 400 — Validation errors.

json
{
  "username": [
    "A user with that username already exists."
  ]
}

Example

bash
curl -X POST "https://api.example.com/dashboard/chart/" \
  -H "Authorization: Token $FINBLADE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"chart_name":"Orders by month","chart_type":"bar","category_id":3,"workflow_id":"7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d","node_id":"step4","mgid":"mg_5f3e2d1c"}'

PUT /dashboard/chart/{id}/ ​

Update a tile

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Request body (application/json)

FieldTypeRequiredDescription
idintegerno
chart_namestringno
chart_typestringnobar, line, pie, doughnut, radar, scatter, bubble, a metric type, or html_artifact.
chat_sessionsinteger[]noChat sessions that produced/discuss this chart.
category_idintegernoBoard id.
workflow_idstringno
node_idstringnoThe workflow step that produced the chart.
mgidstring, nullablenoChart document id (see GET /microservices/dashboard-data/).
sharedinteger[]no
metadataobjectnoTile settings (position, size, aggregated tabs, artifact id, source connection).
locked_versionintegernoPin the tile to a chart-history version (0 = live).
created_atstring (date-time)no
userintegerno
json
{
  "id": 91,
  "chart_name": "Orders by month",
  "chart_type": "bar",
  "chat_sessions": [
    9174
  ],
  "category_id": 3,
  "workflow_id": "7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d",
  "node_id": "step4",
  "mgid": "mg_5f3e2d1c",
  "shared": [
    57
  ],
  "metadata": {
    "position": {
      "x": 0,
      "y": 0
    },
    "size": {
      "width": 6,
      "height": 4
    }
  },
  "locked_version": 0,
  "created_at": "2026-09-01T09:00:00Z",
  "user": 42
}

Response 201 — Updated (note the 201 status).

FieldTypeDescription
idinteger
chart_namestring
chart_typestringbar, line, pie, doughnut, radar, scatter, bubble, a metric type, or html_artifact.
chat_sessionsinteger[]Chat sessions that produced/discuss this chart.
category_idintegerBoard id.
workflow_idstring
node_idstringThe workflow step that produced the chart.
mgidstring, nullableChart document id (see GET /microservices/dashboard-data/).
sharedinteger[]
metadataobjectTile settings (position, size, aggregated tabs, artifact id, source connection).
locked_versionintegerPin the tile to a chart-history version (0 = live).
created_atstring (date-time)
userinteger
json
{
  "id": 91,
  "chart_name": "Orders by month",
  "chart_type": "bar",
  "chat_sessions": [
    9174
  ],
  "category_id": 3,
  "workflow_id": "7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d",
  "node_id": "step4",
  "mgid": "mg_5f3e2d1c",
  "shared": [
    57
  ],
  "metadata": {
    "position": {
      "x": 0,
      "y": 0
    },
    "size": {
      "width": 6,
      "height": 4
    }
  },
  "locked_version": 0,
  "created_at": "2026-09-01T09:00:00Z",
  "user": 42
}

Example

bash
curl -X PUT "https://api.example.com/dashboard/chart/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id":91,"chart_name":"Orders by month","chart_type":"bar","chat_sessions":[9174],"category_id":3,"workflow_id":"7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d","node_id":"step4","mgid":"mg_5f3e2d1c","shared":[57],"metadata":{"position":{"x":0,"y":0},"size":{"width":6,"height":4}},"locked_version":0,"created_at":"2026-09-01T09:00:00Z","user":42}'

PATCH /dashboard/chart/{id}/ ​

Partially update a tile

Used for position/size/name changes and version locking.

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Request body (application/json)

FieldTypeRequiredDescription
idintegerno
chart_namestringno
chart_typestringnobar, line, pie, doughnut, radar, scatter, bubble, a metric type, or html_artifact.
chat_sessionsinteger[]noChat sessions that produced/discuss this chart.
category_idintegernoBoard id.
workflow_idstringno
node_idstringnoThe workflow step that produced the chart.
mgidstring, nullablenoChart document id (see GET /microservices/dashboard-data/).
sharedinteger[]no
metadataobjectnoTile settings (position, size, aggregated tabs, artifact id, source connection).
locked_versionintegernoPin the tile to a chart-history version (0 = live).
created_atstring (date-time)no
userintegerno
json
{
  "metadata": {
    "position": {
      "x": 6,
      "y": 0
    },
    "size": {
      "width": 6,
      "height": 4
    }
  }
}

Response 200 — Updated.

FieldTypeDescription
idinteger
chart_namestring
chart_typestringbar, line, pie, doughnut, radar, scatter, bubble, a metric type, or html_artifact.
chat_sessionsinteger[]Chat sessions that produced/discuss this chart.
category_idintegerBoard id.
workflow_idstring
node_idstringThe workflow step that produced the chart.
mgidstring, nullableChart document id (see GET /microservices/dashboard-data/).
sharedinteger[]
metadataobjectTile settings (position, size, aggregated tabs, artifact id, source connection).
locked_versionintegerPin the tile to a chart-history version (0 = live).
created_atstring (date-time)
userinteger
json
{
  "id": 91,
  "chart_name": "Orders by month",
  "chart_type": "bar",
  "chat_sessions": [
    9174
  ],
  "category_id": 3,
  "workflow_id": "7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d",
  "node_id": "step4",
  "mgid": "mg_5f3e2d1c",
  "shared": [
    57
  ],
  "metadata": {
    "position": {
      "x": 0,
      "y": 0
    },
    "size": {
      "width": 6,
      "height": 4
    }
  },
  "locked_version": 0,
  "created_at": "2026-09-01T09:00:00Z",
  "user": 42
}

Example

bash
curl -X PATCH "https://api.example.com/dashboard/chart/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"metadata":{"position":{"x":6,"y":0},"size":{"width":6,"height":4}}}'

DELETE /dashboard/chart/{id}/ ​

Remove a tile

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Response 200 — Removed.

FieldTypeDescription
messagestring
json
{
  "message": "OK"
}

Example

bash
curl -X DELETE "https://api.example.com/dashboard/chart/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /dashboard/chart/mgids/ ​

My chart documents in use

The mgids referenced by your tiles, with their board.

Auth: Session token

Response 200 — Rows.

Array of:

FieldTypeDescription
mgidstring
namestring
chart_typestring
workflow_idstring
category_idinteger

Example

bash
curl -X GET "https://api.example.com/dashboard/chart/mgids/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /dashboard/chart/mgid-usage/ ​

Where a chart document is used

Every tile (primary or as an aggregated tab) that shows the chart mgid — consulted before deleting chart data.

Auth: Session token

Query parameters

FieldTypeRequiredDescription
mgidstringyes

Response 200 — Usages.

FieldTypeDescription
mgidstring
usagesobject[]
usages[].chart_idinteger
usages[].chart_namestring
usages[].category_idinteger
usages[].category_namestring
usages[].workflow_idstring
usages[].rolestring ("primary", "aggregated")
usages[].tab_indexinteger
usages[].node_namestring

Response 400 — mgid missing.

json
{
  "error": "path is required"
}

Example

bash
curl -X GET "https://api.example.com/dashboard/chart/mgid-usage/?mgid=mg_5f3e2d1c" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /dashboard/chart/remove-mgid-everywhere/ ​

Remove a chart document from every tile

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
mgidstringyes
workflow_idstringno
exclude_chart_idintegernoA tile to leave alone (the caller handles it).

Response 200 — What was removed.

FieldTypeDescription
removedobject[]

Example

bash
curl -X POST "https://api.example.com/dashboard/chart/remove-mgid-everywhere/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /microservices/dashboard-data/ ​

Read a chart document

The stored chart behind a tile or a Chat AI reply. collection selects which document: chart_data (the renderable chart, plus your filters), llm_structure, user_dataframe or rules_dataframe. Pass version to read a chart-history version instead of the live chart.

Auth: Session token · In the app: Dashboard tiles; charts inside Chat AI replies

Query parameters

FieldTypeRequiredDescription
mgidstringyes
collectionstring ("chart_data", "llm_structure", "user_dataframe", "rules_dataframe")yes
workflow_idstringno
versionintegerno

Response 200 — The document.

FieldTypeDescription
_idstring
workflow_idstring
mgidstring
user_idstring
step_idstring
chart_typestring
chartobjectRenderable payload: a chart carries {type, labels, datasets} (Chart.js style); a metric carries {type, data, raw_value, html, risk_level}.
versioninteger
filter_schemaobjectFilterable columns and their options.
filter_favouritesobject[]
applied_filtersobject[]The caller's current filters for this chart.
updated_atstring (date-time)
json
{
  "_id": "66f2a1b9c0d4e5f6a7b8c9d0",
  "workflow_id": "7d4c2b1a-0e9f-4a3b-8c7d-6e5f4a3b2c1d",
  "mgid": "mg_5f3e2d1c",
  "user_id": "42",
  "step_id": "step4",
  "chart_type": "bar",
  "chart": {
    "type": "bar",
    "labels": [
      "Jan",
      "Feb",
      "Mar"
    ],
    "datasets": [
      {
        "label": "Orders",
        "data": [
          120,
          140,
          165
        ]
      }
    ]
  },
  "version": 0,
  "filter_schema": {
    "region": {
      "type": "select",
      "options": [
        "East",
        "West"
      ]
    }
  },
  "filter_favourites": [],
  "applied_filters": [],
  "updated_at": "2026-09-21T08:00:09Z"
}

Response 400 — Missing mgid/collection or unknown collection.

json
{
  "error": "path is required"
}

Response 404 — No such chart (or not yours / not shared with you).

json
{
  "error": "path is required"
}

Response 503 — Dashboard store unavailable.

Example

bash
curl -X GET "https://api.example.com/microservices/dashboard-data/?mgid=mg_5f3e2d1c&collection=chart_data" \
  -H "Authorization: Token $FINBLADE_TOKEN"

DELETE /microservices/dashboard-data/ ​

Delete chart data

Owner of the workflow or of the chart. history_only=true deletes only the chart-history versions and keeps the live chart.

Auth: Session token

Query parameters

FieldTypeRequiredDescription
workflow_idstringyes
mgidstringyes
history_onlybooleanno

Response 200 — Deleted (or nothing to delete).

FieldTypeDescription
messagestring
json
{
  "message": "OK"
}

Response 403 — Not allowed.

Example

bash
curl -X DELETE "https://api.example.com/microservices/dashboard-data/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /microservices/dashboard-data/delete-step/ ​

Delete every chart a workflow step produced

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
workflow_idstringyes
step_idstringyes

Response 200 — Deleted.

Response 404 — Workflow not found.

Example

bash
curl -X POST "https://api.example.com/microservices/dashboard-data/delete-step/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /microservices/dashboard-chat/ ​

Ask a question about a chart

Streams an answer about the chart's data (optionally the currently filtered rows). The response is proxied from the dashboard service as-is.

Auth: Session token · In the app: Dashboard tile → Chat

Request body (application/json)

FieldTypeRequiredDescription
mgidstringyes
querystringyes
workflow_idstringnoResolved from mgid when omitted.
chat_historyobject[]no
typestringnoDefault: "chat".
filtered_dataobject[]no
view_versionintegernoDefault: 0.

Response 200 — Streamed answer.

Content type: text/event-stream

Response 400 — Missing fields.

Response 404 — Chart not found.

Example

bash
curl -X POST "https://api.example.com/microservices/dashboard-chat/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /microservices/dashboard-chart-filter/ ​

Regenerate a chart with filters

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
workflow_idstringyes
mgidstringyes
filtersobject[]no

Response 200 — The regenerated chart document (service response).

Example

bash
curl -X POST "https://api.example.com/microservices/dashboard-chart-filter/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

PATCH /microservices/dashboard-applied-filters/ ​

Save my filters for a chart

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
workflow_idstringyes
mgidstringyes
applied_filtersobject[]yes

Response 200 — Saved.

FieldTypeDescription
successboolean
applied_filtersobject[]

Example

bash
curl -X PATCH "https://api.example.com/microservices/dashboard-applied-filters/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /microservices/dashboard-applied-filters/batch/ ​

Read my filters for several charts

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
itemsobject[]yes
items[].workflow_idstringno
items[].mgidstringno

Response 200 — Filters keyed by chart.

FieldTypeDescription
applied_filtersobject

Example

bash
curl -X POST "https://api.example.com/microservices/dashboard-applied-filters/batch/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

PATCH /microservices/dashboard-filter-favourites/ ​

Save favourite filter sets for a chart

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
workflow_idstringyes
mgidstringyes
filter_favouritesobject[]yes

Response 200 — Saved.

Example

bash
curl -X PATCH "https://api.example.com/microservices/dashboard-filter-favourites/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /microservices/dashboard-insights/ ​

AI insights for a chart

Auth: Session token

Query parameters

FieldTypeRequiredDescription
workflow_idstringyes
mgidstringyes
versionintegernoDefault: 0.

Response 200 — Insights (service response).

Example

bash
curl -X GET "https://api.example.com/microservices/dashboard-insights/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /microservices/dashboard-history/ ​

Chart history versions

Versions saved each time a chart was regenerated with filters; version 0 is the original.

Auth: Session token

Query parameters

FieldTypeRequiredDescription
mgidstringyes
workflow_idstringno

Response 200 — Versions.

FieldTypeDescription
versionsobject[]
total_versionsinteger

Example

bash
curl -X GET "https://api.example.com/microservices/dashboard-history/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /microservices/dashboard-history/{version}/ ​

One chart history version

Auth: Session token

Path parameters

FieldTypeRequiredDescription
versionintegeryes

Query parameters

FieldTypeRequiredDescription
mgidstringyes
workflow_idstringno

Response 200 — The version document.

Response 404 — No such version.

Example

bash
curl -X GET "https://api.example.com/microservices/dashboard-history/<version>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

DELETE /microservices/dashboard-history/{version}/ ​

Delete a chart history version

Version 0 (the original) cannot be deleted.

Auth: Session token

Path parameters

FieldTypeRequiredDescription
versionintegeryes

Query parameters

FieldTypeRequiredDescription
mgidstringyes
workflow_idstringno

Response 204 — Deleted.

Response 400 — Version 0.

Response 404 — No such version.

Example

bash
curl -X DELETE "https://api.example.com/microservices/dashboard-history/<version>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /artifacts/ ​

Files the platform generated for me

Documents, images, spreadsheets and pages produced by chats, agents and workflows, plus chart tiles. Re-indexed from disk at most every 30 s (refresh=1 forces it).

Auth: Session token · In the app: My Data → Generated files

Query parameters

FieldTypeRequiredDescription
originstring ("agent-chat", "super-agent", "co-writer", "data-search", "code-gen")no
kindstring ("image", "csv", "pdf", "html", "doc", "sheet", "slides", "text")no
sessionintegernoOnly files from this chat session.
refreshbooleanno

Response 200 — Files.

Array of:

FieldTypeDescription
uidstring (uuid)
namestring
media_pathstringPass to GET /api/v1/media/sign/ to download.
kindstring ("image", "csv", "pdf", "html", "doc", "sheet", "slides", "text")
kind_labelstring
originstring ("agent-chat", "super-agent", "co-writer", "data-search", "code-gen")
origin_labelstring
source_segmentstring
size_bytesinteger
workflow_idstring, nullable
workflow_run_idstring, nullable
chat_session_idinteger, nullable
node_idstring, nullable
file_modified_atstring (date-time)
created_atstring (date-time)

Example

bash
curl -X GET "https://api.example.com/artifacts/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /workflow/ ​

List research flows (legacy)

The "flows" of the legacy Semantic Search page — a saved question over a document set with an AI-generated strategy. Kept for existing users; new automations belong in Workflow AI.

Auth: Session token

Response 200 — Flows.

Array of:

FieldTypeDescription
idinteger
userinteger
titlestring
querystring
documentsstring (uuid)[]
feedbackobject[]
output_channelsany[]
y_coordinates_inputany[]
y_coordinates_outputany[]
activeboolean
semanticboolean
set_strategyboolean
created_atstring (date-time)

Example

bash
curl -X GET "https://api.example.com/workflow/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /workflow/ ​

Create a research flow (legacy)

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
idintegerno
userintegerno
titlestringno
querystringno
documentsstring (uuid)[]no
feedbackobject[]no
output_channelsany[]no
y_coordinates_inputany[]no
y_coordinates_outputany[]no
activebooleanno
semanticbooleanno
set_strategybooleanno
created_atstring (date-time)no

Response 201 — Created.

FieldTypeDescription
idinteger
userinteger
titlestring
querystring
documentsstring (uuid)[]
feedbackobject[]
output_channelsany[]
y_coordinates_inputany[]
y_coordinates_outputany[]
activeboolean
semanticboolean
set_strategyboolean
created_atstring (date-time)

Example

bash
curl -X POST "https://api.example.com/workflow/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

GET /workflow/{id}/ ​

Get a research flow (legacy)

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Response 200 — The flow.

FieldTypeDescription
idinteger
userinteger
titlestring
querystring
documentsstring (uuid)[]
feedbackobject[]
output_channelsany[]
y_coordinates_inputany[]
y_coordinates_outputany[]
activeboolean
semanticboolean
set_strategyboolean
created_atstring (date-time)

Example

bash
curl -X GET "https://api.example.com/workflow/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

PUT /workflow/{id}/ ​

Update a research flow (legacy)

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Request body (application/json)

FieldTypeRequiredDescription
idintegerno
userintegerno
titlestringno
querystringno
documentsstring (uuid)[]no
feedbackobject[]no
output_channelsany[]no
y_coordinates_inputany[]no
y_coordinates_outputany[]no
activebooleanno
semanticbooleanno
set_strategybooleanno
created_atstring (date-time)no

Response 200 — Updated.

Example

bash
curl -X PUT "https://api.example.com/workflow/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

DELETE /workflow/{id}/ ​

Delete a research flow (legacy)

Auth: Session token

Path parameters

FieldTypeRequiredDescription
idintegeryes

Response 204 — Deleted.

Example

bash
curl -X DELETE "https://api.example.com/workflow/<id>/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /workflow/strategy/generate/ ​

Generate a research strategy (legacy)

Asks the model to plan how to answer the flow's question over its documents (steps, sub-queries, actions).

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
flow_idintegerno
querystringnoWithout flow_id.
documentsstring (uuid)[]no
feedbackobject[]no
session_idintegerno

Response 200 — The strategy (model output).

Example

bash
curl -X POST "https://api.example.com/workflow/strategy/generate/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /workflow/strategy/save/ ​

Save a research strategy (legacy)

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
flow_idintegeryes
strategystringyesJSON-encoded strategy.
feedbackstringno
newstringno"True" to replace previous feedback.

Response 200 — Saved ("saved").

Example

bash
curl -X POST "https://api.example.com/workflow/strategy/save/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

POST /workflow/run/stream/ ​

Run a research flow (legacy, streamed)

Auth: Session token

Request body (application/json)

FieldTypeRequiredDescription
flow_idintegeryes
session_idintegerno

Response 200 — Streamed answer text.

Content type: text/event-stream

Example

bash
curl -X POST "https://api.example.com/workflow/run/stream/" \
  -H "Authorization: Token $FINBLADE_TOKEN"

Finblade documentation