> ## Documentation Index
> Fetch the complete documentation index at: https://docs.identifai.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Classify a speech

> Submit a speech for classification

🔁 Response format varies based on the `Accept` header:

`Accept: application/json` → `{ "identifier": "..." }`

 Other values (e.g. `text/plain`) → plain text with just the identifier string.



## OpenAPI

````yaml post /api/classification_audio
openapi: 3.0.0
info:
  title: identifAI API
  version: 1.0.0
  description: >-
    API for integrating identifAI's image and video classification
    capabilities.<br><details><summary>**How to obtain your API
    Key**</summary>To obtain your API key, follow these simple steps:  
    <ol><li><p>**Create a user profile and log in to the platform**</p>If you
    don't have an account yet, visit our platform and create a user profile.
    Once you've completed registration and verified your email, log in with your
    credentials.</li><li><p>**Access the user menu**</p>After logging in, click
    on your name or the user icon in the top-right corner of the
    screen.</li><li><p>**Select the API Key option**</p>In the dropdown menu
    that appears, select the "API Key" option. From there, you can view or
    generate your API key.</li></ol>Now you are ready to use your API key in our
    API!</details><details><summary>**How to use the API**</summary>To use the
    API, first make a **POST** request to start the classification. Then, use
    the provided ***identifier*** from the **POST** request to retrieve the
    results.

    <details>

    <summary>**1. Image Classification**</summary>
      * To classify an image, you need to make a **POST** request to `/api/classification` with the required parameters (for details on the parameters, refer to the *"Classification"* section below).
      * In the response, you will receive the ***identifier*** of the classified image.
      * Use the provided ***identifier*** to retrieve the classification results by making a **GET** request to `/api/classification/{identifier}` (for details on how to structure this request, see the *"Classification"* section below).
      * The response will contain the classification results for the image in JSON format.<br>In the response, you will find a ***results*** array, which includes the classification results for each model used, and a ***verdicts*** array, which contains the results for each heuristic applied.<br>If the classification is not yet complete, continue sending the **GET** request until the result is available.</details><details><summary>**2. Video Classification**</summary>
        * To classify a video, you need to make a **POST** request to `/api/classification_video` with the required parameters (for details on the parameters, refer to the *"Classification"* section below).
        * In the response, you will receive the ***identifier*** of the classified video.
        * Use the provided ***identifier*** to retrieve the classification results by making a **GET** request to `/api/classification_video/{identifier}` (for details on how to structure this request, see the *"Classification"* section below).
        * The response will provide the classification results for the video in JSON format. For video classification, the video is divided into *frames*.<br> In the response, you will find a ***results*** array that includes the classification outcomes for each model applied to each analyzed frame, and a ***verdicts*** array containing the results for each heuristic used.<br> If the classification is not complete, continue sending the **GET** request until the final results are returned.</details><details><summary>**3. All Classifications**</summary>The `/api/classifications` endpoint will return all the image classifications made by a user. This will list the results of all past image classification requests.</details><details><summary>**4. User Management**</summary>  The **POST** `/api/user` endpoint allows you to create a user, while the **DELETE** `/api/user` endpoint is used to delete a user (For the structure of the requests, see more in the user section below).</details></details>
servers:
  - url: https://backend.identifai.net
security: []
tags:
  - name: Classification
    description: Classification routes
  - name: User
    description: User actions
  - name: Partner
    description: Partner actions
paths:
  /api/classification_audio:
    post:
      tags:
        - Classification
      summary: Classify a speech
      description: |-
        Submit a speech for classification

        🔁 Response format varies based on the `Accept` header:

        `Accept: application/json` → `{ "identifier": "..." }`

         Other values (e.g. `text/plain`) → plain text with just the identifier string.
      parameters:
        - name: Accept
          in: header
          description: 'Response content type. Supported: application/json, text/plain.'
          required: false
          schema:
            type: string
            enum:
              - application/json
              - text/plain
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                audio:
                  type: string
                  format: binary
                  description: >-
                    The speech to be classified. **Supported formats:** MP3,
                    WAV, OGG, FLAC, AAC, 3GP, M4A, M4B, M4P, M4R, MP4. **MIME
                    types:** audio/mpeg, audio/wav, audio/ogg, audio/flac,
                    audio/aac, audio/3gp, audio/m4a, audio/m4b, audio/m4p,
                    audio/m4r, video/mp4. **Maximum file size:** 15MB.
                ref_id:
                  type: string
                  description: >-
                    An optional reference ID to associate with the
                    classification request.
                webhook_url:
                  type: string
                  description: >-
                    If specified, the classification result will also be
                    automatically sent to the entered URL. Otherwise, the result
                    can be obtained by polling the [relative
                    endpoint](./get-classification-result-speech). Please note
                    that in order to use a webhook callback URL **you need to
                    request a specific enablement**, otherwise the parameter is
                    ignored. Moreover, the system may cache the analysis results
                    of repeated submissions, i.e. submissions of the same file
                    with the same options: in this case the webhook won't be
                    called and the results would be accessible only by polling
                    the [relative endpoint](./get-classification-result-speech).
                no_cache:
                  type: boolean
                  description: >-
                    Set it to true to force the system to reprocess the image
                    even if it has been previously submitted with the same
                    options. This may result in additional charges.
                prevent_c2pa_forces:
                  type: boolean
                  description: >-
                    If true, C2PA signature does not force the origin to
                    artificial. If false or undefined, C2PA signature will force
                    the origin to artificial (current behaviour).
              required:
                - audio
            encoding:
              audio:
                contentType: >-
                  audio/mpeg, audio/wav, audio/ogg, audio/flac, audio/aac,
                  audio/3gp, audio/m4a, audio/m4b, audio/m4p, audio/m4r,
                  video/mp4
      responses:
        '200':
          description: >-
            The classification identifier. The format depends on the Accept
            header.
          content:
            application/json:
              schema:
                type: object
                properties:
                  identifier:
                    type: string
                    example: >-
                      8d64370a87b820cc1cf620338f5c898bab37439c9a405f32d9eaffc50c4f27b0
              example:
                identifier: >-
                  8d64370a87b820cc1cf620338f5c898bab37439c9a405f32d9eaffc50c4f27b0
            text/plain:
              schema:
                type: string
              example: 8d64370a87b820cc1cf620338f5c898bab37439c9a405f32d9eaffc50c4f27b0
        '400':
          description: >-
            The user has no enough credits to perform the operation, the request
            contains the wrong parameters or the media did not pass validation
            steps.
          content:
            application/json:
              examples:
                missing_audio:
                  summary: Validation Error Example
                  value:
                    audio:
                      - The audio field is required.
                unsupported_format:
                  summary: Unsupported File Format
                  value:
                    error: The uploaded file format is not supported.
                file_too_large:
                  summary: File Too Large
                  value:
                    error: >-
                      The uploaded file exceeds the maximum allowed size of
                      50MB.
        '401':
          description: Invalid or missing API key.
          content:
            application/json:
              example:
                error: Unauthorized
        '403':
          description: >-
            The user is not authorized to access this API or did not accept the
            terms of service.
          content:
            application/json:
              example:
                error: Forbidden
        '429':
          description: Too many requests.
          content:
            application/json:
              example:
                message: Too Many Attempts.
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: X-Api-Key
      in: header
      description: Your API key.

````