Braintrust Projects API
The Projects API from Braintrust — 2 operation(s) for projects.
The Projects API from Braintrust — 2 operation(s) for projects.
openapi: 3.1.1
info:
version: 1.0.0
title: Braintrust Acls Projects API
description: 'API specification for the backend data server. The API is hosted globally at
https://api.braintrust.dev or in your own environment.
You can access the OpenAPI spec for this API at https://github.com/braintrustdata/braintrust-openapi.'
license:
name: Apache 2.0
servers:
- url: https://api.braintrust.dev
security:
- bearerAuth: []
- {}
tags:
- name: Projects
paths:
/v1/project:
post:
tags:
- Projects
security:
- bearerAuth: []
- {}
operationId: postProject
description: Create a new project. If there is an existing project with the same name as the one specified in the request, will return the existing project unmodified
summary: Create project
requestBody:
description: Any desired information about the new project object
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProject'
responses:
'200':
description: Returns the new project object
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
get:
operationId: getProject
tags:
- Projects
description: List out all projects. The projects are sorted by creation date, with the most recently-created projects coming first
summary: List projects
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/AppLimitParam'
- $ref: '#/components/parameters/StartingAfter'
- $ref: '#/components/parameters/EndingBefore'
- $ref: '#/components/parameters/Ids'
- $ref: '#/components/parameters/ProjectName'
- $ref: '#/components/parameters/OrgName'
responses:
'200':
description: Returns a list of project objects
content:
application/json:
schema:
type: object
properties:
objects:
type: array
items:
$ref: '#/components/schemas/Project'
description: A list of project objects
required:
- objects
additionalProperties: false
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
/v1/project/{project_id}:
get:
operationId: getProjectId
tags:
- Projects
description: Get a project object by its id
summary: Get project
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/ProjectIdParam'
responses:
'200':
description: Returns the project object
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
patch:
operationId: patchProjectId
tags:
- Projects
description: Partially update a project object. Specify the fields to update in the payload. Any object-type fields will be deep-merged with existing content. Currently we do not support removing fields or setting them to null.
summary: Partially update project
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/ProjectIdParam'
requestBody:
description: Fields to update
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/PatchProject'
responses:
'200':
description: Returns the project object
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
delete:
operationId: deleteProjectId
tags:
- Projects
description: Delete a project object by its id
summary: Delete project
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/ProjectIdParam'
responses:
'200':
description: Returns the deleted project object
content:
application/json:
schema:
$ref: '#/components/schemas/Project'
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
components:
schemas:
PatchProject:
type: object
properties:
name:
type: string
nullable: true
description: Name of the project
description:
type: string
nullable: true
user_id:
type: string
nullable: true
settings:
allOf:
- $ref: '#/components/schemas/ProjectSettings'
- description: Project settings. Patch operations replace all settings, so make sure you include all settings you want to keep.
OrgName:
type: string
description: Filter search results to within a particular organization
ProjectSettings:
type: object
nullable: true
properties:
comparison_key:
type: string
nullable: true
description: The key used to join two experiments (defaults to `input`)
baseline_experiment_id:
type: string
nullable: true
format: uuid
description: The id of the experiment to use as the default baseline for comparisons
spanFieldOrder:
type: array
nullable: true
items:
type: object
properties:
object_type:
type: string
column_id:
type: string
position:
type: string
layout:
anyOf:
- type: string
enum:
- full
- type: string
enum:
- two_column
- type: 'null'
required:
- object_type
- column_id
- position
description: The order of the fields to display in the trace view
remote_eval_sources:
type: array
nullable: true
items:
type: object
properties:
url:
type: string
name:
type: string
nullable: true
description:
type: string
nullable: true
required:
- url
description: The remote eval sources to use for the project
disable_realtime_queries:
type: boolean
nullable: true
description: If true, disable real-time queries for this project. This can improve query performance for high-volume logs.
default_preprocessor:
$ref: '#/components/schemas/NullableSavedFunctionId'
Project:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the project
org_id:
type: string
format: uuid
description: Unique id for the organization that the project belongs under
name:
type: string
description: Name of the project
description:
type: string
nullable: true
description: Textual description of the project
created:
type: string
nullable: true
format: date-time
description: Date of project creation
deleted_at:
type: string
nullable: true
format: date-time
description: Date of project deletion, or null if the project is still active
user_id:
type: string
nullable: true
format: uuid
description: Identifies the user who created the project
settings:
$ref: '#/components/schemas/ProjectSettings'
required:
- id
- org_id
- name
AppLimitParam:
type: integer
nullable: true
minimum: 0
description: Limit the number of objects to return
Ids:
anyOf:
- type: string
format: uuid
- type: array
items:
type: string
format: uuid
description: Filter search results to a particular set of object IDs. To specify a list of IDs, include the query param multiple times
CreateProject:
type: object
properties:
name:
type: string
minLength: 1
description: Name of the project
description:
type: string
nullable: true
description: Textual description of the project
org_name:
type: string
nullable: true
description: For nearly all users, this parameter should be unnecessary. But in the rare case that your API key belongs to multiple organizations, you may specify the name of the organization the project belongs in.
required:
- name
ProjectName:
type: string
description: Name of the project to search for
FunctionTypeEnum:
type: string
enum:
- llm
- scorer
- task
- tool
- custom_view
- preprocessor
- facet
- classifier
- tag
- parameters
- sandbox
- null
default: scorer
description: The type of global function. Defaults to 'scorer'.
StartingAfter:
type: string
format: uuid
description: 'Pagination cursor id.
For example, if the final item in the last page you fetched had an id of `foo`, pass `starting_after=foo` to fetch the next page. Note: you may only pass one of `starting_after` and `ending_before`'
NullableSavedFunctionId:
anyOf:
- type: object
properties:
type:
type: string
enum:
- function
id:
type: string
version:
type: string
description: The version of the function
required:
- type
- id
title: function
- type: object
properties:
type:
type: string
enum:
- global
name:
type: string
function_type:
$ref: '#/components/schemas/FunctionTypeEnum'
required:
- type
- name
title: global
- type: 'null'
description: Default preprocessor for this project. When set, functions that use preprocessors will use this instead of their built-in default.
ProjectIdParam:
type: string
format: uuid
description: Project id
EndingBefore:
type: string
format: uuid
description: 'Pagination cursor id.
For example, if the initial item in the last page you fetched had an id of `foo`, pass `ending_before=foo` to fetch the previous page. Note: you may only pass one of `starting_after` and `ending_before`'
parameters:
EndingBefore:
schema:
$ref: '#/components/schemas/EndingBefore'
required: false
description: 'Pagination cursor id.
For example, if the initial item in the last page you fetched had an id of `foo`, pass `ending_before=foo` to fetch the previous page. Note: you may only pass one of `starting_after` and `ending_before`'
name: ending_before
in: query
StartingAfter:
schema:
$ref: '#/components/schemas/StartingAfter'
required: false
description: 'Pagination cursor id.
For example, if the final item in the last page you fetched had an id of `foo`, pass `starting_after=foo` to fetch the next page. Note: you may only pass one of `starting_after` and `ending_before`'
name: starting_after
in: query
AppLimitParam:
schema:
$ref: '#/components/schemas/AppLimitParam'
required: false
description: Limit the number of objects to return
name: limit
in: query
ProjectIdParam:
schema:
$ref: '#/components/schemas/ProjectIdParam'
required: true
description: Project id
name: project_id
in: path
Ids:
schema:
$ref: '#/components/schemas/Ids'
required: false
description: Filter search results to a particular set of object IDs. To specify a list of IDs, include the query param multiple times
name: ids
in: query
OrgName:
schema:
$ref: '#/components/schemas/OrgName'
required: false
description: Filter search results to within a particular organization
name: org_name
in: query
allowReserved: true
ProjectName:
schema:
$ref: '#/components/schemas/ProjectName'
required: false
description: Name of the project to search for
name: project_name
in: query
allowReserved: true
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API key or JWT
description: 'Most Braintrust endpoints are authenticated by providing your API key as a header `Authorization: Bearer [api_key]` to your HTTP request. You can create an API key in the Braintrust [organization settings page](https://www.braintrustdata.com/app/settings?subroute=api-keys).'