---
title: "Update a question"
method: PATCH
path: "/org/questions/{questionId}"
tags: ["Questions"]
---

# Update a question

`PATCH /org/questions/{questionId}`

## Request

- Base URL: `https://apiv2.senso.ai/api/v1`
- URL: `https://apiv2.senso.ai/api/v1/org/questions/{questionId}`
- Auth: API key in header `X-API-Key`

Partially updates a question. Supply `tag_ids` to replace its full tag set, `type` to change its funnel stage, or both — at least one field is required. Requires the GEO product.

## Path parameters

- `questionId` string, uuid, required

## Request body

- PatchGeoQuestionRequest: At least one of `tag_ids` or `type` must be supplied.
  - `tag_ids` string[]: Replaces the question's full tag set.
  - `type` 'decision' | 'consideration' | 'awareness' | 'evaluation': New funnel stage.

## Response `200`

The updated question.

- GeoQuestionResponse: A question (prompt) with its tags.
  - `geo_question_id` string, uuid, required
  - `org_id` string, uuid: The owning organization. Omitted for network-scoped questions.
  - `question_text` string, required
  - `type` string, required: Funnel stage. Currently one of `decision`, `consideration`, `awareness`, or `evaluation`.
  - `geo_pool_id` string, uuid: The pool this question belongs to.
  - `persona_id` string, uuid, nullable, required: Always null. Legacy personas were removed; the field is kept until the new org persona API ships.
  - `persona_question_id` string, uuid, nullable, required: Always null. Legacy personas were removed; the field is kept until the new org persona API ships.
  - `persona_name` string, nullable, required: Always null. Legacy personas were removed; the field is kept until the new org persona API ships.
  - `tags` TagResponse[]
    - `id` string, uuid, required
    - `org_id` string, uuid, required
    - `name` string, required
    - `curated` boolean, required: True = part of the org's working vocabulary; false = machine-minted (from search queries), awaiting adoption.
    - `prompt_count` integer: Prompts carrying this tag.
    - `content_count` integer: Content items carrying this tag.
    - `kb_content_count` integer: Knowledge-base nodes carrying this tag.
    - `generated_content_count` integer: Generated content carrying this tag.
    - `generated_draft_count` integer: Generated drafts carrying this tag.
    - `generated_published_count` integer: Published generated content carrying this tag.
    - `kb_search_message_count` integer: Search queries carrying this tag.
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: The request body was invalid — either it failed field validation (`ValidationErrorResponse`) or was otherwise malformed (`ErrorResponse`).
- `401`: Missing or invalid credentials — supply a valid org API key in the `X-API-Key` header.
- `403`: The API key is authenticated but not permitted to access this resource.
- `404`: The requested resource does not exist or is not visible to this key.

---

[API](https://skmtc.dev/senso/apis/senso-org-api.md) - [All operations](https://skmtc.dev/senso/apis/senso-org-api/llms.txt) - [OpenAPI document](https://skmtc.dev/senso/apis/senso-org-api/revisions/d789b4fcbe84?raw)
