openapi: 3.0.0
info:
title: Portkey Analytics > Graphs Moderations API
description: The Portkey REST API. Please see https://portkey.ai/docs/api-reference for more details.
version: 2.0.0
termsOfService: https://portkey.ai/terms
contact:
name: Portkey Developer Forum
url: https://portkey.wiki/community
license:
name: MIT
url: https://github.com/Portkey-AI/portkey-openapi/blob/master/LICENSE
servers:
- url: https://api.portkey.ai/v1
description: Portkey API Public Endpoint
security:
- Portkey-Key: []
tags:
- name: Moderations
description: Given a input text, outputs if the model classifies it as potentially harmful.
paths:
/moderations:
servers:
- url: https://api.portkey.ai/v1
description: Portkey API Public Endpoint
- url: SELF_HOSTED_GATEWAY_URL
description: Self-Hosted Gateway URL
post:
operationId: createModeration
tags:
- Moderations
summary: 'Identify potentially harmful content in text and images. **Only** works with [OpenAI''s Moderations endpoint](https://platform.openai.com/docs/guides/moderation) currently.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateModerationRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateModerationResponse'
security:
- Portkey-Key: []
Virtual-Key: []
- Portkey-Key: []
Provider-Auth: []
Provider-Name: []
- Portkey-Key: []
Config: []
- Portkey-Key: []
Provider-Auth: []
Provider-Name: []
Custom-Host: []
x-code-samples:
- lang: curl
label: Default
source: "curl https://api.portkey.ai/v1/moderations \\\n -H \"Content-Type: application/json\" \\\n -H \"x-portkey-api-key: $PORTKEY_API_KEY\" \\\n -H \"x-portkey-virtual-key: $PORTKEY_PROVIDER_VIRTUAL_KEY\" \\\n -d '{\n \"input\": \"I want to kill them.\"\n }'\n"
- lang: python
label: Default
source: "from portkey_ai import Portkey\n\nclient = Portkey(\n api_key = \"PORTKEY_API_KEY\",\n virtual_key = \"PROVIDER_VIRTUAL_KEY\"\n)\n\nmoderation = client.moderations.create(input=\"I want to kill them.\")\nprint(moderation)\n"
- lang: javascript
label: Default
source: "import Portkey from 'portkey-ai';\n\nconst client = new Portkey({\n apiKey: 'PORTKEY_API_KEY',\n virtualKey: 'PROVIDER_VIRTUAL_KEY'\n});\n\nasync function main() {\n const moderation = await client.moderations.create({ input: \"I want to kill them.\" });\n\n console.log(moderation);\n}\nmain();\n"
- lang: curl
label: Self-Hosted
source: "curl https://SELF_HOSTED_GATEWAY_URL/moderations \\\n -H \"Content-Type: application/json\" \\\n -H \"x-portkey-api-key: $PORTKEY_API_KEY\" \\\n -H \"x-portkey-virtual-key: $PORTKEY_PROVIDER_VIRTUAL_KEY\" \\\n -d '{\n \"input\": \"I want to kill them.\"\n }'\n"
- lang: python
label: Self-Hosted
source: "from portkey_ai import Portkey\n\nclient = Portkey(\n api_key = \"PORTKEY_API_KEY\",\n base_url=\"SELF_HOSTED_GATEWAY_URL\",\n virtual_key = \"PROVIDER_VIRTUAL_KEY\"\n)\n\nmoderation = client.moderations.create(input=\"I want to kill them.\")\nprint(moderation)\n"
- lang: javascript
label: Self-Hosted
source: "import Portkey from 'portkey-ai';\n\nconst client = new Portkey({\n apiKey: 'PORTKEY_API_KEY',\n virtualKey: 'PROVIDER_VIRTUAL_KEY',\n baseURL: 'SELF_HOSTED_GATEWAY_URL'\n});\n\nasync function main() {\n const moderation = await client.moderations.create({ input: \"I want to kill them.\" });\n\n console.log(moderation);\n}\nmain();\n"
components:
schemas:
CreateModerationRequest:
type: object
properties:
input:
description: The input text to classify
oneOf:
- type: string
default: ''
example: I want to kill them.
- type: array
items:
type: string
default: ''
example: I want to kill them.
model:
description: 'Two content moderations models are available: `text-moderation-stable` and `text-moderation-latest`.
The default is `text-moderation-latest` which will be automatically upgraded over time. This ensures you are always using our most accurate model. If you use `text-moderation-stable`, we will provide advanced notice before updating the model. Accuracy of `text-moderation-stable` may be slightly lower than for `text-moderation-latest`.
'
nullable: false
default: text-moderation-latest
example: text-moderation-stable
anyOf:
- type: string
- type: string
enum:
- text-moderation-latest
- text-moderation-stable
x-oaiTypeLabel: string
required:
- input
CreateModerationResponse:
type: object
description: Represents if a given text input is potentially harmful.
properties:
id:
type: string
description: The unique identifier for the moderation request.
model:
type: string
description: The model used to generate the moderation results.
results:
type: array
description: A list of moderation objects.
items:
type: object
properties:
flagged:
type: boolean
description: Whether any of the below categories are flagged.
categories:
type: object
description: A list of the categories, and whether they are flagged or not.
properties:
hate:
type: boolean
description: Content that expresses, incites, or promotes hate based on race, gender, ethnicity, religion, nationality, sexual orientation, disability status, or caste. Hateful content aimed at non-protected groups (e.g., chess players) is harassment.
hate/threatening:
type: boolean
description: Hateful content that also includes violence or serious harm towards the targeted group based on race, gender, ethnicity, religion, nationality, sexual orientation, disability status, or caste.
harassment:
type: boolean
description: Content that expresses, incites, or promotes harassing language towards any target.
harassment/threatening:
type: boolean
description: Harassment content that also includes violence or serious harm towards any target.
self-harm:
type: boolean
description: Content that promotes, encourages, or depicts acts of self-harm, such as suicide, cutting, and eating disorders.
self-harm/intent:
type: boolean
description: Content where the speaker expresses that they are engaging or intend to engage in acts of self-harm, such as suicide, cutting, and eating disorders.
self-harm/instructions:
type: boolean
description: Content that encourages performing acts of self-harm, such as suicide, cutting, and eating disorders, or that gives instructions or advice on how to commit such acts.
sexual:
type: boolean
description: Content meant to arouse sexual excitement, such as the description of sexual activity, or that promotes sexual services (excluding sex education and wellness).
sexual/minors:
type: boolean
description: Sexual content that includes an individual who is under 18 years old.
violence:
type: boolean
description: Content that depicts death, violence, or physical injury.
violence/graphic:
type: boolean
description: Content that depicts death, violence, or physical injury in graphic detail.
required:
- hate
- hate/threatening
- harassment
- harassment/threatening
- self-harm
- self-harm/intent
- self-harm/instructions
- sexual
- sexual/minors
- violence
- violence/graphic
category_scores:
type: object
description: A list of the categories along with their scores as predicted by model.
properties:
hate:
type: number
description: The score for the category 'hate'.
hate/threatening:
type: number
description: The score for the category 'hate/threatening'.
harassment:
type: number
description: The score for the category 'harassment'.
harassment/threatening:
type: number
description: The score for the category 'harassment/threatening'.
self-harm:
type: number
description: The score for the category 'self-harm'.
self-harm/intent:
type: number
description: The score for the category 'self-harm/intent'.
self-harm/instructions:
type: number
description: The score for the category 'self-harm/instructions'.
sexual:
type: number
description: The score for the category 'sexual'.
sexual/minors:
type: number
description: The score for the category 'sexual/minors'.
violence:
type: number
description: The score for the category 'violence'.
violence/graphic:
type: number
description: The score for the category 'violence/graphic'.
required:
- hate
- hate/threatening
- harassment
- harassment/threatening
- self-harm
- self-harm/intent
- self-harm/instructions
- sexual
- sexual/minors
- violence
- violence/graphic
required:
- flagged
- categories
- category_scores
required:
- id
- model
- results
securitySchemes:
Portkey-Key:
type: apiKey
in: header
name: x-portkey-api-key
Virtual-Key:
type: apiKey
in: header
name: x-portkey-virtual-key
Provider-Auth:
type: http
scheme: bearer
Provider-Name:
type: apiKey
in: header
name: x-portkey-provider
Config:
type: apiKey
in: header
name: x-portkey-config
Custom-Host:
type: apiKey
in: header
name: x-portkey-custom-host
x-server-groups:
ControlPlaneServers:
- url: https://api.portkey.ai/v1
description: Portkey API Public Endpoint
- url: SELF_HOSTED_CONTROL_PLANE_URL
description: Self-Hosted Control Plane URL
DataPlaneServers:
- url: https://api.portkey.ai/v1
description: Portkey API Public Endpoint
- url: SELF_HOSTED_GATEWAY_URL
description: Self-Hosted Gateway URL
PublicServers:
- url: https://api.portkey.ai
description: Portkey Public API (no auth required)
x-mint:
mcp:
enabled: true
name: Portkey MCP
description: Official MCP Server for Portkey Docs & APIs
x-code-samples:
navigationGroups:
- id: endpoints
title: Endpoints
- id: assistants
title: Assistants
- id: legacy
title: Legacy
groups:
- id: audio
title: Audio
description: 'Learn how to turn audio into text or text into audio.
Related guide: [Speech to text](https://platform.openai.com/docs/guides/speech-to-text)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createSpeech
path: createSpeech
- type: endpoint
key: createTranscription
path: createTranscription
- type: endpoint
key: createTranslation
path: createTranslation
- type: object
key: CreateTranscriptionResponseJson
path: json-object
- type: object
key: CreateTranscriptionResponseVerboseJson
path: verbose-json-object
- id: chat
title: Chat
description: 'Given a list of messages comprising a conversation, the model will return a response.
Related guide: [Chat Completions](https://platform.openai.com/docs/guides/text-generation)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createChatCompletion
path: create
- type: object
key: CreateChatCompletionResponse
path: object
- type: object
key: CreateChatCompletionStreamResponse
path: streaming
- id: realtime
title: Realtime
description: 'WebSocket proxy for provider Realtime APIs (`GET` upgrade). Use `wss://` with the same `/v1` data-plane base as other gateway routes.
Related guide: [OpenAI Realtime API](https://platform.openai.com/docs/guides/realtime)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: connectRealtime
path: connect
- id: embeddings
title: Embeddings
description: 'Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.
Related guide: [Embeddings](https://platform.openai.com/docs/guides/embeddings)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createEmbedding
path: create
- type: object
key: Embedding
path: object
- id: rerank
title: Rerank
description: 'Rerank a list of documents based on their relevance to a query. Reranking improves search results by scoring documents based on semantic relevance rather than keyword matching.
Supported providers: Cohere, Voyage, Jina, Pinecone, Bedrock, Azure AI.
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createRerank
path: create
- type: object
key: CreateRerankResponse
path: object
- id: fine-tuning
title: Fine-tuning
description: 'Manage fine-tuning jobs to tailor a model to your specific training data.
Related guide: [Fine-tune models](https://platform.openai.com/docs/guides/fine-tuning)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createFineTuningJob
path: create
- type: endpoint
key: listPaginatedFineTuningJobs
path: list
- type: endpoint
key: listFineTuningEvents
path: list-events
- type: endpoint
key: listFineTuningJobCheckpoints
path: list-checkpoints
- type: endpoint
key: retrieveFineTuningJob
path: retrieve
- type: endpoint
key: cancelFineTuningJob
path: cancel
- type: object
key: FinetuneChatRequestInput
path: chat-input
- type: object
key: FinetuneCompletionRequestInput
path: completions-input
- type: object
key: FineTuningJob
path: object
- type: object
key: FineTuningJobEvent
path: event-object
- type: object
key: FineTuningJobCheckpoint
path: checkpoint-object
- id: batch
title: Batch
description: 'Create large batches of API requests for asynchronous processing. The Batch API returns completions within 24 hours for a 50% discount.
Related guide: [Batch](https://platform.openai.com/docs/guides/batch)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createBatch
path: create
- type: endpoint
key: retrieveBatch
path: retrieve
- type: endpoint
key: cancelBatch
path: cancel
- type: endpoint
key: listBatches
path: list
- type: object
key: Batch
path: object
- type: object
key: BatchRequestInput
path: request-input
- type: object
key: BatchRequestOutput
path: request-output
- id: files
title: Files
description: 'Files are used to upload documents that can be used with features like [Assistants](https://platform.openai.com/docs/api-reference/assistants), [Fine-tuning](https://platform.openai.com/docs/api-reference/fine-tuning), and [Batch API](https://platform.openai.com/docs/guides/batch).
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createFile
path: create
- type: endpoint
key: listFiles
path: list
- type: endpoint
key: retrieveFile
path: retrieve
- type: endpoint
key: deleteFile
path: delete
- type: endpoint
key: downloadFile
path: retrieve-contents
- type: object
key: OpenAIFile
path: object
- id: images
title: Images
description: 'Given a prompt and/or an input image, the model will generate a new image.
Related guide: [Image generation](https://platform.openai.com/docs/guides/images)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createImage
path: create
- type: endpoint
key: createImageEdit
path: createEdit
- type: endpoint
key: createImageVariation
path: createVariation
- type: object
key: Image
path: object
- id: models
title: Models
description: 'List and describe the various models available in the API. You can refer to the [Models](https://platform.openai.com/docs/models) documentation to understand what models are available and the differences between them.
'
navigationGroup: endpoints
sections:
- type: endpoint
key: listModels
path: list
- type: endpoint
key: retrieveModel
path: retrieve
- type: endpoint
key: deleteModel
path: delete
- type: object
key: Model
path: object
- id: moderations
title: Moderations
description: 'Given some input text, outputs if the model classifies it as potentially harmful across several categories.
Related guide: [Moderations](https://platform.openai.com/docs/guides/moderation)
'
navigationGroup: endpoints
sections:
- type: endpoint
key: createModeration
path: create
- type: object
key: CreateModerationResponse
path: object
- id: assistants
title: Assistants
beta: true
description: 'Build assistants that can call models and use tools to perform tasks.
[Get started with the Assistants API](https://platform.openai.com/docs/assistants)
'
navigationGroup: assistants
sections:
- type: endpoint
key: createAssistant
path: createAssistant
- type: endpoint
key: listAssistants
path: listAssistants
- type: endpoint
key: getAssistant
path: getAssistant
- type: endpoint
key: modifyAssistant
path: modifyAssistant
- type: endpoint
key: deleteAssistant
path: deleteAssistant
- type: object
key: AssistantObject
path: object
- id: threads
title: Threads
beta: true
description: 'Create threads that assistants can interact with.
Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview)
'
navigationGroup: assistants
sections:
- type: endpoint
key: createThread
path: createThread
- type: endpoint
key: getThread
path: getThread
- type: endpoint
key: modifyThread
path: modifyThread
- type: endpoint
key: deleteThread
path: deleteThread
- type: object
key: ThreadObject
path: object
- id: messages
title: Messages
beta: true
description: 'Create messages within threads
Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview)
'
navigationGroup: assistants
sections:
- type: endpoint
key: createMessage
path: createMessage
- type: endpoint
key: listMessages
path: listMessages
- type: endpoint
key: getMessage
path: getMessage
- type: endpoint
key: modifyMessage
path: modifyMessage
- type: endpoint
key: deleteMessage
path: deleteMessage
- type: object
key: MessageObject
path: object
- id: runs
title: Runs
beta: true
description: 'Represents an execution run on a thread.
Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview)
'
navigationGroup: assistants
sections:
- type: endpoint
key: createRun
path: createRun
- type: endpoint
key: createThreadAndRun
path: createThreadAndRun
- type: endpoint
key: listRuns
path: listRuns
- type: endpoint
key: getRun
path: getRun
- type: endpoint
key: modifyRun
path: modifyRun
- type: endpoint
key: submitToolOuputsToRun
path: submitToolOutputs
- type: endpoint
key: cancelRun
path: cancelRun
- type: object
key: RunObject
path: object
- id: run-steps
title: Run Steps
beta: true
description: 'Represents the steps (model and tool calls) taken during the run.
Related guide: [Assistants](https://platform.openai.com/docs/assistants/overview)
'
navigationGroup: assistants
sections:
- type: endpoint
key: listRunSteps
path: listRunSteps
- type: endpoint
key: getRunStep
path: getRunStep
- type: object
key: RunStepObject
path: step-object
- id: vector-stores
title: Vector Stores
beta: true
description: 'Vector stores are used to store files for use by the `file_search` tool.
Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search)
'
navigationGroup: assistants
sections:
- type: endpoint
key: createVectorStore
path: create
- type: endpoint
key: listVectorStores
path: list
- type: endpoint
key: getVectorStore
path: retrieve
- type: endpoint
key: modifyVectorStore
path: modify
- type: endpoint
key: deleteVectorStore
path: delete
- type: object
key: VectorStoreObject
path: object
- id: vector-stores-files
title: Vector Store Files
beta: true
description: 'Vector store files represent files inside a vector store.
Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search)
'
navigationGroup: assistants
sections:
- type: endpoint
key: createVectorStoreFile
path: createFile
- type: endpoint
key: listVectorStoreFiles
path: listFiles
- type: endpoint
key: getVectorStoreFile
path: getFile
- type: endpoint
key: deleteVectorStoreFile
path: deleteFile
- type: object
key: VectorStoreFileObject
path: file-object
- id: vector-stores-file-batches
title: Vector Store File Batches
beta: true
description: 'Vector store file batches represent operations to add multiple files to a vector store.
Related guide: [File Search](https://platform.openai.com/docs/assistants/tools/file-search)
'
navigationGroup: assistants
sections:
- type: endpoint
key: createVectorStoreFileBatch
path: createBatch
- type: endpoint
key: getVectorStoreFileBatch
path: getBatch
- type: endpoint
key: cancelVectorStoreFileBatch
path: cancelBatch
- type: endpoint
key: listFilesInVectorStoreBatch
path: listBatchFiles
- type: object
key: VectorStoreFileBatchObject
path: batch-object
- id: assistants-streaming
title: Streaming
beta: true
description: 'Stream the result of executing a Run or resuming a Run after submitting tool outputs.
You can stream events from the [Create Thread and Run](https://platform.openai.com/docs/api-reference/runs/createThreadAndRun),
[Create Run](https://platform.openai.com/docs/api-reference/runs/createRun), and [Submit Tool Outputs](https://platform.openai.com/docs/api-reference/runs/submitToolOutputs)
endpoints by passing `"stream": true`. The response will be a [Server-Sent events](https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events) stream.
Our Node and Python SDKs provide helpful utilities to make streaming easy. Reference the
[Assistants API quickstart](https://platform.openai.com/docs/assistants/overview) to learn more.
'
navigationGroup: assistants
sections:
- type: object
key: MessageDeltaObject
path: message-delta-object
- type: object
key: RunStepDeltaObject
path: run-step-delta-object
- type: object
key: AssistantStreamEvent
path: events
- id: completions
title: Completions
legacy: true
navigationGroup: legacy
description: 'Given a prompt, the model will return one or more predicted completions along with the probabilities of alternative tokens at each position. Most developer should use our [Chat Completions API](https://platform.openai.com/docs/guides/text-generation/text-generation-models) to leverage our best and newest models.
'
sections:
- type: endpoint
key: createCompletion
path: create
- type: object
key: CreateCompletionResponse
path: object