---
title: "Create a project"
method: POST
path: "/api/ManualRedaction"
tags: ["Guided Redaction Management"]
---

# Create a project

`POST /api/ManualRedaction`

Creates a new manual redaction project with the specified configuration. You must specify a unique, non-empty project name.
### Required Permissions

- **Global:** Create Manual Redaction Project

## Request body

- CreateManualReactionProjectRequest — Request to create a new guided redaction project.
  - `name` string — The name of the project
  - `fileSource` 'Local' | 'Sharepoint' | 'Aws' | 'Sdk' | 'Azure' | 'OneLake' — The original upload location of source files (Local, S3, Azure, SharePoint, OneLake, or SDK).
  - `awsCredentialSource` 'UserProvided' | 'FromEnvironment' | 'AssumeRole' — How AWS credentials are provided: directly by the user or from the server environment.
  - `fileSourceExternalCredential` FileSourceExternalCredentialApiModel — Credentials for connecting to an external file source such as S3, Azure Blob Storage, or SharePoint.
    - `fileSource` 'Local' | 'Sharepoint' | 'Aws' | 'Sdk' | 'Azure' | 'OneLake' — The original upload location of source files (Local, S3, Azure, SharePoint, OneLake, or SDK).
    - `awsCredentialsSource` 'UserProvided' | 'FromEnvironment' | 'AssumeRole' — How AWS credentials are provided: directly by the user or from the server environment.
    - `credential` IExternalCredential — External credential interface for use in serializing credentials to `ExternalDatasetCredentials` table.
  - `entityOutputFormat` 'ReferenceCodes' | 'NoIdentifiers' — <p>Possible values:</p> <ul> <li><b>ReferenceCodes</b>: Each entity is replaced with a custom label, specified by user. When not specified, we use the entity label</li> <li><b>NoIdentifiers</b>: Each entity is fully redacted with no replacement text</li> </ul>

## Response `200`

Returns the created project

- ManualRedactionProjectResponseModel — Full guided redaction project details, including files, configuration, status, and permission information.
  - `id` string
  - `name` string
  - `generatorSetup` object, nullable
  - `labelBlockLists` object, nullable
  - `labelAllowLists` object, nullable
  - `tags` string[]
  - `files` ManualRedactionProjectFileResponseModel[], nullable
    - `id` string
    - `fileName` string
    - `fileType` string
    - `projectId` string
    - `numRows` integer, nullable
    - `numColumns` integer
    - `piiTypes` string[]
    - `wordCount` integer
    - `redactedWordCount` integer
    - `uploadedTimestamp` Instant — A point in time represented as an ISO 8601 timestamp string.
    - `fileSource` 'Local' | 'Sharepoint' | 'Aws' | 'Sdk' | 'Azure' | 'OneLake' — The original upload location of source files (Local, S3, Azure, SharePoint, OneLake, or SDK).
    - `processingStatus` string
    - `processingError` string, nullable
    - `mostRecentCompletedJobId` string, nullable
    - `filePath` string, nullable
    - `reviewStatus` ManualRedactionStatusResponseModel — Review status for a guided redaction project or file, including display label and color.
      - `id` string
      - `label` string
      - `colorHexCode` string
      - `order` integer
      - `canDelete` boolean
    - `labelAllowLists` object
    - `labelBlockLists` object
    - `generatorSetup` object
    - `customPiiEntityNames` string[]
    - `fileVersionToken` FileVersionToken — Capture state of file undo/redo stack
      - `sequenceNumber` integer — Max sequence number across all file history entries
      - `undoDepth` integer — Count of consecutive undone operations from the top of the stack
      - `historyNonce` string, nullable — Unique identifier of the most recent non-undone history entry, used to detect stale state
      - `canUndo` boolean — Indicates whether undo is available (there are non-undone actions in the history)
      - `canRedo` boolean — Indicates whether redo is available (there are undone actions that can be reapplied)
      - `toToken` string
    - `skipBulkRedactionConfirmation` boolean
  - `lastUpdated` Instant — A point in time represented as an ISO 8601 timestamp string.
  - `created` Instant — A point in time represented as an ISO 8601 timestamp string.
  - `creatorUser` UserEntityModel — A user entity with basic identity information.
    - `id` string, required — The unique identifier of the user or group.
    - `userName` string, nullable, required — The display name of the user or group.
    - `firstName` string, nullable — The user's first name.
    - `lastName` string, nullable — The user's last name.
  - `fileSource` 'Local' | 'Sharepoint' | 'Aws' | 'Sdk' | 'Azure' | 'OneLake' — The original upload location of source files (Local, S3, Azure, SharePoint, OneLake, or SDK).
  - `customPiiEntityIds` string[], nullable
  - `operations` ManualRedactionProjectOperation[], nullable
  - `fileSourceExternalCredential` FileSourceExternalCredentialApiModel — Credentials for connecting to an external file source such as S3, Azure Blob Storage, or SharePoint.
    - `fileSource` 'Local' | 'Sharepoint' | 'Aws' | 'Sdk' | 'Azure' | 'OneLake' — The original upload location of source files (Local, S3, Azure, SharePoint, OneLake, or SDK).
    - `awsCredentialsSource` 'UserProvided' | 'FromEnvironment' | 'AssumeRole' — How AWS credentials are provided: directly by the user or from the server environment.
    - `credential` IExternalCredential — External credential interface for use in serializing credentials to `ExternalDatasetCredentials` table.
  - `awsCredentialSource` string, nullable
  - `status` ManualRedactionStatusResponseModel — Review status for a guided redaction project or file, including display label and color.
    - `id` string
    - `label` string
    - `colorHexCode` string
    - `order` integer
    - `canDelete` boolean
  - `redactionOutputFormat` 'ReferenceCodes' | 'NoIdentifiers' — <p>Possible values:</p> <ul> <li><b>ReferenceCodes</b>: Each entity is replaced with a custom label, specified by user. When not specified, we use the entity label</li> <li><b>NoIdentifiers</b>: Each entity is fully redacted with no replacement text</li> </ul>
  - `description` string, nullable

## Other responses

- `400` — The project name must be specified
- `409` — Project name is already in use

---

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