2025.34 Public API / SDK Changes — Unique AI Documentation

2025.34 Public API / SDK Changes

Public API

New Endpoints

techDELETE Delete a Chat - API to delete a chat.

Example

curl --location --request DELETE 'https://gateway.oleole.unique.app/public/chat/space/chat/chat_se62mrxrt4k0rksimr1ojzmv' 
--header 'x-api-version: 2023-12-06' 
--header 'x-user-id: <your-user-id>' 
--header 'x-company-id: <your-company-id>' 
--header 'Authorization: Bearer <your-api-key>' 
--header 'x-app-id: <your-app-id>' 

techPOST Stream to the chat using the Responses API the Responses API - Streams the answer to the chat frontend using the Responses API.

Example

curl --location 'https://gateway.oleole.unique.app/public/chat/integrated/chat/stream-responses' 
--header 'x-api-version: 2023-12-06' 
--header 'x-user-id: <your-user-id>' 
--header 'x-company-id: <your-company-id>' 
--header 'Authorization: Bearer <your-api-key>' 
--header 'x-app-id: <your-app-id>' 
--header 'Content-Type: application/json' 
--data '{
    "chatId": "chat_vcrctshcn0wj5qxfqafwr83h",
    "model": "AZURE_o3_2025_0416",
    "assistantMessageId": "msg_k27vdzd6dpc3ys846za3s2i9",
    "userMessageId": "msg_g0yub3u2g7ab0azpcukmeg4x",
    "input": "Tell me about the curious case of neural text degeneration",
    "reasoning": {
        "effort": "medium",
        "summary": "detailed"
    }
}'

SDK

tech Chat Against a File - The script creates a chat and uploads the file to it. It then keeps polling the ingestionState field of the message, waiting for it to reach FINISHED, signaling the upload is complete. Once the file uploads successfully, the script sends the text, continues polling for completion, and finally retrieves the response message.

You must provide the following parameters:

Optional parameters:

Example of chatting against a PDF (the usage can be extended to any supported file type)

py

latest_message = await unique_sdk.utils.chat_in_space.chat_against_file(
    user_id=user_id,
    company_id=company_id,
    assistant_id="assistant_hjcdga64bkcjnhu4",
    path_to_file="/files/hello.pdf",
    displayed_filename="hello.pdf",
    mime_type="application/pdf",
    text="Give me a bullet point summary of the file.",
)

tech Delete Chat - Delete a space chat by id. If the chat does not exist, the function will return an error.

Example

py

unique_sdk.Space.delete_chat(
    user_id=user_id,
    company_id=company_id,
    chat_id="chat_dejfhe729br398",
)

tech Stream Using Responses API - Streams the answer to the chat frontend using the Responses API.

Example

py

unique_sdk.Integrated.responses_stream(
    user_id=userId,
    company_id=companyId,
    model="AZURE_o3_2025_0416",
    assistantMessageId=assistantMessageId,
    userMessageId=userMessageId,
    input="Tell me about the curious case of neural text degeneration",
    chatId=chatId,
)

tech Get Paginated Folders - Get paginated folders info based on parentId. If the parentId is not defined, the root folders will be returned.

py

unique_sdk.Folder.get_infos(
    user_id=user_id,
    company_id=company_id,
    take=10,                                    #optional
    skip=5,                                     #optional
    parentId="scope_s18seqpnltf35niydg77xgyp"   #optional
)

tech Get Paginated Contents - Get contents by using either a parent id or a metadata filter in UniqueQL language. If both are defined, the function will throw an error.

Example of metadata filter defined in UniqueQL:

py

metadataFilter: {
    "or": [\
        {\
            "and": [\
                {\
                    "operator": "contains",\
                    "path": [\
                        "folderIdPath"\
                    ],\
                    "value": "uniquepathid://test_id"\
                },\
                {\
                    "operator": "contains",\
                    "path": [\
                        "title"\
                    ],\
                    "value": "ai"\
                }\
            ]\
        }\
    ]
},

Pagination is also enabled for this functionality, and the default number of returned results is 50 with no entries skipped. Use the following parameters to get the desired page:

Here is an example of retrieving the first 3 content infos that are in the scope_abcdibgznc4bkdcx120zm5d scope and have the value ai in the title.

py

content_info_result = unique_sdk.Content.get_infos(
    user_id=user_id,
    company_id=company_id,
    metadataFilter={
        "or": [\
            {\
                "and": [\
                    {\
                        "operator": "contains",\
                        "path": [\
                            "folderIdPath"\
                        ],\
                        "value": "scope_abcdibgznc4bkdcx120zm5d"\
                    },\
                    {\
                        "operator": "contains",\
                        "path": [\
                            "title"\
                        ],\
                        "value": "ai"\
                    }\
                ]\
            }\
        ]
    },
    skip=0,
    take=3,
)

Here is an example of retrieving the contents based on a parentId.

py

content_info_result = unique_sdk.Content.get_infos(
    user_id=user_id,
    company_id=company_id,
    parentId="scope_ahefgj389srjbfejkkk98u"
)

| Author | |