search

Search

One cross-module lookup endpoint backing the app’s global search box — students, guardians, staff, groups, courses and invoice numbers, filtered to the entity types the caller may read.

1 endpoints

Global search across students, guardians, staff, groups, courses and invoice numbers. Each entity type is included only if the caller holds its read permission; at most `limit` (default 5) hits per type.

Requires authenticationScopeNo additional permission

Path & query parameters

NameInTypeConstraints
qrequired
querystring2–100 chars
limit
queryinteger1–10 · default: 5

curl example

curl
curl -X GET "https://api.yourdomain.com/api/v1/search?q=string" \
  -H "Authorization: Bearer $INSTITFLOW_API_KEY"

Responses

200Matching records, grouped by entity type.
NameTypeConstraints
queryrequired
string
resultsrequired
array<object>
truncatedTypesrequired
array<enum: "student" | "guardian" | "staff" | "group" | "course" | "invoice">
json
{
  "query": "string",
  "results": [
    {
      "type": "student",
      "id": "37386ae0-3738-7738-8386-37386ae03738",
      "label": "string",
      "sublabel": "string"
    }
  ],
  "truncatedTypes": [
    "student"
  ]
}
400The request could not be read at all — unparseable body, unusable content type, oversized payload (`MALFORMED_REQUEST`). Never a schema failure: those are 422.

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

401Missing, expired or invalid credentials (`UNAUTHORIZED`, `TOKEN_INVALID`, `SESSION_REVOKED`).

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

402The tenant’s subscription or license is locked (`PAYMENT_REQUIRED`, `SUBSCRIPTION_SUSPENDED`).

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

403Authenticated, but not allowed (`FORBIDDEN`, `FEATURE_DISABLED`, `QUOTA_EXCEEDED`, …).

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

404No such resource, or it is not visible to this tenant (`NOT_FOUND`).

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

409Conflicts with current state (`CONFLICT`, `VERSION_CONFLICT`, `IDEMPOTENCY_KEY_REUSED`).

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

422The request was read but its content is not acceptable: body/query/path/header failed schema validation (`VALIDATION_ERROR`, with `details.issues`), or a domain rule rejected a well-formed value (`VIDEO_URL_INVALID`, …).

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

429Rate limit exceeded — see the `RateLimit-*` and `Retry-After` headers (`RATE_LIMITED`).

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.

500Unexpected server error (`INTERNAL_ERROR`). Never carries a stack trace or SQL.

Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.