PoliscopePoliscope
APIReferenzSearch

/search

GET
/search

Universal search across meetings and documents. Returns grouped results with context.

AuthorizationBearer <token>

API key as Bearer token

In: header

Query Parameters

q*string

Search phrase. Supports OR-separated sub-queries (max 5), e.g. 'Photovoltaik Bürgerbeteiligung OR Photovoltaik Einwohnerfragestunde'. OR must be uppercase with surrounding spaces. Each sub-query is searched independently and results are merged.

Length1 <= length
mode?string

Search mode. 'semantic' (default): finds results by meaning, even without exact term matches. Results include a relevance score (0–1). 'keyword': exact term matching only. Faster, but only finds literal occurrences. Scores are not comparable across modes.

Default"semantic"
Value in"semantic" | "keyword"
types?string

Comma-separated chunkType filter. Allowed values: agendaItemTitle, agendaItemDescription, document, proposalTitle, proposalDescription

entityIds?string

Comma-separated entity IDs (Regionalschlüssel). Use * suffix for prefix matching: 01* matches all entities in Schleswig-Holstein, 03101 matches LK Braunschweig exactly. Unallowed entities are silently stripped; the search runs only against permitted entities. Mutually exclusive with bbox.

bbox?string

Bounding box as 'west,south,east,north' (lon/lat). Resolves to entities whose geographic bounds intersect this box. Only entities the caller is permitted to access are included. Mutually exclusive with entities.

levels?string

Administrative layer: 10=Bundesland, pr=Planungsregion, 40=Landkreis, 50=Verbandsgemeinde, 60=Kommune

dateFrom?string

Filter from this date (inclusive, ISO 8601)

Formatdate
dateTo?string

Filter up to this date (inclusive, ISO 8601)

Formatdate
newSince?string

Only return results ingested since this datetime (inclusive, ISO 8601). Useful for polling new content since the last check.

Formatdate-time
limit*number

Max number of result groups returned in data[]. Values above 300 are clamped; use hasMore to detect truncation. Default 50 is sufficient for most use cases. Higher values increase latency.

Default50
Range1 <= value <= 300
scoreThreshold?number

Minimum relevance score (0.05–1) to include a result in data[] and mapPoints[]. Only applies to semantic mode; keyword mode ignores this. Higher values return fewer but more relevant results. 0.35 is a balanced default; use 0.5+ for precise matches, 0.1–0.2 for broad recall.

Default0.35
Range0.05 <= value <= 1

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.poliscope.de/v2/search?q=string&limit=50"
{
  "data": [
    {
      "groupKey": "string",
      "groupType": "meeting",
      "groupCreationDate": "2019-08-24T14:15:22Z",
      "score": 0,
      "hits": [
        {
          "id": "string",
          "score": 0,
          "text": "string",
          "chunkType": "agendaItemTitle",
          "highlights": [
            [
              0,
              0
            ]
          ],
          "agendaItemId": "string",
          "documentId": "string",
          "proposalId": "string",
          "pageFrom": 0,
          "pageTo": 0,
          "pageFromOffsetPct": 0,
          "pageFromOffset": 0,
          "pageToOffset": 0,
          "poliscopeUrl": "string",
          "fileUrl": "string"
        }
      ],
      "totalHits": 0,
      "context": {
        "date": "2019-08-24T14:15:22Z",
        "entityName": "string",
        "entityLevel": "string",
        "entityId": "string",
        "parents": [
          {
            "id": "string",
            "name": "string",
            "level": "string"
          }
        ],
        "location": {
          "lat": 0,
          "lon": 0
        },
        "meeting": {
          "id": "string",
          "title": "string",
          "date": "2019-08-24T14:15:22Z",
          "url": "string",
          "committee": "string",
          "bookmarks": [
            {
              "id": "string",
              "firstName": "string",
              "lastName": "string"
            }
          ]
        },
        "proposal": {
          "id": "string",
          "title": "string",
          "type": "string",
          "url": "string",
          "reference": "string"
        },
        "document": {
          "id": "string",
          "title": "string",
          "type": "string",
          "url": "string"
        }
      }
    }
  ],
  "mapPoints": [
    {
      "location": {
        "lat": 0,
        "lon": 0
      },
      "score": 0,
      "entityId": "string",
      "entityName": "string",
      "groupKey": "string"
    }
  ],
  "meta": {
    "total": 0,
    "totalHits": 0,
    "totalMapPoints": 0,
    "hasMore": true
  }
}
{
  "error": "string",
  "message": "string"
}
{
  "error": "string",
  "message": "string"
}
{
  "error": "string",
  "message": "string"
}
{
  "error": "string",
  "message": "string"
}