Observe.AI Interactions API

Interactions API is an omnichannel API can be used to obtain all the data related to the interactions like Moments, Transcripts and metadata related to Interactions(including Voice calls and Web chat). Please note - Allow 24 hrs to pass before pulling Interactions. ie., For Interactions completed on 14-Jan by 12:00AM PST, they would be available via APIs by 15-Jan by 12:00AM PST. You can pull Interactions for 30 days at a time i.e., the duration between the end_date and the start_date should not exceed 30 days. There is no limit as to how far back in the past you want to go for pulling Interactions. You can go back to the first ever evaluation on the platform unless data retention limits have been set. Interactions API gives a paginated response so the customer need to specify the page number and the desired amount of interactions in a page. By default, page_size is set to 100 There is flexibility to either include or exclude Transcript in the API response by setting a query parameter includeTranscript. By default it is set to false. The S3 URL obtained in the API response (with the interactions) is valid for 24 hours. Clients using ‘Calls report API’ are requested to switch to ‘Interactions API’ which provides several benefits listed here. ‘Calls report API’ will be deprecated after 31-Dec-2022. Please reach out to your CSM for more details. If you have been using Basic Auth for the APIs, we request you to switch to OAuth2.0 based Auth for the APIs by 31-Dec-2022. Detailed instructions to create API Credentials and make the switch to OAuth are documented here. Please reach out to your CSM for more details. If you need to pull Interactions by ID, there is a separate synchronous API - Get Interactions By Ids.

Operations 3

POST /v1/data/reports/interactions #
GET /v1/data/reports/interactions/{request_id} #
POST /v1/data/reports/interactions/ids #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-interaction-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-autoqa-evaluation-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-manual-evaluation-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-coaching-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-interaction-summary-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-agent-performance-assignment-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-audit-assignment-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-autoqa-ack-dispute-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-calibration-assignment-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-contact-reason-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-evaluation-template-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-manual-ack-dispute-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-sentiment-metric-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-team-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-user-login-activity-v1.schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/observeai/refs/heads/main/json-schema/observeai-bulk-export-user-v1.schema.json

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/observeai-interactions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

observeai-interactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Reporting Interactions API
  description: "Reporting APIs are a collection of RESTful APIs that provide a convenient and secure way for integrating reporting data from Observe.AI into external system of your choice. These APIs are asynchronous and render data in a JSON format. Observe.AI uses OAuth 2.0 protocol for authentication of APIs. Please refer to Authentication section to obtain credentials to access Reporting APIs. Below are the 3 APIs that we support -\n      <ol>\n          <li><a href=\"#tag/Interactions\">Interactions API</a>- To fetch Moments, Transcripts and Interactions(Voice calls, Webchat, Email) metadata</li>\n          <li><a href=\"#tag/Evaluations\">Evaluations API</a> - To fetch Evaluation forms and submitted Evaluations along with question-wise scores and aggregate scores.</li>\n          <li><a href=\"#tag/Coachings\"> Coachings API </a> - To fetch Coaching sessions with mapped Evaluations and related Notes.</li>\n          <li><a href=\"#tag/Ack Dispute Flow\"> Ack Dispute API </a> - To fetch Ack/Dispute state changes for Evaluations.</li>\n          <li><a href=\"#tag/Summary\"> Summarization AI API </a> - To fetch GenAI-based Summaries along with Moments, Transcripts and metadata for all Interactions(Voice calls, Webchat).</li>\n      </ol>\n"
  x-logo:
    url: https://cdn.observe.ai/observeaiLogo.png
servers:
- url: https://{base_url}
  description: Generated server url, where `{base_url}` corresponds to the specific cluster's base URL.
tags:
- name: Interactions
  x-displayName: Interactions API
  description: "Interactions API is an omnichannel API can be used to obtain all the data related to the interactions like Moments, Transcripts and metadata related to Interactions(including Voice calls and Web chat).\n\nPlease note -\n<ol>\n  <li>Allow 24 hrs to pass before pulling Interactions. ie., For Interactions completed on 14-Jan by 12:00AM PST, they would be available via APIs by 15-Jan by 12:00AM PST.</li>\n  <li>You can pull Interactions for 30 days at a time i.e., the duration between the end_date and the start_date should not exceed 30 days.</li>\n  <li>There is no limit as to how far back in the past you want to go for pulling Interactions. You can go back to the first ever evaluation on the platform unless data retention limits have been set.</li>\n  <li>Interactions API gives a paginated response so the customer need to specify the page number and the desired amount of interactions in a page. By default, page_size is set to 100</li>\n  <li>There is flexibility to either include or exclude Transcript in the API response by setting a query parameter includeTranscript. By default it is set to false.</li>\n  <li>The S3 URL obtained in the API response (with the interactions) is valid for 24 hours.</li>\n  <li>Clients using ‘Calls report API’ are requested to switch to ‘Interactions API’ which provides several benefits listed <a href=\"#tag/CallsReportVsInteractions\">here</a>. ‘Calls report API’ will be deprecated after 31-Dec-2022. Please reach out to your CSM for more details.</li>\n  <li>If you have been using Basic Auth for the APIs, we request you to switch to OAuth2.0 based Auth for the APIs by 31-Dec-2022. Detailed instructions to create API Credentials and make the switch to OAuth are documented <a href=\"#tag/Authentication\">here</a>. Please reach out to your CSM for more details.</li>\n  <li>If you need to pull Interactions by ID, there is a separate synchronous API - <a href=\"#tag/Interactions/operation/Get Interactions By Ids\">Get Interactions By Ids</a>.</li>\n</ol>\n"
paths:
  /v1/data/reports/interactions:
    post:
      tags:
      - Interactions
      operationId: Create Interaction Request
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/InteractionsSize'
      - $ref: '#/components/parameters/IncludeTranscript'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RawJobRequest'
      responses:
        '200':
          description: Ok
          content:
            /*:
              schema:
                $ref: '#/components/schemas/PostJobResponse'
              examples:
                '0':
                  value: '{"request_id":"3058bc09-f9fc-4586-bc7c-498b95a63ec2",<br>"start_date":"2022-03-03T00:00:12.000+00:00","end_date":"2022-04-04T00:16:00.000+00:00","status":"INPROGRESS"}'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code":"bad_request","error_description":"similar job already exists with request id 3058bc09-b974-4468-ae1f-f7b9b28067f1"}'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code": "auth_token_error", "error_description": "invalid auth token"}'
        '403':
          description: Access Denied
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code":"access_denied","error_description":"unauthorized_user"}'
        '404':
          description: Request Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"timestamp":"2022-05-12T06:27:39.587+00:00","status":404,"error":"Not Found","message":"No message available","path":"/v1/data/reports/interaction"}'
        '405':
          description: Method Not Allowed
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"timestamp": "2022-05-17T04:21:37.669+00:00", "status": 405, "error": "Method Not Allowed", "message": "Request method ''GET'' not supported", "path": "/v1/data/reports/interactions"}'
        '429':
          description: Rate Limit Exceeded
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RateLimitMessage'
              examples:
                '0':
                  value: '{"message": "API rate limit exceeded"}'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /v1/data/reports/interactions/{request_id}:
    get:
      tags:
      - Interactions
      operationId: Get Interactions
      parameters:
      - name: request_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: "Report field Description:\n<table>\n  <tr>\n    <th>Param Name</th>\n    <th>Type</th>\n    <th>Description</th>\n  </tr>\n  <tr>\n    <td>page</td>\n    <td>integer</td>\n    <td>The current page number of the response from the total response present between the given date range</td>\n  </tr>\n  <tr>\n    <td>size</td>\n    <td>integer</td>\n    <td>Number of interactions present in the current page</td>\n  </tr>\n  <tr>\n    <td>total_pages</td>\n    <td>integer</td>\n    <td>Total number of pages present for the given date range.</td>\n  </tr>\n  <tr>\n    <td>total_size</td>\n    <td>integer</td>\n    <td>Total number of interactions present for the given date range.</td>\n  </tr>\n  <tr>\n    <td>interactions</td>\n    <td>List</td>\n    <td>This is the list of interactions (call, chat, external) included in the report. Each interaction in this list is associated with an interaction ID. Inside of each interactions following fields can be found.</td>\n  </tr>\n  <tr>\n    <td>id</td>\n    <td>String</td>\n    <td>This id represents the id of that particular interaction</td>\n  </tr>\n  <tr>\n    <td>account_id</td>\n    <td>String</td>\n    <td>This id represents the id of that particular account.</td>\n  </tr>\n  <tr>\n    <td>agent_id</td>\n    <td>String</td>\n    <td>This id represents the id of the agent who has participated in that particular interaction.</td>\n  </tr>\n  <tr>\n    <td>partner_agent_id</td>\n    <td>String</td>\n    <td>This id represents the id of the agent who has participated in that particular interaction in the client system.</td>\n  </tr>\n  <tr>\n    <td>agent_name</td>\n    <td>String</td>\n    <td>The name of the agent who has participated in that particular interaction.</td>\n  </tr>\n  <tr>\n    <td>agent_email</td>\n    <td>String</td>\n    <td>The email of the agent who has participated in that particular interaction.</td>\n  </tr>\n  <tr>\n    <td>agent_status</td>\n    <td>String</td>\n    <td>This is a String field which depicts if the agent is active or not. (ACTIVE or IN_ACTIVE).</td>\n  </tr>\n  <tr>\n    <td>interaction_url</td>\n    <td>String</td>\n    <td>This field represents the url for the particular interaction.</td>\n  </tr>\n  <tr>\n    <td>duration</td>\n    <td>integer</td>\n    <td>This is an integer field which represents how much time (seconds) did the interaction happen.</td>\n  </tr>\n  <tr>\n    <td>source_partner_meeting_id</td>\n    <td>String</td>\n    <td>Incase of split interactions, source_partner_meeting_id is the unique identifier for the interaction before split. source_partner_meeting_id is same as unique identifier in the client system.</td>\n  </tr>\n  <tr>\n    <td>sequence</td>\n    <td>Integer</td>\n    <td>Incase of split interactions, the value of sequence signifies the position of this interaction post split. (Zero based index)</td>\n  </tr>\n  <tr>\n    <td>language</td>\n    <td>String</td>\n    <td>This is a field which represents in which language did the communication happen during the interaction.</td>\n  </tr>\n  <tr>\n    <td>channel</td>\n    <td>String</td>\n    <td>This field represents the type of interaction. (CALL, CHAT, EXTERNAL etc).</td>\n  </tr>\n  <tr>\n    <td>provider_id</td>\n    <td>String</td>\n    <td>The id which originates from the source recording platform.</td>\n  </tr>\n  <tr>\n    <td>transcripts</td>\n    <td>List</td>\n    <td>The list of transcripts of an interaction divided by speaker. The fields under the transcripts are:</td>\n  </tr>\n  <tr>\n    <td>transcripts.phrase</td>\n    <td>String</td>\n    <td>A snippet from the transcript corresponding to one of the two speakers.</td>\n  </tr>\n  <tr>\n    <td>transcripts.speaker</td>\n    <td>String</td>\n    <td>This is the speaker of the phrase - Agent or customer.</td>\n  </tr>\n  <tr>\n    <td>transcripts.start_time</td>\n    <td>integer</td>\n    <td>The phrase start time in milliseconds.</td>\n  </tr>\n  <tr>\n    <td>transcripts.end_time</td>\n    <td>integer</td>\n    <td>The phrase end time in milliseconds.</td>\n  </tr>\n  <tr>\n    <td>transcripts.order</td>\n    <td>integer</td>\n    <td>The position of each phrase in a transcript.</td>\n  </tr>\n  <tr>\n    <td>moment_categories</td>\n    <td>List</td>\n    <td>The list of moment categories contains all the moment categories found in the interactions. The fields under the moment categories are:</td>\n  </tr>\n  <tr>\n    <td>moment_categories.moment_category_id</td>\n    <td>String</td>\n    <td>This id represents that particular moment_category.</td>\n  </tr>\n  <tr>\n    <td>moment_categories.moment_category_name</td>\n    <td>String</td>\n    <td>The name of the particular moment_category.</td>\n  </tr>\n  <tr>\n    <td>moment_categories.moments</td>\n    <td>List</td>\n    <td>The list of moments present under a particular moment category. The fields under the moment are:</td>\n  </tr>\n  <tr>\n    <td>moments.moment_id</td>\n    <td>String</td>\n    <td>The id which represents that particular moment.</td>\n  </tr>\n  <tr>\n    <td>moments.moment_name</td>\n    <td>String</td>\n    <td>The moment name as configured in the Observe.AI userinterface in the 'Moments' tab.</td>\n  </tr>\n  <tr>\n    <td>moments.snippets</td>\n    <td>List</td>\n    <td>The list of phrases from a transcript in which momentswere found. Inside This snippets there are four more fields:</td>\n  </tr>\n  <tr>\n    <td>moments.moment_theme</td>\n    <td>String</td>\n    <td>The moment theme - Positive/Negative/Neutral as configured in the Observe.AI userinterface in the ‘Moments’ tab.</td>\n  </tr>\n  <tr>\n    <td>snippets.evidence</td>\n    <td>String</td>\n    <td>The actual phrase or keyword that matches amoment's criteria.</td>\n  </tr>\n  <tr>\n    <td>snippets.start_time</td>\n    <td>integer</td>\n    <td>The phrase start time in milliseconds.</td>\n  </tr>\n  <tr>\n    <td>snippets.end_time</td>\n    <td>integer</td>\n    <td>The phrase end time in milliseconds.</td>\n  </tr>\n  <tr>\n    <td>snippets.order</td>\n    <td>integer</td>\n    <td>The position of each phrase in a transcript.</td>\n  </tr>\n  <tr>\n    <td>moments.found</td>\n    <td>boolean</td>\n    <td>It determines whether the moment is found in the call or not.</td>\n  </tr>\n  <tr>\n    <td>created_at</td>\n    <td>Date</td>\n    <td>The time at which the interaction was created in the DB.</td>\n  </tr>\n  <tr>\n    <td>updated_at</td>\n    <td>Date</td>\n    <td>The time at which the interaction was last updated.</td>\n  </tr>\n  <tr>\n    <td>interaction_start_time</td>\n    <td>Date</td>\n    <td>The start timestamp of the interaction in ISO time format.</td>\n  </tr>\n  <tr>\n    <td>interaction_meta_data</td>\n    <td>(Key, Value) pair</td>\n    <td>This contains all the interaction metadata which is used to create filters and present in interaction info.</td>\n  </tr>\n</table>\n"
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/GetJobResponse'
              examples:
                '0':
                  value: '{"start_date":"2022-03-03T00:00:12.000+00:00","end_date":"2022-04-04T00:14:00.000+00:00","status":"COMPLETED","url":"https://e2e-data-out.s3.amazonaws.com/reports/interactions/3058bc09-6d4d-4f22-9f69-6992f3520e56.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220510T045319Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=YOUR_AWS_ACCESS_KEY_ID%2FYYYYMMDD%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=YOUR_AWS_SIGNATURE_PLACEHOLDER"}'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code": "auth_token_error", "error_description": "invalid auth token"}'
        '403':
          description: Access Denied
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code":"access_denied","error_description":"unauthorized_user"}'
        '404':
          description: Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code":"resource_not_found","error_description":"jobId 3058bc09-da96-490c-824f-f42646160f0a of type INTERACTION not found or does not belong to the account"}'
                '1':
                  value: '{"timestamp": "2022-05-17T04:23:16.247+00:00", "status": 404, "error": "Not Found", "message": "No message available", "path": "/v1/data/reports/interaction/489690ba-1a58-44f3-9674-b5be9768d313"}'
        '405':
          description: Method Not Allowed
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"timestamp": "2022-05-17T04:21:37.669+00:00", "status": 405, "error": "Method Not Allowed", "message": "Request method ''POST'' not supported", "path": "/v1/data/reports/interactioms/3058bc09-da96-490c-824f-f42646160f0a"}'
        '429':
          description: Rate Limit Exceeded
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RateLimitMessage'
              examples:
                '0':
                  value: '{"message": "API rate limit exceeded"}'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
  /v1/data/reports/interactions/ids:
    post:
      tags:
      - Interactions
      operationId: Get Interactions By Ids
      parameters:
      - $ref: '#/components/parameters/IncludeTranscript'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InteractionsRequest'
      responses:
        '200':
          description: "List of Interactions, each with following fields:\n<table>\n  <tr>\n  <th>Field Name</th>\n  <th>Type</th>\n  <th>Description</th>\n  </tr>\n  <tr>\n  <td>id</td>\n  <td>String</td>\n  <td>This id represents the id of that particular interaction</td>\n  </tr>\n  <tr>\n  <td>account_id</td>\n  <td>String</td>\n  <td>This id represents the id of that particular account.</td>\n  </tr>\n  <tr>\n  <td>agent_id</td>\n  <td>String</td>\n  <td>This id represents the id of the agent who has participated in that particular interaction.</td>\n  </tr>\n  <tr>\n  <td>partner_agent_id</td>\n  <td>String</td>\n  <td>This id represents the id of the agent who has participated in that particular interaction in the client system.</td>\n  </tr>\n  <tr>\n  <td>agent_name</td>\n  <td>String</td>\n  <td>The name of the agent who has participated in that particular interaction.</td>\n  </tr>\n  <tr>\n  <td>agent_email</td>\n  <td>String</td>\n  <td>The email of the agent who has participated in that particular interaction.</td>\n  </tr>\n  <tr>\n  <td>agent_status</td>\n  <td>String</td>\n  <td>This is a String field which depicts if the agent is active or not. (ACTIVE or IN_ACTIVE).</td>\n  </tr>\n  <tr>\n  <td>interaction_url</td>\n  <td>String</td>\n  <td>This field represents the url for the particular interaction.</td>\n  </tr>\n  <tr>\n  <td>duration</td>\n  <td>integer</td>\n  <td>This is an integer field which represents how much time (seconds) did the interaction happen.</td>\n  </tr>\n  <tr>\n  <td>source_partner_meeting_id</td>\n  <td>String</td>\n  <td>Incase of split interactions, source_partner_meeting_id is the unique identifier for the interaction before split. source_partner_meeting_id is same as unique identifier in the client system.</td>\n  </tr>\n  <tr>\n  <td>sequence</td>\n  <td>Integer</td>\n  <td>Incase of split interactions, the value of sequence signifies the position of this interaction post split. (Zero based index)</td>\n  </tr>\n  <tr>\n  <td>language</td>\n  <td>String</td>\n  <td>This is a field which represents in which language did the communication happen during the interaction.</td>\n  </tr>\n  <tr>\n  <td>channel</td>\n  <td>String</td>\n  <td>This field represents the type of interaction. (CALL, CHAT, EXTERNAL etc).</td>\n  </tr>\n  <tr>\n  <td>provider_id</td>\n  <td>String</td>\n  <td>The id which originates from the source recording platform.</td>\n  </tr>\n  <tr>\n  <td>transcripts</td>\n  <td>List</td>\n  <td>The list of transcripts of an interaction divided by speaker. The fields under the transcripts are:</td>\n  </tr>\n  <tr>\n  <td>transcripts.phrase</td>\n  <td>String</td>\n  <td>A snippet from the transcript corresponding to one of the two speakers.</td>\n  </tr>\n  <tr>\n  <td>transcripts.speaker</td>\n  <td>String</td>\n  <td>This is the speaker of the phrase - Agent or customer.</td>\n  </tr>\n  <tr>\n  <td>transcripts.start_time</td>\n  <td>integer</td>\n  <td>The phrase start time in milliseconds.</td>\n  </tr>\n  <tr>\n  <td>transcripts.end_time</td>\n  <td>integer</td>\n  <td>The phrase end time in milliseconds.</td>\n  </tr>\n  <tr>\n  <td>transcripts.order</td>\n  <td>integer</td>\n  <td>The position of each phrase in a transcript.</td>\n  </tr>\n  <tr>\n  <td>moment_categories</td>\n  <td>List</td>\n  <td>The list of moment categories contains all the moment categories found in the interactions. The fields under the moment categories are:</td>\n  </tr>\n  <tr>\n  <td>moment_categories.moment_category_id</td>\n  <td>String</td>\n  <td>This id represents that particular moment_category.</td>\n  </tr>\n  <tr>\n  <td>moment_categories.moment_category_name</td>\n  <td>String</td>\n  <td>The name of the particular moment_category.</td>\n  </tr>\n  <tr>\n  <td>moment_categories.moments</td>\n  <td>List</td>\n  <td>The list of moments present under a particular moment category. The fields under the moment are:</td>\n  </tr>\n  <tr>\n  <td>moments.moment_id</td>\n  <td>String</td>\n  <td>The id which represents that particular moment.</td>\n  </tr>\n  <tr>\n  <td>moments.moment_name</td>\n  <td>String</td>\n  <td>The moment name as configured in the Observe.AI userinterface in the 'Moments' tab.</td>\n  </tr>\n  <tr>\n  <td>moments.snippets</td>\n  <td>List</td>\n  <td>The list of phrases from a transcript in which momentswere found. Inside This snippets there are four more fields:</td>\n  </tr>\n  <tr>\n  <td>moments.moment_theme</td>\n  <td>String</td>\n  <td>The moment theme - Positive/Negative/Neutral as configured in the Observe.AI userinterface in the ‘Moments’ tab.</td>\n  </tr>\n  <tr>\n  <td>snippets.evidence</td>\n  <td>String</td>\n  <td>The actual phrase or keyword that matches amoment's criteria.</td>\n  </tr>\n  <tr>\n  <td>snippets.start_time</td>\n  <td>integer</td>\n  <td>The phrase start time in milliseconds.</td>\n  </tr>\n  <tr>\n  <td>snippets.end_time</td>\n  <td>integer</td>\n  <td>The phrase end time in milliseconds.</td>\n  </tr>\n  <tr>\n  <td>snippets.order</td>\n  <td>integer</td>\n  <td>The position of each phrase in a transcript.</td>\n  </tr>\n  <tr>\n  <td>moments.found</td>\n  <td>boolean</td>\n  <td>It determines whether the moment is found in the call or not.</td>\n  </tr>\n  <tr>\n  <td>created_at</td>\n  <td>Date</td>\n  <td>The time at which the interaction was created in the DB.</td>\n  </tr>\n  <tr>\n  <td>updated_at</td>\n  <td>Date</td>\n  <td>The time at which the interaction was last updated.</td>\n  </tr>\n  <tr>\n  <td>interaction_start_time</td>\n  <td>Date</td>\n  <td>The start timestamp of the interaction in ISO time format.</td>\n  </tr>\n  <tr>\n  <td>interaction_meta_data</td>\n  <td>(Key, Value) pair</td>\n  <td>This contains all the interaction metadata which is used to create filters and present in interaction info.</td>\n  </tr>\n  </table>\n"
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code":"bad_request","error_description":"Maximum observe interaction ids that can be specified is 100"}'
                '1':
                  value: '{"error_code":"bad_request","error_description":"Specify atleast one observe interaction id"}'
                '2':
                  value: '{"error_code":"bad_request","error_description":"Maximum partner interaction ids that can be specified is 100"}'
                '3':
                  value: '{"error_code":"bad_request","error_description":"Specify atleast one partner interaction id"}'
                '4':
                  value: '{"error_code":"bad_request","error_description":"Either observe interaction ids or partner interaction ids can be present in a request, but not both"}'
                '5':
                  value: '{"error_code":"bad_request","error_description":"Either observe interaction ids or partner interaction ids should be present in the request"}'
        '401':
          description: Unauthorized
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code": "auth_token_error", "error_description": "invalid auth token"}'
        '403':
          description: Access Denied
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"error_code":"access_denied","error_description":"unauthorized_user"}'
                '1':
                  value: '{"error_code":"access_denied","error_description":"No authentication header found"}'
                '2':
                  value: '{"error_code":"access_denied","error_description":"ticket/userId is missing in authorization"}'
        '404':
          description: Request Not Found
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"timestamp":"2022-07-19T07:47:19.178+00:00","status":404,"error":"Not Found","message":"No message available","path":"/v1/data/reports/interactions/ids"}'
        '405':
          description: Method Not Allowed
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                '0':
                  value: '{"timestamp": "2022-05-17T04:21:37.669+00:00", "status": 405, "error": "Method Not Allowed", "message": "Request method ''POST'' not supported", "path": "/v1/data/reports/interactions/ids"}'
        '429':
          description: Rate Limit Exceeded
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RateLimitMessage'
              examples:
                '0':
                  value: '{"message": "API rate limit exceeded"}'
        '500':
          description: Internal Server Error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ErrorMessage'
components:
  parameters:
    InteractionsSize:
      in: query
      name: size
      schema:
        type: integer
        minimum: 10
        maximum: 100
        example: 100
        default: 100
      description: Number of interactions required in a page. Note that for requests without transcripts maximum size can be 1000.
    Page:
      in: query
      name: page
      schema:
        type: integer
        minimum: 1
        example: 1
        default: 1
      description: The page number of the paginated response.
    IncludeTranscript:
      in: query
      name: includeTranscript
      schema:
        type: boolean
        example: true
        default: false
      description: Whether to include the transcript or not.
  schemas:
    InteractionsRequest:
      properties:
        observe_interaction_ids:
          type: List<String>
          example:
          - af1d1b95-de6d-42db-83bd-3a585e65fcc9
          - 4909093-918a-41ab-9fe3-0d1880fa2fd3
          description: Mandatory if partner_interaction_ids is not present. Both cannot be present together. Max Limit of 100 ids.
        partner_interaction_ids:
          type: List<String>
          example:
          - 7f9744f08a45cb0010d3a7c8
          - 9f583739466b73001e4a125c
          description: Mandatory if observe_interaction_ids is not present. Both cannot be present together. Max Limit of 100 ids.
    RawJobRequest:
      required:
      - end_date
      - start_date
      type: object
      properties:
        start_date:
          type: string
          example: '2022-03-03T00:00:12.000+00:00'
          description: The date should be given in the ISO format.
        end_date:
          type: string
          example: '2022-04-04T00:14:00.000+00:00'
          description: The date should be given in the ISO format.
        format:
          type: string
          example: JSON
          enum:
          - JSON
    PostJobResponse:
      type: object
      properties:
        request_id:
          type: string
        start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
        status:
          type: string
          enum:
          - QUEUED
          - INPROGRESS
          - COMPLETED
          - EXPIRED
          - FAILED
    RateLimitMessage:
      type: object
      properties:
        message:
          type: string
          description: API rate limit exceeded
    GetJobResponse:
      type: object
      properties:
        start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
        status:
          type: string
          enum:
          - QUEUED
          - INPROGRESS
          - COMPLETED
          - EXPIRED
          - FAILED
        url:
          type: string
    ErrorMessage:
      type: object
      properties:
        error_code:
          type: string
        error_description:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    DsrDeleteRequest:
      type: object
      required:
      - entity_type
      - rules
      properties:
        entity_type:
          type: string
          description: Entity type to delete
          enum:
          - AUDIO_TRANSCRIPT
          - AUDIO
          - TRANSCRIPT
          - SCREEN_RECORDING
        rules:
          type: array
          items:
            $ref: '#/components/schemas/DsrRule'
    DsrRule:
      type: object
      required:
      - type
      - name
      properties:
        type:
          type: string
          enum:
          - OAI_METADATA
          - CUSTOMER_METADATA
        name:
          type: string
          description: For OAI_METADATA use DURATION, ENTITYTYPE, or STATUS
        values:
          type: array
          items:
            type: string
    DsrDeleteResponse:
      type: object
      properties:
        job_id:
          type: string
        status:
          type: string
          enum:
          - QUEUED
          - CREATED
          - PROGRESS
          - COMPLETED
          - STOPPED
          - FAILED
        message:
          type: string
        requested_at:
          type: string
          format: date-time
        expected_completion_by:
          type: string
          format: date-time
    DsrStatusResponse:
      type: object
      properties:
        request_id:
          type: string
        status:
          type: string
          enum:
          - QUEUED
          - CREATED
          - PROGRESS
          - COMPLETED
          - STOPPED
          - FAILED
        status_message:
          type: string
x-tagGroups:
- name: Reporting APIs
  tags:
  - ReportingService-Overview
  - Authentication
  - Interactions
  - Summary
  - Evaluations
  - Coachings
  - Ack Dispute Flow
  - CallsReportVsInteractions
  - ReleaseNotes
- name: DSR APIs
  tags:
  - DSR-Overview
  - DSR
  - DSR Release Notes
- name: Bulk Export
  tags:
  - Bulk-Export-Overview
  - Bulk-Export-Data-Definitions