Skip to main content

PeakPrivacy Assistants API

PeakPrivacy’s Assistants API lets you create, update, delete, list, and query AI assistants using models like GPT-4 or Mistral, with options for temperature, instructions, and anonymization.

K
Written by Katja Gersdorf
Updated over 3 months ago

Auth

HEADERS

Key

Value

Api-token

api_token from

X-Requested-With

XMLHttpRequest

Accept

application/json

401 - Unauthenticated; API Token is invalid or expired OR Subscription is inactive

{
"error": "Unauthenticated"
}

POST Create Assistant

https://api.peakprivacy.ch/v1/ai/assistants

REQUEST BODY SCHEMA: application/json

Key

Value

name

string (required)

Assistant Name

model

string (required)
Specifies the model which will be applied to the assistant by default
Supported models :
gpt-4-1106-preview
gpt-4
gpt-3.5-turbo-1106
mistral-tiny
mistral-small
mistral-medium
mistral-swiss

instructions

text (optional)
Additional instructions for the assistant.
Example: 'Please provide the answer in Spanish'

temperature

number (required)
[ 0 .. 1 ]
What sampling temperature to use, between 0.0 and 1.0. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

anonymize

boolean (required)
Default: true
Whether to use anonymization for the prompt. Might slightly increase response time due to anonymzation & deanonymization algorithms work.

file_ids

array of strings (optional)
IDs of files to be attached to the assistant

REQUEST BODY EXAMPLE

{
"name": "Invoices",
"model": "mistral-swiss",
"instructions": "Please provide the answer in Spanish",

"temperature": 0.5,
"anonymize": true,
"file_ids": ["b7454f54-aa96-4306-b64d-83343d7bf4a4"]
}

Example request

curl --location --request POST 'https://api.peakprivacy.ch/v1/ai/assistants' \
--header 'Api-token: api-token' \
--header 'X-Requested-With: XMLHttpRequest' \
--header 'Accept: application/json' \
--header 'Content-Type:/ application/json' \
--data '{
"name": "Invoices",
"model": "mistral-swiss",
"instructions": "Please provide the answer in Spanish",

"temperature": 0.5,
"anonymize": true,
"file_ids": ["b7454f54-aa96-4306-b64d-83343d7bf4a4"]
}'

Possible Responses

201 - Success

{
"id": "7ca6999d-3ed4-47d7-8915-4df8aab6c989",
"name": "Invoices",
"model": "mistral-swiss",
"instructions": "Please provide the answer in Spanish",
"temperature": 0.5,
"anonymize": true,
"files": [
{
"id": "b7454f54-aa96-4306-b64d-83343d7bf4a4",
"name": "twint_pat_instructions_1.pdf",
"ext": "pdf",
"size": "2371319",
"mimetype": "application/pdf"
}
]
}

422 - Validation Error

{
"message": "Validation error",
"errors": {
"model": [
"The model field must be a string.",
"The selected model is invalid."
],
"name": [
"The name field is required."
]
}
}

PUT Update Assistant

https://api.peakprivacy.ch/v1/ai/assistants/{id}

REQUEST BODY SCHEMA: application/json

Key

Value

name

string
Assistant Name

model

string
Specifies the model which will be applied to the assistant by default
Supported models :
gpt-4-1106-preview
gpt-4
gpt-3.5-turbo-1106
mistral-tiny
mistral-small
mistral-medium
mistral-swiss

instructions

text
Additional instructions for the assistant.
Example: 'Please provide the answer in Spanish'

temperature

number
[ 0 .. 1 ]
What sampling temperature to use, between 0.0 and 1.0. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

anonymize

boolean
Whether to use anonymization for the prompt. Might slightly increase response time due to anonymzation & deanonymization algorithms work.

file_ids

array of strings (optional)
IDs of files to be attached to the assistant
NOTE: update is performed with 'sync' logic, so if some of attached files are absent in the provided array, they will be detached of the assistant. Empty array will detach all files. To leave files list untouched don't send this parameter

REQUEST BODY EXAMPLE

{
"name": "Assistant Name UPDATED",
"model": "mistral-swiss",
"instructions": "Please provide the answer in Spanish",
"temperature": 0.7,
"anonymize": true,
"file_ids": ["b7454f54-aa96-4306-b64d-83343d7bf4a4"]
}

Example request

curl --location --request PUT 'https://api.peakprivacy.ch/v1/ai/assistants/d9ba620b-4b8b-4ded-89be-d93b08ad786d' \
--header 'Api-token: api-token' \
--header 'X-Requested-With: XMLHttpRequest' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"name": "Assistant Name UPDATED",
"model": "mistral-swiss",
"instructions": "Please provide the answer in Spanish",
"temperature": 0.7,
"anonymize": true,
"file_ids": ["b7454f54-aa96-4306-b64d-83343d7bf4a4"]
}'

Possible Responses

200 - Success

{
"id": "d9ba620b-4b8b-4ded-89be-d93b08ad786d",
"name": "Assistant Name UPDATED",
"model": "mistral-swiss",
"instructions": "Please provide the answer in Spanish",
"temperature": 0.7,
"anonymize": true,
"files": [
{
"id": "b7454f54-aa96-4306-b64d-83343d7bf4a4",
"name": "twint_pat_instructions_1.pdf",
"ext": "pdf",
"size": "2371319",
"mimetype": "application/pdf"
}
]
}

422 - Validation Error

{
"message": "Validation error",
"errors": {
"model": [
"The model field must be a string.",
"The selected model is invalid."
],
"name": [
"The name field is required."
]
}
}

404 - Not Found

{
"error": "Not found"
}

GET Retrieve Assistant

https://api.peakprivacy.ch/v1/ai/assistants/{id}

Example request

curl --location --request GET 'https://api.peakprivacy.ch/v1/ai/assistants/c33a8b18-c82a-4955-a449-515001848b1f' \
--header 'Api-token: api-token' \
--header 'X-Requested-With: XMLHttpRequest' \
--header 'Accept: application/json'

Possible Responses

200 - Success

{
"id": "c33a8b18-c82a-4955-a449-515001848b1f",
"name": "Assistant Name_UPDATED",
"model": "gpt-3.5-turbo-1106",
"instructions": "context_UPDATED (PUT)",
"temperature": 0.7,
"anonymize": true,
"files": [
{
"id": "b7454f54-aa96-4306-b64d-83343d7bf4a4",
"name": "twint_pat_instructions_1.pdf",
"ext": "pdf",
"size": "2371319",
"mimetype": "application/pdf"
}
]
}

404 - Not Found

{
"error": "Not found"
}

GET Assistants paginated list

https://api.peakprivacy.ch/v1/ai/assistants

GET Parameters

Key

Value

limit

int (optional)
default: 20
Per page items

cursor

string (optional)
Pagination cursor

Example request

curl --location --request GET 'https://api.peakprivacy.ch/v1/ai/assistants?limit=6' \
--header 'API-TOKEN: api-token' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'

Possible Responses

200 - Success

{
"data": [
{
"uuid": "8147e92d-2b98-4719-8ba1-d6a3a968e4cf",
"name": "Invoices",
"model": null,
"instructions": null,
"files": []
},
{
"uuid": "98369e03-2aaa-4810-89c6-d05157965738",
"name": "Invoices",
"model": null,
"instructions": null,
"files": [
{
"id": "fc2930a6-8d3f-4d8f-bb2f-5f75cced1aa6",
"name": "test-2",
"ext": "txt",
"size": "12345",
"mimetype": "text/plain-text"
}
]
}
],
"links": {
"first": null,
"last": null,
"prev": null,
"next": "{{ $frontmatter.global.apiUrl }}/v1/ai/assistants?cursor=eyJhc3Npc3RhbnRzLmlkIjoyLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9"
},
"meta": {
"path": "{{ $frontmatter.global.apiUrl }}/v1/ai/assistants",
"per_page": 2,
"next_cursor": "eyJhc3Npc3RhbnRzLmlkIjoyLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9",
"prev_cursor": null
}
}

DELETE Delete Assistant

https://api.peakprivacy.ch/v1/ai/assistants/{id}

Example request

curl --location --request DELETE 'https://api.peakprivacy.ch/v1/ai/assistants/a4904bba-e854-4709-9e48-8cbc149fff35' \
--header 'Api-token: api_token' \
--header 'X-Requested-With: XMLHttpRequest' \
--header 'Accept: application/json' \

Possible Responses

204 - Success

NO CONTENT

404 - Not Found

{
"error": "Not found"
}

POST Ask Assistant

https://api.peakprivacy.ch/v1/ai/assistants/{id}/ask

REQUEST BODY SCHEMA: application/json

Key

Value

messages

required
Array of objects
The prompt(s) to generate completions for, encoded as a list of dict with role and content.

Following params are optional and override corresponding Assistant params

model

string
Specifies the version of the GPT model to be used.
Supported models :
gpt-4-1106-preview
gpt-4
gpt-3.5-turbo-1106
mistral-tiny
mistral-small
mistral-medium
mistral-swiss

temperature

number or null [ 0 .. 1 ]
What sampling temperature to use, between 0.0 and 1.0. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

anonymize

boolean or null
Whether to use anonymization for the prompt. Might slightly increase response time due to anonymzation & deanonymization algorithms work.

messages SCHEMA:

Key

Value

role

string
system user assistant
Specifies the LLM the prompt will be sent to

content

string

BODY raw

{
"model": "mistral-swiss",
"messages": [

{
"role": "user",
"content": "Create a summary of all my documents"
}
],
"temperature": 0.2,
"anonymize" : true
}

Example request

curl --location --request POST 'https://api.peakprivacy.ch/v1/ai/assistants/c33a8b18-c82a-4955-a449-515001848b1f/ask' \
--header 'API-TOKEN: api-token' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "user",
"content": "create document summary"
}
]
}'

Possible Responses

RESPONSE SCHEMA: application/json

Key

Value

id

string

object

string

created

integer

model

string

choices

Array of objects

usage

object

choices SCHEMA: application/json

Key

Value

finish_reason

string

index

string

message

object

message SCHEMA: application/json

Key

Value

role

string

content

string

usage SCHEMA: application/json

Key

Value

completion_tokens

integer

prompt_tokens

integer

total_tokens

integer

200 - Sucess

{
"id": "2820e9eb-22e9-40c6-a2fb-07d7ee06453d",
"object": "chat.completion",
"created": 1710243743,
"model": "mistral-swiss",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "The document contains instructions for downloading and using the TWINT configurator app, including information on selecting the app environment, version, and build, onboarding the app, topping up credit, and updating the app. It also provides details for iOS and Android devices.",
"role": "assistant"
}
}
],
"usage": {
"completion_tokens": 54,
"prompt_tokens": 1196,
"total_tokens": 1250
}
}

422 - Unprocessable Entity; Validation Error

{
"message": "The model field is required.",
"errors": {
"model": [
"The selected model is invalid."
]
}
}

404 - Assistant Not Found

{
"error": "Not found"
}

Did this answer your question?