---
title: "Ask one natural-language question, answered with this key's own tool roster."
method: POST
path: "/ask"
---

# Ask one natural-language question, answered with this key's own tool roster.

`POST /ask`

## Request

- Base URL: `https://app.seomatic.ai/api/v1`
- URL: `https://app.seomatic.ai/api/v1/ask`
- Auth: HTTP bearer

The non-streaming sibling of dashboard chat, for surfaces that cannot hold an SSE stream open (WordPress plugins, n8n, curl). The roster is the SAME scope-filtered set MCP and /tools serve, so a free key can read and ask but never act. Metered against the workspace's monthly question pool (shared with chat and MCP); a model failure does not consume a question.

## Request body

- object
  - `question` string, required: The question, in plain language.
  - `client` string: Surface attribution (e.g. wp-plugin, n8n, cli), so questions are not all attributed to curl.

## Response `200`

The answer, with the tools it used; free workspaces also get remaining_questions in the body.

## Other responses

- `400`: Missing or invalid question
- `402`: Monthly question limit reached (FREE_QUOTA_EXCEEDED; body carries keep_going_url, the page with every way to continue), or the subscription is paused or its card was declined (BILLING_INACTIVE; body links the one step that restores it).

---

[API](https://skmtc.dev/seomatic/apis/seomatic-api.md) · [All operations](https://skmtc.dev/seomatic/apis/seomatic-api/llms.txt) · [OpenAPI document](https://skmtc.dev/seomatic/apis/seomatic-api/revisions/113a2a263604?raw)
