Tadeus Integration API

REST API to create interview templates and campaigns, invite participants singly or in bulk, create anonymous sessions, and retrieve transcripts, structured results, and cross-session AI insights. 47 operations across templates, campaigns, sessions, attempts, transcripts, results, insights, organisation and billing. API-key-pair auth via X-API-KEY-ID and X-API-SECRET headers on every request.

OpenAPI Specification

tadeus-api-integration-openapi.json Raw ↑
{
  "swagger": "2.0",
  "info": {
    "title": "Integration API",
    "description": "API Integration endpoints documentation",
    "version": "v1"
  },
  "host": "app.tadeus.net",
  "schemes": [
    "https"
  ],
  "basePath": "/api/integration/v1",
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "api_key": {
      "type": "apiKey",
      "in": "header",
      "name": "X-API-KEY-ID"
    },
    "api_secret": {
      "type": "apiKey",
      "in": "header",
      "name": "X-API-SECRET"
    }
  },
  "security": [
    {
      "api_key": []
    },
    {
      "api_secret": []
    }
  ],
  "paths": {
    "/attempts/": {
      "get": {
        "operationId": "attempts_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Attempt"
              }
            }
          }
        },
        "tags": [
          "attempts"
        ]
      },
      "parameters": []
    },
    "/attempts/{uuid}/": {
      "get": {
        "operationId": "attempts_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Attempt"
            }
          }
        },
        "tags": [
          "attempts"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/billing/balance/": {
      "get": {
        "operationId": "billing_balance_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/CreditBalance"
              }
            }
          }
        },
        "tags": [
          "billing"
        ]
      },
      "parameters": []
    },
    "/billing/balance/{id}/": {
      "get": {
        "operationId": "billing_balance_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/CreditBalance"
            }
          }
        },
        "tags": [
          "billing"
        ]
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/billing/payments/": {
      "get": {
        "operationId": "billing_payments_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/CreditTransaction"
              }
            }
          }
        },
        "tags": [
          "billing"
        ]
      },
      "parameters": []
    },
    "/billing/payments/{id}/": {
      "get": {
        "operationId": "billing_payments_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/CreditTransaction"
            }
          }
        },
        "tags": [
          "billing"
        ]
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/billing/transactions/": {
      "get": {
        "operationId": "billing_transactions_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/CreditTransaction"
              }
            }
          }
        },
        "tags": [
          "billing"
        ]
      },
      "parameters": []
    },
    "/billing/transactions/{id}/": {
      "get": {
        "operationId": "billing_transactions_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/CreditTransaction"
            }
          }
        },
        "tags": [
          "billing"
        ]
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/campaigns/": {
      "get": {
        "operationId": "campaigns_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Campaign"
              }
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "post": {
        "operationId": "campaigns_create",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "parameters": []
    },
    "/campaigns/{uuid}/": {
      "get": {
        "operationId": "campaigns_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "put": {
        "operationId": "campaigns_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "patch": {
        "operationId": "campaigns_partial_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "delete": {
        "operationId": "campaigns_delete",
        "description": "",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/campaigns/{uuid}/bulk-invite/": {
      "post": {
        "operationId": "campaigns_bulk_invite",
        "description": "Invite several participants at once.\nPOST /api/integration/v1/campaigns/{uuid}/bulk-invite/",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/campaigns/{uuid}/generate-insights/": {
      "post": {
        "operationId": "campaigns_generate_insights",
        "description": "Trigger insights generation for this campaign.\nPOST /api/integration/v1/campaigns/{uuid}/generate-insights/",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/campaigns/{uuid}/invite/": {
      "post": {
        "operationId": "campaigns_invite",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Campaign"
            }
          }
        },
        "tags": [
          "campaigns"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/insights/": {
      "get": {
        "operationId": "insights_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/InsightList"
              }
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "post": {
        "operationId": "insights_create",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "parameters": []
    },
    "/insights/{uuid}/": {
      "get": {
        "operationId": "insights_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "put": {
        "operationId": "insights_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "patch": {
        "operationId": "insights_partial_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "delete": {
        "operationId": "insights_delete",
        "description": "",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "insights"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/insights/{uuid}/html/": {
      "get": {
        "operationId": "insights_html",
        "description": "Return the insight as a rendered HTML document.\nGET /api/integration/v1/insights/{uuid}/html/",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/insights/{uuid}/lexical/": {
      "get": {
        "operationId": "insights_lexical",
        "description": "Return the insight content converted to Lexical format.\nGET /api/integration/v1/insights/{uuid}/lexical/",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/insights/{uuid}/md/": {
      "get": {
        "operationId": "insights_markdown",
        "description": "Return the insight content as a Markdown document.\nGET /api/integration/v1/insights/{uuid}/md/",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/insights/{uuid}/pdf/": {
      "get": {
        "operationId": "insights_pdf",
        "description": "Return the insight as a downloadable PDF.\nGET /api/integration/v1/insights/{uuid}/pdf/",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Insight"
            }
          }
        },
        "tags": [
          "insights"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/organisation/": {
      "get": {
        "operationId": "organisation_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Organisation"
              }
            }
          }
        },
        "tags": [
          "organisation"
        ]
      },
      "parameters": []
    },
    "/organisation/{id}/": {
      "get": {
        "operationId": "organisation_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Organisation"
            }
          }
        },
        "tags": [
          "organisation"
        ]
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/results/": {
      "get": {
        "operationId": "results_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Result"
              }
            }
          }
        },
        "tags": [
          "results"
        ]
      },
      "parameters": []
    },
    "/results/export/csv/": {
      "get": {
        "operationId": "results_export_export_csv",
        "description": "Download all results as a CSV file, with output_json fields flattened as columns.\nGET /api/integration/v1/results/export/csv/",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Result"
              }
            }
          }
        },
        "tags": [
          "results"
        ]
      },
      "parameters": []
    },
    "/results/export/json/": {
      "get": {
        "operationId": "results_export_export_json",
        "description": "Download all results as a JSON file.\nGET /api/integration/v1/results/export/json/",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Result"
              }
            }
          }
        },
        "tags": [
          "results"
        ]
      },
      "parameters": []
    },
    "/results/{uuid}/": {
      "get": {
        "operationId": "results_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Result"
            }
          }
        },
        "tags": [
          "results"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/sessions/": {
      "get": {
        "operationId": "sessions_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Session"
              }
            }
          }
        },
        "tags": [
          "sessions"
        ]
      },
      "post": {
        "operationId": "sessions_create",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Session"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Session"
            }
          }
        },
        "tags": [
          "sessions"
        ]
      },
      "parameters": []
    },
    "/sessions/{uuid}/": {
      "get": {
        "operationId": "sessions_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Session"
            }
          }
        },
        "tags": [
          "sessions"
        ]
      },
      "put": {
        "operationId": "sessions_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Session"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Session"
            }
          }
        },
        "tags": [
          "sessions"
        ]
      },
      "patch": {
        "operationId": "sessions_partial_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Session"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Session"
            }
          }
        },
        "tags": [
          "sessions"
        ]
      },
      "delete": {
        "operationId": "sessions_delete",
        "description": "",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "sessions"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/templates/": {
      "get": {
        "operationId": "templates_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Template"
              }
            }
          }
        },
        "tags": [
          "templates"
        ]
      },
      "post": {
        "operationId": "templates_create",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        },
        "tags": [
          "templates"
        ]
      },
      "parameters": []
    },
    "/templates/{uuid}/": {
      "get": {
        "operationId": "templates_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        },
        "tags": [
          "templates"
        ]
      },
      "put": {
        "operationId": "templates_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        },
        "tags": [
          "templates"
        ]
      },
      "patch": {
        "operationId": "templates_partial_update",
        "description": "",
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        },
        "tags": [
          "templates"
        ]
      },
      "delete": {
        "operationId": "templates_delete",
        "description": "",
        "parameters": [],
        "responses": {
          "204": {
            "description": ""
          }
        },
        "tags": [
          "templates"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/transcripts/": {
      "get": {
        "operationId": "transcripts_list",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Transcript"
              }
            }
          }
        },
        "tags": [
          "transcripts"
        ]
      },
      "parameters": []
    },
    "/transcripts/{uuid}/": {
      "get": {
        "operationId": "transcripts_read",
        "description": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/Transcript"
            }
          }
        },
        "tags": [
          "transcripts"
        ]
      },
      "parameters": [
        {
          "name": "uuid",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    }
  },
  "definitions": {
    "Attempt": {
      "required": [
        "session_uuid"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Uuid",
          "type": "string",
          "format": "uuid",
          "readOnly": true
        },
        "session_uuid": {
          "title": "Session uuid",
          "type": "string",
          "format": "uuid"
        },
        "attempt_number": {
          "title": "Attempt number",
          "type": "integer",
          "readOnly": true
        },
        "state": {
          "title": "State",
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "succeeded",
            "failed"
          ]
        },
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "start_ts": {
          "title": "Start ts",
          "description": "Server side call started timestamp",
          "type": "string",
          "format": "date-time",
          "x-nullable": true
        },
        "end_ts": {
          "title": "End ts",
          "description": "Server side call ended timestamp",
          "type": "string",
          "format": "date-time",
          "x-nullable": true
        },
        "finish_reason": {
          "title": "Finish reason",
          "description": "Reason for interview completion",
          "type": "string",
          "maxLength": 64,
          "x-nullable": true
        },
        "sentiment": {
          "title": "Sentiment",
          "description": "Sentiment score -1.0-1.0",
          "type": "number",
          "x-nullable": true
        },
        "confidence": {
          "title": "Confidence",
          "description": "Confidence score 0.0-1.0",
          "type": "number",
          "x-nullable": true
        },
        "engagement": {
          "title": "Engagement",
          "description": "Engagement score 0.0-1.0",
          "type": "number",
          "x-nullable": true
        },
        "created_at": {
          "title": "Created at",
          "type": "string",
          "format": "date-time",
          "readOnly": true
        }
      }
    },
    "CreditBalance": {
      "type": "object",
      "properties": {
        "balance": {
          "title": "Balance",
          "description": "Integer credits, 10 Credits = $0.01",
          "type": "integer",
          "maximum": 2147483647,
          "minimum": -2147483648
        },
        "total_deposited": {
          "title": "Total deposited",
          "type": "string",
          "readOnly": true
        },
        "updated_at": {
          "title": "Updated at",
          "type": "string",
          "format": "date-time",
          "readOnly": true
        }
      }
    },
    "CreditTransaction": {
      "required": [
        "amount"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Id",
          "type": "string",
          "format": "uuid",
          "readOnly": true
        },
        "amount": {
          "title": "Amount",
          "description": "Positive = grant, negative = debit; 10 Credits = $0.01",
          "type": "integer",
          "maximum": 2147483647,
          "minimum": -2147483648
        },
        "source": {
          "title": "Source",
          "type": "string",
          "enum": [
            "topup",
            "subscription",
            "usage",
            "refund",
            "admin",
            "adjustment"
          ]
        },
        "reason": {
          "title": "Reason",
          "type": "string",
          "maxLength": 255
        },
        "timestamp": {
          "title": "Timestamp",
          "type": "string",
          "format": "date-time"
        },
        "balance_after": {
          "title": "Balance after",
          "description": "Balance after this transaction",
          "type": "integer",
          "maximum": 2147483647,
          "minimum": -2147483648,
          "x-nullable": true
        }
      }
    },
    "Campaign": {
      "required": [
        "name",
        "template_uuid"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Uuid",
          "description": "Unique campaign identifier",
          "type": "string",
          "format": "uuid",
          "readOnly": true
        },
        "name": {
          "title": "Name",
          "description": "Campaign name",
          "type": "string",
          "maxLength": 255,
          "minLength": 1
        },
        "template_uuid": {
          "title": "Template uuid",
          "type": "string",
          "format": "uuid"
        },
        "start_at": {
          "title": "Start at",
          "description": "Campaign start time",
          "type": "string",
          "format": "date-time",
          "x-nullable": true
        },
        "end_at": {
          "title": "End at",
          "description": "Campaign end time",
          "type": "string",
          "format": "date-time",
          "x-nullable": true
        },
        "settings": {
          "title": "Settings",
          "description": "Campaign-specific settings overrides",
          "type": "object"
        },
        "active": {
          "title": "Active",
          "type": "boolean"
        },
        "type": {
          "title": "Type",
          "description": "Campaign type (e.g. Survey, Tutoring)",
          "type": "string",
          "enum": [
            "survey",
            "tutoring"
          ]
        },
        "access_type": {
          "title": "Access type",
          "description": "Access control: Open (public link) or Invite Only",
          "type": "string",
          "enum": [
            "open",
            "invite_only"
          ]
        },
        "max_sessions": {
          "title": "Max sessions",
          "description": "Maximum number of sessions allowed (protection cap)",
          "type": "integer",
          "maximum": 2147483647,
          "minimum": -2147483648,
          "x-nullable": true
        },
        "created_at": {
          "title": "Created at",
          "type": "string",
          "format": "date-time",
          "readOnly": true
        }
      }
    },
    "InsightList": {
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Uuid",
          "description": "Unique insight identifier",
          "type": "string",
          "format": "uuid"
        },
        "created_at": {
          "title": "Created at",
          "type": "string",
          "format": "date-time",
          "readOnly": true
        }
      }
    },
    "Insight": {
      "required": [
        "content"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Uuid",
          "description": "Unique insight identifier",
          "type": "stri

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tadeus-api/refs/heads/main/openapi/tadeus-api-integration-openapi.json