# Quora API

> Every Quora endpoint on Cotlet: inputs, JSON Schema, cURL, Python and Node.js examples and an example response for each call.

Source: https://cotlet.dev/docs/api/quora

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

11 endpoints for Quora. Each one is a POST with a JSON body, called with your API key.

- Base URL: `https://cotlet.dev/api/v1/quora`
- Connects with: Your own Quora account (Space admin or moderator role for stats and submissions)
- Integration page: https://cotlet.dev/integrations/quora-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `search_questions` | read | Questions matching a keyword, with answer counts. |
| `get_question` | read | Question text and its top answers with author and upvotes. |
| `list_my_answers` | read | Your answers with question and URL, from your Your Content page. |
| `list_answer_requests` | read | Questions other people asked you to answer. |
| `list_my_spaces` | read | Spaces you follow or help run, with your role. |
| `get_space_stats` | read | Views, followers, upvotes, comments and notification clicks, all-time and last 7 days, plus top content. |
| `list_space_submissions` | read | Answers, posts and questions followers submitted to your Space, waiting for review. |
| `post_answer` | write | Publish an answer as you under a question. |
| `ask_question` | write | Add a new public question to Quora. |
| `post_to_space` | write | New post in a Space you contribute to, posted now or added to its queue. |
| `review_space_submission` | write | Approve, queue or pass on a follower submission. Space admins and moderators only. |

## Search questions

`POST https://cotlet.dev/api/v1/quora/search_questions`

Access: read.

Searches Quora for questions matching your words and returns them in the order Quora shows them, with the number of answers each has. Use question_url from an item with get_question. Pages hold up to 50 questions.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `query` | string | yes | Search words. |
| `limit` | integer | no | 1 to 50. Default: 20. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/search_questions \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"bookkeeping for freelancers","limit":20}'
```

**Python**

```python
result = client.call("quora", "search_questions", {"query":"bookkeeping for freelancers","limit":20})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'search_questions', {"query":"bookkeeping for freelancers","limit":20});
```

**CLI**

```bash
cotlet call quora search_questions --data '{"query":"bookkeeping for freelancers","limit":20}'
```

### Example response

```json
{
  "questions": [
    {
      "question": "How do freelancers track expenses for taxes?",
      "question_url": "https://www.quora.com/How-do-freelancers-track-expenses-for-taxes",
      "answers": 3
    },
    {
      "question": "Do I need bookkeeping software as a freelancer?",
      "question_url": "https://www.quora.com/Do-I-need-bookkeeping-software-as-a-freelancer",
      "answers": 1
    }
  ]
}
```

## Get question

`POST https://cotlet.dev/api/v1/quora/get_question`

Access: read.

Returns one question with its text, answer count and the top answers in the order Quora shows them. Use it before answering, so your agent sees what is already said. answers_limit set to 0 returns the question only.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `question_url` | string | yes | Question URL on quora.com. |
| `answers_limit` | integer | no | 0 to 20. Default: 5. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/get_question \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question_url":"https://example.com"}'
```

**Python**

```python
result = client.call("quora", "get_question", {"question_url":"https://example.com"})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'get_question', {"question_url":"https://example.com"});
```

**CLI**

```bash
cotlet call quora get_question --data '{"question_url":"https://example.com"}'
```

### Example response

```json
{
  "question": "How do freelancers track expenses for taxes?",
  "question_url": "https://www.quora.com/How-do-freelancers-track-expenses-for-taxes",
  "answers": 3,
  "top_answers": [
    {
      "author": "Dana Reyes",
      "upvotes": 41,
      "preview": "Use a separate account for business costs and keep every receipt..."
    }
  ]
}
```

## List my answers

`POST https://cotlet.dev/api/v1/quora/list_my_answers`

Access: read.

Lists the answers on your Your Content page, newest first, with the question each answers and its URL. Pass next_cursor back as cursor for the next page.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `limit` | integer | no | 1 to 50. Default: 20. |
| `cursor` | string | no | Next page cursor from the previous call. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/list_my_answers \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

**Python**

```python
result = client.call("quora", "list_my_answers")
```

**Node.js**

```js
const result = await cotlet.call('quora', 'list_my_answers');
```

**CLI**

```bash
cotlet call quora list_my_answers
```

### Example response

```json
{
  "answers": [
    {
      "answer_id": "391847562",
      "question": "How do freelancers track expenses for taxes?",
      "url": "https://www.quora.com/How-do-freelancers-track-expenses-for-taxes/answer/Your-Name",
      "created_at": "2026-10-10T14:20:00Z"
    }
  ],
  "next_cursor": null
}
```

## List answer requests

`POST https://cotlet.dev/api/v1/quora/list_answer_requests`

Access: read.

Lists the requests on your Answer Requests page, with the question and who asked. Anyone on Quora can send a request to anyone, so expect questions outside your topics. Pass question_url to get_question.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `limit` | integer | no | 1 to 50. Default: 20. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/list_answer_requests \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

**Python**

```python
result = client.call("quora", "list_answer_requests")
```

**Node.js**

```js
const result = await cotlet.call('quora', 'list_answer_requests');
```

**CLI**

```bash
cotlet call quora list_answer_requests
```

### Example response

```json
{
  "requests": [
    {
      "question": "What is the best way to invoice a client abroad?",
      "question_url": "https://www.quora.com/What-is-the-best-way-to-invoice-a-client-abroad",
      "requested_by": "Sam Ortiz",
      "requested_at": "2026-10-09T08:12:00Z"
    }
  ]
}
```

## List my Spaces

`POST https://cotlet.dev/api/v1/quora/list_my_spaces`

Access: read.

Lists your Spaces with your role in each: owner, admin, moderator, contributor or follower. The role decides what you can do: only owners, admins, moderators and contributors can post, and only owners, admins and moderators see stats and submissions. Use space_id in the other Space tools.

### Parameters

No parameters.

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/list_my_spaces \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

**Python**

```python
result = client.call("quora", "list_my_spaces")
```

**Node.js**

```js
const result = await cotlet.call('quora', 'list_my_spaces');
```

**CLI**

```bash
cotlet call quora list_my_spaces
```

### Example response

```json
{
  "spaces": [
    {
      "space_id": "sp_5521",
      "name": "Freelance Finance",
      "role": "admin",
      "url": "https://freelancefinance.quora.com"
    },
    {
      "space_id": "sp_1190",
      "name": "Small Business Tips",
      "role": "follower",
      "url": "https://smallbiztips.quora.com"
    }
  ]
}
```

## Get Space stats

`POST https://cotlet.dev/api/v1/quora/get_space_stats`

Access: read.

Returns the five statistics Quora lists for a Space, as totals and for the last 7 days, plus Top Content ranked by views and upvotes. Visible to Space owners, admins and moderators.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `space_id` | string | yes | Space ID from list_my_spaces. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/get_space_stats \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"space_id":"space_8c41d2"}'
```

**Python**

```python
result = client.call("quora", "get_space_stats", {"space_id":"space_8c41d2"})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'get_space_stats', {"space_id":"space_8c41d2"});
```

**CLI**

```bash
cotlet call quora get_space_stats --data '{"space_id":"space_8c41d2"}'
```

### Example response

```json
{
  "space_id": "sp_5521",
  "all_time": {
    "views": 182400,
    "followers": 3120,
    "upvotes": 5210,
    "comments": 640,
    "notification_clicks": 1870
  },
  "last_7_days": {
    "views": 4120,
    "followers": 38,
    "upvotes": 96,
    "comments": 12,
    "notification_clicks": 41
  },
  "top_content": [
    {
      "title": "Month-end checklist",
      "views": 9300,
      "upvotes": 210
    }
  ]
}
```

## List Space submissions

`POST https://cotlet.dev/api/v1/quora/list_space_submissions`

Access: read.

Lists the submissions in the Space inbox: answers, posts and questions followers sent for consideration. Admins and moderators only. Spaces do not accept submissions unless the Space turned them on. Pass submission_id to review_space_submission.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `space_id` | string | yes | Space ID from list_my_spaces. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/list_space_submissions \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"space_id":"space_8c41d2"}'
```

**Python**

```python
result = client.call("quora", "list_space_submissions", {"space_id":"space_8c41d2"})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'list_space_submissions', {"space_id":"space_8c41d2"});
```

**CLI**

```bash
cotlet call quora list_space_submissions --data '{"space_id":"space_8c41d2"}'
```

### Example response

```json
{
  "submissions": [
    {
      "submission_id": "sub_8841",
      "type": "post",
      "title": "Invoice template for freelancers",
      "author": "Ana Lopez",
      "submitted_at": "2026-10-09T10:30:00Z"
    }
  ]
}
```

## Post answer

`POST https://cotlet.dev/api/v1/quora/post_answer`

Access: write. Confirm: waits for the user's OK before it runs.

Publishes an answer under your name below the question you name. Images go in the body as URLs. The answer is public at once and follows Quora's answer rules. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `question_url` | string | yes | Question URL on quora.com. |
| `body_markdown` | string | yes | Answer text. Images by URL. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/post_answer \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question_url":"https://www.quora.com/How-do-freelancers-track-expenses-for-taxes","body_markdown":"I keep one card for business costs only and export it to a spreadsheet every month."}'
```

**Python**

```python
result = client.call("quora", "post_answer", {"question_url":"https://www.quora.com/How-do-freelancers-track-expenses-for-taxes","body_markdown":"I keep one card for business costs only and export it to a spreadsheet every month."})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'post_answer', {"question_url":"https://www.quora.com/How-do-freelancers-track-expenses-for-taxes","body_markdown":"I keep one card for business costs only and export it to a spreadsheet every month."});
```

**CLI**

```bash
cotlet call quora post_answer --data '{"question_url":"https://www.quora.com/How-do-freelancers-track-expenses-for-taxes","body_markdown":"I keep one card for business costs only and export it to a spreadsheet every month."}'
```

### Example response

```json
{
  "answer_id": "391847562",
  "status": "published",
  "url": "https://www.quora.com/How-do-freelancers-track-expenses-for-taxes/answer/Your-Name",
  "created_at": "2026-10-11T14:20:00Z"
}
```

## Ask question

`POST https://cotlet.dev/api/v1/quora/ask_question`

Access: write. Confirm: waits for the user's OK before it runs.

Adds a new question under your name. In a Space where you are not a contributor, a question needs approval from an admin or moderator before it appears. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `question` | string | yes | Question text, ending with a question mark. |
| `space_id` | string | no | Post it in this Space instead of Quora at large. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/ask_question \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"question":"question"}'
```

**Python**

```python
result = client.call("quora", "ask_question", {"question":"question"})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'ask_question', {"question":"question"});
```

**CLI**

```bash
cotlet call quora ask_question --data '{"question":"question"}'
```

### Example response

```json
{
  "question": "How do I split a client invoice across two currencies?",
  "question_url": "https://www.quora.com/How-do-I-split-a-client-invoice-across-two-currencies",
  "status": "published"
}
```

## Post to Space

`POST https://cotlet.dev/api/v1/quora/post_to_space`

Access: write. Confirm: waits for the user's OK before it runs.

Creates a post in a Space where you are an owner, admin, moderator or contributor. Mode post publishes it at once. Mode queue adds it to the Space queue, which posts it over a staggered period; queue needs an admin or moderator role. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `space_id` | string | yes | Space ID from list_my_spaces. |
| `body_markdown` | string | yes | Post text. Images by URL. |
| `title` | string | no | Optional post title. |
| `mode` | enum | no | post or queue. Default: post. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/post_to_space \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"space_id":"sp_5521","title":"Month-end checklist","body_markdown":"Five things to reconcile before you close the books.","mode":"queue"}'
```

**Python**

```python
result = client.call("quora", "post_to_space", {"space_id":"sp_5521","title":"Month-end checklist","body_markdown":"Five things to reconcile before you close the books.","mode":"queue"})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'post_to_space', {"space_id":"sp_5521","title":"Month-end checklist","body_markdown":"Five things to reconcile before you close the books.","mode":"queue"});
```

**CLI**

```bash
cotlet call quora post_to_space --data '{"space_id":"sp_5521","title":"Month-end checklist","body_markdown":"Five things to reconcile before you close the books.","mode":"queue"}'
```

### Example response

```json
{
  "post_id": "sp_post_2207",
  "space_id": "sp_5521",
  "status": "queued"
}
```

## Review Space submission

`POST https://cotlet.dev/api/v1/quora/review_space_submission`

Access: write. Confirm: waits for the user's OK before it runs.

Approve publishes the submission at once. Queue adds it to the Space queue. Pass removes it from the pending list, and Quora does not notify the submitter. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `space_id` | string | yes | Space ID from list_my_spaces. |
| `submission_id` | string | yes | Submission ID from list_space_submissions. |
| `action` | enum | yes | approve, queue or pass. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/quora/review_space_submission \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"space_id":"sp_5521","submission_id":"sub_8841","action":"queue"}'
```

**Python**

```python
result = client.call("quora", "review_space_submission", {"space_id":"sp_5521","submission_id":"sub_8841","action":"queue"})
```

**Node.js**

```js
const result = await cotlet.call('quora', 'review_space_submission', {"space_id":"sp_5521","submission_id":"sub_8841","action":"queue"});
```

**CLI**

```bash
cotlet call quora review_space_submission --data '{"space_id":"sp_5521","submission_id":"sub_8841","action":"queue"}'
```

### Example response

```json
{
  "submission_id": "sub_8841",
  "space_id": "sp_5521",
  "status": "queued"
}
```
