Transfer User Prompts Between Assistants — Unique AI Documentation

Transfer User Prompts Between Assistants

Moving User Prompts Between Assistants

Using our GraphQL API, you can move user prompts from one assistant to another assistant either totally or for a subset of user prompts owned by specific users.

This documentation shows different use cases and scenarios of the API endpoint for transferring user prompts.

Authorization Requirements

To execute this mutation, the user must have the ADMIN_SPACE_WRITE role.

1. From one assistant to another assistant

The transfer of user prompts between assistants must involve both source and target assistants that are owned by the same company.

Request

    curl --location 'https://gateway.<baseUrl>/chat/graphql' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer {{ token }}' \
    --data '{"query":"mutation TransferUserPrompt($src: String! $dest: String! $ownedBy: [String!]) {\n userPromptMoveManyToAssistant(\n sourceAssistantId: $src, \n targetAssistantId: $dest, \n ownedBy: $ownedBy\n ) {\n id\n companyId\n assistantId\n title\n prompt\n }\n}","variables":{"src":"{{ SourceAssistantId }}","dest":"{{ TargetAssistantId }}"}}'
    ```

**Response**

- The returned response is a list of all the prompts that were successfully moved with their `assistantId` field updated to the `targetAssistantId` they were moved to.

```json
    {
      "data": {
        "userPromptMoveManyToAssistant": [
          {
            "id": "userPrompt_hpgczg8o8mej34xkc7wk3chn",
            "assistantId": "{{ TargetAssistantId }}",
            "title": "Prompt #3 - User - Owned Header",
            "prompt": "Prompt #3 - User - Owned Body",
            "ownedBy": "{{ UserID }}"
          }
        ]
      }
    }
    ```

### 2. From one assistant to another assistant for prompts owned by specific users

The transfer of user prompts between assistants must involve both source and target assistants that are owned by the same company.

**Request**

- The `sourceAssistantId` is the ID of the assistant to move the prompts from.
- The `targetAssistantId` is the ID of the assistant to move the prompts to.
- The `ownedBy` is the optional list of user IDs that own the prompts that should be moved.

**Response**

- The returned response is a list of all the prompts that were successfully moved with their `assistantId` field updated to the `targetAssistantId` they were moved to.
- Only prompts owned by the specified users are moved between the source and target assistants.

```json
    {
      "data": {
        "userPromptMoveManyToAssistant": [
          {
            "id": "userPrompt_hpgczg8o8mej34xkc7wk4chn",
            "assistantId": "{{ TargetAssistantId }}",
            "title": "Prompt #4 - User1 - Owned Header",
            "prompt": "Prompt #4 - User1 - Owned Body",
            "ownedBy": "{{ UserID_1 }}"
          },
          {
            "id": "userPrompt_hpgczg8o8mej34xkc7wk5chn",
            "assistantId": "{{ TargetAssistantId }}",
            "title": "Prompt #5 - User2 - Owned Header",
            "prompt": "Prompt #5 - User2 - Owned Body",
            "ownedBy": "{{ UserID_2 }}"
          }
        ]
      }
    }
    ```

## Copy User Prompts from One Assistant to Another

Maybe what you want to do is not to move the user prompts but create a copy of the user prompts on one assistant in another assistant; you can now achieve this using an additional `copyOnly` parameter in your request to the GraphQL `userPromptMoveManyToAssistant` mutation.

An example mutation could look like this:

```graphql
    mutation UserPromptCopyTest($sourceAssistantId: String!, $targetAssistantId: String!, $copyOnly: Boolean) {
        userPromptMoveManyToAssistant(sourceAssistantId: $sourceAssistantId, targetAssistantId: $targetAssistantId, copyOnly: $copyOnly) {
            id
            title
            prompt
            assistantId
        }
    }
    ```

With variables sets as such:

```json
    {
      "sourceAssistantId": "<The assistant ID to copy from>",
      "targetAssistantId": "<The assistant ID to copy to>",
      "copyOnly": true
    }
    ```

**cURL example**

```bash
    curl --location 'https://gateway.qa.unique.app/chat-gen2/graphql' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer {{ token }}' \
    --data '{"query":"mutation UserPromptCopyTest($sourceAssistantId: String!, $targetAssistantId: String!, $copyOnly: Boolean) {\n    userPromptMoveManyToAssistant(sourceAssistantId: $sourceAssistantId, targetAssistantId: $targetAssistantId, copyOnly: $copyOnly) {\n        id\n        title\n        prompt\n        assistantId\n    }\n}","variables":{"sourceAssistantId":"<Assistant ID to copy from>","targetAssistantId":"<Assistant ID to copy to>","copyOnly":true}}'
    ```

Setting `copyOnly` to `true` ensures that a new copy of the prompts is made and source assistant retains its existing user prompts.