---
title: "Create Issue"
method: POST
path: "/tasks/v1/incidents/submit"
tags: ["Issues"]
---

# Create Issue

`POST /tasks/v1/incidents/submit`

## Request body

- S12TasksV1SubmitIncidentRequest
  - `task_id` string — Optional. The unique identifier of the incident If not provided, UUID will be generated server side
  - `title` string, required — Required. Title of the incident Title is limited to only 255 characters max
  - `created_at` string, date-time — Optional. Date and time this incident was created
  - `category_id` string, required — Required. ID of the incident's category If not set, this incident will be stored with the default category(None)
  - `answered_questions` string[] — Optional. An array of all, if any, custom questions that have been answered by the contributor @deprecated: Use `QuestionAnswer` instead. This was a field used for string custom questions. We've since moved to structured custom questions in the `QuestionAnswer` field.
  - `email` string — Optional. The email address of the contributor
  - `media` S12CommonMedia[] — Optional. Array of media items to be linked to the incident.
    - `id` string
    - `token` string
    - `filename` string — full file name, including file extension
    - `media_type` 'MEDIA_TYPE_IMAGE' | 'MEDIA_TYPE_VIDEO' | 'MEDIA_TYPE_PDF' | 'MEDIA_TYPE_DOCX' | 'MEDIA_TYPE_XLSX' | 'MEDIA_TYPE_PPTX' | 'MEDIA_TYPE_CSV' — - MEDIA_TYPE_IMAGE: An image file (GIF, JPG, PNG, WEBP). - MEDIA_TYPE_VIDEO: A video file (MP4, MOV). - MEDIA_TYPE_PDF: A PDF document. - MEDIA_TYPE_DOCX: A Microsoft Word document (DOCX, DOC). - MEDIA_TYPE_XLSX: A Microsoft Excel spreadsheet (XLSX, XLS). - MEDIA_TYPE_PPTX: A Microsoft PowerPoint presentation (PPTX, PPT). - MEDIA_TYPE_CSV: A CSV file.
  - `site_id` string — Optional. ID of the site to associate with the incident. If not provided, no site will be associated with the incident.
  - `name` string — Optional. The name of the contributor
  - `contact` string — Optional. The contact details of the contributor
  - `location` S12TasksV1TaskAddressLocation — The location of the task. The latitude and longitude in the `geo_position` object are required. All other fields are optional, but add extra context to the location on platform.
    - `name` string — The name of the task's location.
    - `thoroughfare` string — The thoroughfare of the location.
    - `sub_thoroughfare` string — The sub_thoroughfare of the location,
    - `locality` string — The locality of the location
    - `sub_locality` string — The sub_locality of the location
    - `administrative_area` string — The administrative_area of the location
    - `sub_administrative_area` string — The sub_administrative_area of the location
    - `postal_code` string — The postal_code of the location
    - `country` string — The country of the location
    - `iso_country_code` string — The iso_country_code of the location
    - `geo_position` S12CommonGeoPosition — A position is the fundamental geographical geometry construct.
      - `longitude` number, double — The geographical longitude
      - `latitude` number, double — The geographical latitude
      - `accuracy` integer — The accuracy in meters
  - `access_token` string — Optional. The access token used to authenticate the request. This field should be set when following the contributor flow. Otherwise, authenticate via normal means.
  - `description` string — Optional. Description of the issue (maximum 500 characters).
  - `questions_and_answers` S12TasksV1SubmitIncidentRequestQuestionAnswer[] — Optional. An array of all, if any, custom questions that have been answered for this issue.
    - `question_id` string — The ID of the question being answered.
    - `answer_text` S12TasksV1AnswerText — A type of answer for a custom question containing text data.
      - `text` string — The text that answers the question.
    - `answer_multiple_choice` S12TasksV1MultipleChoiceOption — MultipleChoiceOption represents a possible answer for a multiple choice question.
      - `id` string — The UUID of the multiple choice option.
      - `text` string — The text of the multiple choice option. This does not use the new `validator.string` option as question processing logic fails when symbols are substituted for similar-looking symbols.
  - `items` S12TasksV1Item[] — Optional. The category fields and questions that applied to this incident when it was created.
    - `id` string — The UUID of the item.
    - `name` string — Name of the item
    - `is_mandatory` boolean — Whether or not the item must be filled before submission
    - `type` 'ITEM_TYPE_UNSPECIFIED' | 'ITEM_TYPE_TITLE' | 'ITEM_TYPE_DESCRIPTION' | 'ITEM_TYPE_SITE' | 'ITEM_TYPE_MEDIA' | 'ITEM_TYPE_LOCATION' | 'ITEM_TYPE_QUESTION' | 'ITEM_TYPE_OCCURRED_AT' | 'ITEM_TYPE_ASSET' — - ITEM_TYPE_UNSPECIFIED: The item type is unspecified
    - `question_data` S12TasksV1Question — Question represents the question structure for a custom question.
      - `id` string — The UUID of the question.
      - `text` string — The text of the question being asked (e.g. "How many eggs are in a dozen?"). This does not use the new `validator.string` option as question processing logic fails when symbols are substituted for similar-looking symbols.
      - `type` 'QUESTION_TYPE_UNSPECIFIED' | 'QUESTION_TYPE_TEXT' | 'QUESTION_TYPE_MULTIPLE_CHOICE' — - QUESTION_TYPE_UNSPECIFIED: The question type is unspecified. This generally should not happen. - QUESTION_TYPE_TEXT: The question is text type. This question accepts freetext answers. - QUESTION_TYPE_MULTIPLE_CHOICE: The question is multiple choice. This question provides a list of options to choose from.
      - `is_mandatory` boolean — Whether the question is mandatory or not
      - `multiple_choice_options` S12TasksV1MultipleChoiceOptions — MultipleChoiceOptions is an explicit message for a set of MultipleChoiceOption's to use in a oneof field below.
        - `options` S12TasksV1MultipleChoiceOption[]
          - `id` string — The UUID of the multiple choice option.
          - `text` string — The text of the multiple choice option. This does not use the new `validator.string` option as question processing logic fails when symbols are substituted for similar-looking symbols.
    - `is_disabled` boolean — Whether or not the item is disabled and hidden from submission
  - `occurred_at` string, date-time — Optional. Date and time this incident occurred at
  - `asset_id` string — Optional. The ID of the asset associated with this incident.
  - `ai_generated` boolean — Optional. True when this issue was created via an AI-assisted flow (e.g. the QR-code AI Issue Creation flow seeded by GenerateIncidentStream). The client declares AI involvement; the server persists the flag and surfaces it on Incident.ai_generated. Top-level marker for EU AI Act Article 50(2) machine-readable detectability (AI-522). Per-field origin tracking is intentionally out of scope for iteration 1 — see the EU AI Act compliance DACI.

## Response `200`

A successful response.

- S12TasksV1SubmitIncidentResponse
  - `incident_id` string — The UUID of the incident that was created.
  - `unique_id` string — The unique id of the incident that was created. Formatted like: IS-1234.

## Other responses

- `default` — An unexpected error response.

---

[API](https://skmtc.net/safetyculture/apis/safetyculture-api.md) · [All operations](https://skmtc.net/safetyculture/apis/safetyculture-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/safetyculture/safetyculture-api/revisions/5be91df61ded/schema)
