Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Tettra REST Teams API
description: A limited experimental REST API for automating common Tettra tasks and building custom integrations. Supports creating pages, searching the knowledge base, suggesting new pages, suggesting page updates, and submitting questions. All endpoints require an API key available on Scaling and Enterprise plans.
version: 1.0.0
contact:
url: https://support.tettra.com/api-overview
termsOfService: https://tettra.com/terms/
servers:
- url: https://app.tettra.co/api
description: Tettra API
security:
- apiKey: []
tags:
- name: Teams
paths:
/teams/{team_id}/search:
get:
operationId: searchPages
summary: Search pages
description: Search for pages in the Tettra knowledge base. Results are ranked by page title matches, header matches (H1–H3), and page content. Returns up to 5 results. Omitting the query parameter returns the most recent pages.
parameters:
- name: team_id
in: path
required: true
description: The identifier for the Tettra team.
schema:
type: string
- name: api_key
in: query
required: true
description: Your Tettra API key for authentication.
schema:
type: string
- name: query
in: query
required: false
description: The search term to query the knowledge base. If omitted, the most recent pages are returned.
schema:
type: string
responses:
'200':
description: Successful search response.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
'401':
description: Unauthorized – invalid or missing API key.
'404':
description: Team not found.
tags:
- Teams
/teams/{team_id}/questions:
post:
operationId: createQuestion
summary: Create a question
description: Publish a new question to the Tettra knowledge base. The API key determines the asker of the question. Questions can optionally be assigned to specific users and organized under a category or subcategory.
parameters:
- name: team_id
in: path
required: true
description: The identifier for the Tettra team.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateQuestionRequest'
responses:
'200':
description: Question created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateQuestionResponse'
'401':
description: Unauthorized – invalid or missing API key.
'404':
description: Team not found.
'422':
description: Validation error – missing required fields or invalid values.
tags:
- Teams
components:
schemas:
Category:
type: object
properties:
id:
type: integer
description: Unique identifier for the category.
name:
type: string
description: Name of the category.
url:
type: string
format: uri
description: URL of the category in Tettra.
CreateQuestionResponse:
type: object
properties:
success:
type: boolean
description: Whether the question was created successfully.
question:
type: object
description: The created question object.
properties:
id:
type: integer
description: Unique identifier for the created question.
title:
type: string
description: Title of the question.
url:
type: string
format: uri
description: URL of the question in Tettra.
CreateQuestionRequest:
type: object
required:
- api_key
- title
properties:
api_key:
type: string
description: Your Tettra API key. This determines the asker of the question.
title:
type: string
description: The title of the question.
details:
type: string
description: Additional details about the question, formatted as HTML.
category_id:
type: integer
description: Category identifier for organizing the question.
subcategory_id:
type: integer
description: Subcategory identifier. If provided, must belong to the specified category_id.
assignees:
type: array
description: Array of user IDs to assign the question to.
items:
type: integer
PageResult:
type: object
properties:
id:
type: integer
description: Unique identifier for the page.
title:
type: string
description: Title of the page.
updated_at:
type: string
format: date-time
description: ISO 8601 timestamp of when the page was last updated.
url:
type: string
format: uri
description: URL of the page in Tettra.
content:
type: string
description: Text content of the page.
owner:
type: object
description: The user who owns the page.
properties:
id:
type: integer
description: User identifier.
name:
type: string
description: Display name of the page owner.
category:
$ref: '#/components/schemas/Category'
SearchResponse:
type: object
properties:
success:
type: boolean
description: Whether the search request was successful.
query:
type: string
description: The search term that was used.
pages:
type: array
description: Array of up to 5 matching page results.
items:
$ref: '#/components/schemas/PageResult'
securitySchemes:
apiKey:
type: apiKey
in: query
name: api_key
description: API key for authentication. Available on Scaling and Enterprise plans. Determines the acting user for operations such as creating questions.