---
title: "Submit agent workspace questionnaire answers"
description: "Public, unauthenticated submission endpoint for the UX research questionnaire. Stores answers, respondent info, workflow-posture tallies, and link/query-param tracking metadata in ux_research_survey_responses. Includes honeypot spam filtering and per-IP throttling."
---

> Documentation Index
> Fetch the complete documentation index at: https://developer.channelautomations.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Channel Automation API › Research

`POST /research/agent-workspace`

Public, unauthenticated submission endpoint for the UX research questionnaire. Stores answers, respondent info, workflow-posture tallies, and link/query-param tracking metadata in ux_research_survey_responses. Includes honeypot spam filtering and per-IP throttling.

## Request body

_Required._

- `answers` (`post/research/agent-workspace.answers`; array<object>, required)
  - `n` (`post/research/agent-workspace.answers.n`; integer, optional)
  - `q` (`post/research/agent-workspace.answers.q`; string, optional)
  - `a` (`post/research/agent-workspace.answers.a`; array<string>, optional)
- `respondent` (`post/research/agent-workspace.respondent`; object, optional)
  - `name` (`post/research/agent-workspace.respondent.name`; string, optional)
  - `company` (`post/research/agent-workspace.respondent.company`; string, optional)
  - `email` (`post/research/agent-workspace.respondent.email`; string, optional)
- `posture` (`post/research/agent-workspace.posture`; object, optional) — Directional workflow-posture tallies (inbox/queue/board)
- `answered_count` (`post/research/agent-workspace.answered_count`; integer, optional)
- `meta` (`post/research/agent-workspace.meta`; object, optional) — Client context (link query params, referrer, timezone, screen)

## Example request

```json
{
  "respondent": {
    "name": "string",
    "company": "string",
    "email": "string"
  },
  "answers": [
    {
      "n": 0,
      "q": "string",
      "a": [
        "string"
      ]
    }
  ],
  "posture": {},
  "answered_count": 0,
  "meta": {}
}
```

## Code samples

### cURL

```bash
curl --request POST \
  --url https://api.channelautomation.com/research/agent-workspace \
  --header 'Content-Type: application/json' \
  --data '
{
  "respondent": {
    "name": "string",
    "company": "string",
    "email": "string"
  },
  "answers": [
    {
      "n": 0,
      "q": "string",
      "a": [
        "string"
      ]
    }
  ],
  "posture": {},
  "answered_count": 0,
  "meta": {}
}
'
```

### TypeScript

```typescript
const url = 'https://api.channelautomation.com/research/agent-workspace';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    respondent: {name: 'string', company: 'string', email: 'string'},
    answers: [{n: 0, q: 'string', a: ['string']}],
    posture: {},
    answered_count: 0,
    meta: {}
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.channelautomation.com/research/agent-workspace"

payload = {
    "respondent": {
        "name": "string",
        "company": "string",
        "email": "string"
    },
    "answers": [
        {
            "n": 0,
            "q": "string",
            "a": ["string"]
        }
    ],
    "posture": {},
    "answered_count": 0,
    "meta": {}
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

## Responses

### 200

Submission stored

### 400

Invalid or empty submission

### 429

Too many submissions from this IP

### 500

Internal server error

#### Example

```json
{
  "error": "Internal server error",
  "details": "string",
  "success": false
}
```

- `error` (`post/research/agent-workspace.response.500.error`; string, optional)
  - example `"Internal server error"`
- `details` (`post/research/agent-workspace.response.500.details`; string, optional)
- `success` (`post/research/agent-workspace.response.500.success`; boolean, optional)
  - example `false`


Source: https://developer.channelautomations.com/api/post-research-agent-workspace/index.md
