---
title: "Deny a pending research submission"
method: POST
path: "/api/research/submissions/{id}/deny"
tags: ["research", "browser-session"]
---

# Deny a pending research submission

`POST /api/research/submissions/{id}/deny`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/research/submissions/{id}/deny`
- Auth: API key in cookie `__session`

Clerk operator session only. The mirror of its approve sibling: writes the record into the denied bucket with `denied_at` + `denied_by` (and the optional reason), then clears the pending key and the queue index entry. The body is OPTIONAL — an operator may deny an obvious item without commentary.

## Path parameters

- `id` string, required

## Request body

- ResearchSubmissionDenyRequest: Optional — a deny with no body is valid.
  - `reason` string: Free text, truncated server-side. Stored on the denied record.

## Response `200`

Denied.

- ResearchSubmissionDecisionResponse
  - `ok` boolean, required
  - `id` string, required: The submission that was decided.
  - `status` 'approved' | 'denied', required

## Other responses

- `400`: Missing id, or an unparseable body.
- `401`: Not signed in.
- `403`: Not operator-tier.
- `404`: No such pending submission.
- `500`: KV read or write failed.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
