---
title: "Create a suggestion"
method: POST
path: "/api/v2/suggestions"
tags: ["Suggestions"]
---

# Create a suggestion

`POST /api/v2/suggestions`

## Request

- Base URL: `https://yournation.nationbuilder.com`
- URL: `https://yournation.nationbuilder.com/api/v2/suggestions`
- Auth: HTTP bearer

Creates a Suggestion.

**Required attributes:**
- `suggestion_box_id` - ID of the SuggestionBox to add this Suggestion to
- `headline` - Display name/title for the Suggestion

**Optional attributes:**
- `content` - Further explanation of the Suggestion beyond the headline
- `slug` - URL-friendly identifier (auto-generated from name if not provided)
- `status` - Publication status (defaults to 'published' if not provided)
- `recruiter_id` - Signup ID for the person to assign as the recruiter when Suggestions are submitted (defaults to null)
- `official_response` - Official response to the Suggestion
- `response_type_id` - Status/stage of the Suggestion (defaults to 7 - 'Submitted')
- `response_author_id` - Signup ID for the person that provided the official response. (Defaults null, auto-set to the owner of the API key if not provided when first response is provided)
- `responded_at` - When responded (defaults to null, auto-set when first responded)
- `notify_followers` - Send email to suggestion followers when adding an official response (boolean, write-only, defaults to false)

## Request body

- SuggestionCreateRequest: The JSON:API top-level document shape for create requests, whose data member carries the new resource's type and attributes.
  - `data` object, required
    - `type` 'suggestions', required: The JSON:API resource type of the resource being created.
    - `attributes` object: The write-only attributes of a suggestion.
      - `content` string, nullable: Text content of the Suggestion (labeled "Further explanation" in the UI)
      - `external_id` string, nullable: Client-provided idempotency key stored on the related Page (unique across pages).
      - `headline` string: Page headline for this Suggestion
      - `official_response` string, nullable: Official response to the suggestion. Can be used alone or combined with `response_type_id` to provide both a status update and detailed explanation.
      - `recruiter_id` string, nullable: Signup ID of the person who recruited the Suggestion author
      - `responded_at` string, date-time, nullable: Timestamp when the suggestion was responded to. Automatically set when `response` or `response_type_id` is first added.
      - `response_author_id` string, nullable: Signup ID of the person who provided the response
      - `response_type_id` integer, nullable: Status/stage of the suggestion in the review process. Response types: 0=Not Planned, 1=Considering, 2=Planned, 3=Started, 4=Completed, 5=Incomplete, 6=Duplicate, 7=Submitted (default/no response). A suggestion is considered "responded to" if it has `response` text OR a non-7 `response_type_id`.
      - `slug` string: URL path for this content. Must be unique within the site. Auto-generated from name if not provided.
      - `status` 'archived' | 'deleted' | 'expired' | 'hidden' | 'published' | 'rule_violated' | 'unlisted': Publication status of the page. Must be one of: archived, deleted, expired, hidden, published, rule_violated, unlisted
      - `suggestion_box_id` string: SuggestionBox to which this Suggestion will be submitted
      - `notify_followers` boolean, nullable: Whether to send email notification to the suggestion author when providing an official response. Only applies when the parent SuggestionBox has email notifications enabled (send_official_response_notifications is true). This is a write-only field used during updates when adding a response.

## Response `201`

The newly created suggestion.

- SuggestionShowResponse: The JSON:API top-level document shape for responses returning a single resource under the data member.
  - `data` object, required: A JSON:API resource identifier object, the type/id pair that uniquely identifies a single resource.
    - `id` string, required: Unique identifier of the resource.
    - `type` 'suggestions', required: The JSON:API resource type.
    - `attributes` object: The read-only attributes of a suggestion.
      - `content` string, nullable: Text content of the Suggestion (labeled "Further explanation" in the UI)
      - `external_id` string, nullable: Client-provided idempotency key stored on the related Page (unique across pages).
      - `headline` string: Page headline for this Suggestion
      - `official_response` string, nullable: Official response to the suggestion. Can be used alone or combined with `response_type_id` to provide both a status update and detailed explanation.
      - `recruiter_id` string, nullable: Signup ID of the person who recruited the Suggestion author
      - `responded_at` string, date-time, nullable: Timestamp when the suggestion was responded to. Automatically set when `response` or `response_type_id` is first added.
      - `response_author_id` string, nullable: Signup ID of the person who provided the response
      - `response_type_id` integer, nullable: Status/stage of the suggestion in the review process. Response types: 0=Not Planned, 1=Considering, 2=Planned, 3=Started, 4=Completed, 5=Incomplete, 6=Duplicate, 7=Submitted (default/no response). A suggestion is considered "responded to" if it has `response` text OR a non-7 `response_type_id`.
      - `slug` string: URL path for this content. Must be unique within the site. Auto-generated from name if not provided.
      - `status` 'archived' | 'deleted' | 'expired' | 'hidden' | 'published' | 'rule_violated' | 'unlisted': Publication status of the page. Must be one of: archived, deleted, expired, hidden, published, rule_violated, unlisted
      - `suggestion_box_id` string: SuggestionBox to which this Suggestion will be submitted
      - `created_at` string, date-time
      - `has_image` boolean: Whether this Suggestion includes an image
      - `is_responded` boolean: Whether this Suggestion has been responded to. A suggestion is considered "responded to" if it has `response` text OR `response_type_id` is not 7 (Submitted).
      - `page_id` string: Associated page ID (read-only)
      - `site_id` string: Site where this Suggestion is published (inherited from SuggestionBox)
      - `updated_at` string, date-time
  - `included` Resource[]: Sideloaded resources requested via the include query parameter. Each entry is a full resource object whose shape is documented under its own resource type.
    - `id` string, required: Unique identifier of the resource.
    - `type` string, required: The JSON:API resource type.
    - `attributes` object: The attributes of the resource, as documented for its resource type.
    - `relationships` object: References from this resource to other resources in the document.
  - `meta` object: Non-standard information about the document. Empty unless the endpoint has metadata to convey.

## Other responses

- `400`: A suggestion with this slug already exists, or a required field is missing.
- `401`: The access token is missing, expired, or not authorized to access this resource.
- `422`: The referenced suggestion box does not exist.
- `429`: The access token has exceeded its request quota for the current rate-limit window.

## Changes

- **2026-11-05** `d5c88ca497ac`: 4 breaking, 2 warning, 9 info
  - added `#/components/schemas/create_request_document, subschema #2` to the request body `allOf` list
  - the request's body type changed from `object` to no type
  - the response's body type changed from `object` to no type for status `201`
  - removed the required property `data` from the response with the `201` status
  - …11 more
- **2026-02-14** `31995b0a1e61`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nationbuilder/apis/nationbuilder-v2-api/changes/api/v2/suggestions/post.md)

---

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