Defined.ai (DefinedCrowd) Input Units API

Each input unit is a single component of work done by the contributors. There are several types of units – audio, text, and image. In a given project, all units should have the same structure. The input unit schema explains the structure of input units. Note: Input Units are a part of projects. They are not separate entities.

Operations 5

GET /v2.0/public/projects/{projectId}/inputUnitsSchema Get Input Unit Schema #
POST /v2.0/public/projects/{projectId}/inputUnits Upload Input Units #
GET /v2.0/public/projects/{projectId}/errors Get Project Errors #
GET /v2.0/public/projects/{projectId}/uploads Get Project Uploads #
GET /v2.0/public/projects/{projectId}/uploads/{uploadId} Get Project Upload #

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/definedcrowd-input-units-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 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.

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

OpenAPI Specification

definedcrowd-input-units-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Defined.ai Input Units API
  description: '# Introduction


    Welcome to the Defined.ai Public API.'
  version: v2
  x-logo:
    url: https://definedcrowd.azureedge.net/content/images/dai-logo-black.svg
    backgroundColor: '#FFFFFF'
    href: https://defined.ai/
security:
- Bearer: []
tags:
- name: Input Units
  description: 'Each input unit is a single component of work done by the contributors. There are several types of units – audio, text, and image. In a given project, all units should have the same structure. The input unit schema explains the structure of input units.


    Note: Input Units are a part of projects. They are not separate entities.'
paths:
  /v2.0/public/projects/{projectId}/inputUnitsSchema:
    get:
      tags:
      - Input Units
      summary: Get Input Unit Schema
      description: 'The format of the input unit required for the project upload is retrieved. Please note that,

        the endpoint will return an object with required fields and their properties format for each input unit

        on the desired project. However, when uploading you need to create an array with those required fields,

        respecting their properties. To upload, you should use the UPLOAD INPUT UNIT endpoint.


        **Permission Required:** Upload Data'
      operationId: UploadManagement_GetInputUnitSchema
      parameters:
      - name: projectId
        in: path
        description: Project ID.
        required: true
        schema:
          type: string
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      responses:
        '200':
          description: Returns hit Upload Schema for the requested project.
          content:
            text/plain:
              schema: {}
              example:
                type: object
                required:
                - audioSample
                - sentenceSample
                properties:
                  audioSample:
                    type: string
                    format: uri
                    urlType: audio
                    examples:
                    - http://example.com
                  sentenceSample:
                    type: string
                  id:
                    type: string
                    format: guid
                  details:
                    type: string
                    maxLength: 500
                    examples:
                    - This is a sample of details
            application/json:
              schema: {}
              example:
                type: object
                required:
                - audioSample
                - sentenceSample
                properties:
                  audioSample:
                    type: string
                    format: uri
                    urlType: audio
                    examples:
                    - http://example.com
                  sentenceSample:
                    type: string
                  id:
                    type: string
                    format: guid
                  details:
                    type: string
                    maxLength: 500
                    examples:
                    - This is a sample of details
            text/json:
              schema: {}
              example:
                type: object
                required:
                - audioSample
                - sentenceSample
                properties:
                  audioSample:
                    type: string
                    format: uri
                    urlType: audio
                    examples:
                    - http://example.com
                  sentenceSample:
                    type: string
                  id:
                    type: string
                    format: guid
                  details:
                    type: string
                    maxLength: 500
                    examples:
                    - This is a sample of details
        '204':
          description: No hit Upload Schema for the requested project.
        '400':
          description: Invalid job configuration.
        '401':
          description: Invalid authentication (invalid/expired token).
        '404':
          description: Project does not exist.
  /v2.0/public/projects/{projectId}/inputUnits:
    post:
      tags:
      - Input Units
      summary: Upload Input Units
      description: 'You can upload input units to the project, which contributors will work on.

        Maximum size allowed is 250 MB of data.


        **How to upload**


        To know which properties should be used to upload the input units properly, you should use the

        GET INPUT UNIT SCHEMA endpoint.

        Please note that, the endpoint will return an object with required

        fields and their properties format for each input unit on the desired project. However, when uploading

        you need to create an array with those required fields, respecting their properties.


        **Configure your Amazon S3 bucket policy to grant cross-account access to Define.ai**


        You can use AWS S3 to store and submit your input units with the file URLs in

        S3:// protocol(for example, S3://bucket-name/key-name) rather than http:// or https:// protocol.

        Configure your S3 bucket policy to give permission to the following IAM role for Define.ai

        to access your files.


        To do this, you must be the S3 bucket owner.

        Got to bucket >> permission >> bucket policy, and add the following policy


        (Note that the place holder ${BucketName} should be replaced by your S3 bucket name)


        {

        "Version": "2012-10-17",

        "Statement": [{

        "Effect": "Allow",

        "Principal": {

        "AWS": "arn:aws:iam::463637393528:user/prod-devteam-user"

        },

        "Action": [

        "s3:GetObject",

        "s3:ListBucket"

        ],

        "Resource": [

        "arn:aws:s3:::${BucketName}/*",

        "arn:aws:s3:::${BucketName}"

        ]

        }]

        }


        **How validation works**


        Two validations phases follow the upload operation. First, a synchronous phase and, if completed

        successfully, an asynchronous phase. Validation failure will return a list of up to 50 error codes and

        messages to resolve. Review these errors and upload the unsuccessful input units again.


        The project state will change to PROCESSING DATA UPLOAD once there are input units passing all syntax and

        format evaluations.


        **Example of how validation and upload of Input Units work**


        You upload 1 000 input units. 100 validation errors are found. Remember the validation returns the

        first 50 error messages. Review the errors and correct errors for all 100 input units and reload the

        set of 100 (not all 1 000). Validation takes place (asynchronous phase), and successful input units are

        uploaded to the system.


        **Understand the project state based on asynchronous validation phase**


        Errors found will change the project state to either UPLOAD ERRORS or INSUFFICIENT DATA, depending on

        whether there is valid input unit(s). Retrieve the error list by using GET PROJECT ERRORS endpoint.


        A single valid input unit will change the project state to PROCESSING DATA UPLOAD. Data can be added

        until the project state changes to PREPARING PROJECT.


        **Permission Required:** Upload Data'
      operationId: UploadManagement_UploadInputUnits
      parameters:
      - name: projectId
        in: path
        description: Project ID.
        required: true
        schema:
          type: string
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
              example:
              - audioSample: S3://bucket-name/key-name
                sentenceSample: This is a sentence sample.
                details: This is a sentence details.
              - audioSample: https://audio-sample.wav
                sentenceSample: This is a sentence sample.
                details: This is a sentence details.
        required: true
      responses:
        '202':
          description: Accepted. Job is updated asynchronously.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadInputUnitsResult'
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadInputUnitsResult'
            text/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadInputUnitsResult'
        '400':
          description: Invalid parameters.
        '401':
          description: Invalid authentication (invalid/expired token).
        '404':
          description: Project does not exist.
  /v2.0/public/projects/{projectId}/errors:
    get:
      tags:
      - Input Units
      summary: Get Project Errors
      description: 'After the synchronous upload is completed successfully, the asynchronous process is triggered.

        Validation errors during this phase will change the project state to either UPLOAD ERRORS or

        INSUFFICIENT DATA, depending on whether there is valid input unit(s). A detailed list of errors will be

        returned. Review the error list and re-upload the set using the same Input Unit ID.


        **List of possible errors:**

        | Error Types | Description |

        |----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|

        | ConnectionUnsuccessful | Connection to the URL provider was unsuccessful |

        | UrlNotSupported | The provided URL is not formatted over HTTP, HTTPS or S3 protocols |

        | FileDoesNotExist


        Possible values for errorDetails field:


        * NoSuchKey.


        * NoSuchBucket. | The provided URL does not contain a file or, if S3 protocol is used, the specified key/bucket does not exist. |

        | FileIsNotValid


        Possible values for `errorDetails` field:


        * .WAV file failed format validations. Check public API documentation or contact Enterprise Support.


        * .WAV file failed validation: fmt chunk size must be greater than or equal to 16.


        * .WAV file failed validation: bits per sample must be between 4 and 16.


        * .WAV file failed validation: PCM audio format is required.


        * .WAV file failed validation: number of channels must be between 1 and 8. | The provided URL contains invalid file formats (accepted file formats: audio (.wav)) |

        | UnauthorizedAccess | The provided URL cannot be accessed due to authentication issues |

        | StatusCodeDoesNotIndicateSuccess


        Possible values for `errorDetails` field:


        * e.g. 429 TooManyRequests. | Remote server returned an error when queried resource under corresponding URL. Please, see `errorDetails` for actual error code and error message. |

        | PlatformError | Something went wrong on our side |


        **Sample:**


        {

        "uploadInputUnitsError":

        [

        {

        "inputDataUnitId": "00000000-0000-0000-0000-000000000000",


        "errorType": "FileIsNotValid",


        "errorDetails": ".WAV file failed validation: ChunkSize should always be 16 (PCM format) or greater. ",


        "errorProperty": {

        "inputDataUnitProperty": "audioSample",


        "inputDataUnitPropertyValue": "http://example.com"

        },


        "inputDataUnit": { }

        }

        ],

        "totalCount": 1

        }


        **Permission Required:** Read Project Properties'
      operationId: UploadManagement_GetProjectErrors
      parameters:
      - name: projectId
        in: path
        description: Project ID.
        required: true
        schema:
          type: string
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      - name: pageNumber
        in: query
        description: The page to retrieve.
        schema:
          type: integer
          format: int32
          default: 0
      - name: itemsPerPage
        in: query
        description: The number of items to retrieve per page. The maximum number of items per page allowed is 100.
        schema:
          type: integer
          format: int32
          default: 10
      - name: uploadId
        in: query
        description: ID for a set of uploaded input units.
        schema:
          type: string
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      responses:
        '200':
          description: Returns a list with project information.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Project.GetPagedProjectErrorsQueryResults'
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Project.GetPagedProjectErrorsQueryResults'
            text/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Project.GetPagedProjectErrorsQueryResults'
        '400':
          description: Invalid parameters.
        '401':
          description: Invalid authentication (invalid/expired token).
        '404':
          description: Project does not exist.
  /v2.0/public/projects/{projectId}/uploads:
    get:
      tags:
      - Input Units
      summary: Get Project Uploads
      description: 'Retrieve the status of a project’s input unit set. Each set of uploaded input units generate an ID

        that you can use to retrieve the upload status, the number of input units submitted, the successful

        input units, and the error input units.


        **Permission Required:** Read Project Properties'
      operationId: UploadManagement_GetProjectUploads
      parameters:
      - name: projectId
        in: path
        description: Project ID.
        required: true
        schema:
          type: string
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      - name: pageNumber
        in: query
        description: The page to retrieve. (0 by default)
        schema:
          type: integer
          format: int32
          default: 0
      - name: itemsPerPage
        in: query
        description: 'The number of items to retrieve per page.

          The maximum number of items per page allowed is 100. (10 by default).'
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: Returns a list with information about the uploads.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadStatusesResult'
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadStatusesResult'
            text/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadStatusesResult'
        '400':
          description: Invalid parameters.
        '401':
          description: Invalid authentication (invalid/expired token).
        '404':
          description: Project does not exist.
  /v2.0/public/projects/{projectId}/uploads/{uploadId}:
    get:
      tags:
      - Input Units
      summary: Get Project Upload
      description: 'Retrieve the status of an input unit set uploaded for a project.


        **Permission Required:** Read Project Properties'
      operationId: UploadManagement_GetProjectUpload
      parameters:
      - name: projectId
        in: path
        description: Project ID.
        required: true
        schema:
          type: string
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      - name: uploadId
        in: path
        description: ID for a set of uploaded input unit.
        required: true
        schema:
          type: string
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      responses:
        '200':
          description: Returns upload information.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadStateResult'
            application/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadStateResult'
            text/json:
              schema:
                $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadStateResult'
        '400':
          description: Invalid parameters.
        '401':
          description: Invalid authentication (invalid/expired token).
        '404':
          description: Project or upload does not exist.
components:
  schemas:
    DefinedCrowd.PublicApi.Api.Results.Project.UploadInputUnitError:
      title: JSON object
      type: object
      properties:
        inputDataUnitId:
          type: string
          description: Unique identifier of the input data unit where the error occurred.
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
        errorType:
          enum:
          - connectionUnsuccessful
          - fileDoesNotExist
          - fileIsNotValid
          - unauthorizedAccess
          - statusCodeDoesNotIndicateSuccess
          - platformError
          - urlNotSupported
          type: string
          description: Type of error.
          x-enumNames:
          - ConnectionUnsuccessful
          - FileDoesNotExist
          - FileIsNotValid
          - UnauthorizedAccess
          - StatusCodeDoesNotIndicateSuccess
          - PlatformError
          - UrlNotSupported
          x-enumDescriptions:
          - ''
          - ''
          - ''
          - ''
          - ''
          - ''
          - ''
          x-ms-enum:
            name: FileUploadErrorMessage
            modelAsString: true
        errorDetails:
          type:
          - string
          - 'null'
          description: Details of error.
        errorProperty:
          allOf:
          - $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Project.ErrorProperty'
        inputDataUnit:
          description: Fields of the original uploaded input unit.
      additionalProperties: false
    DefinedCrowd.PublicApi.Api.Results.Upload.Dtos.InputDataUnitsStatsResult:
      title: JSON object
      type: object
      properties:
        submitted:
          type: integer
          description: Number of input units submitted.
          format: int32
        success:
          type: integer
          description: Number of input units uploaded successfully.
          format: int32
        error:
          type: integer
          description: Number of input units with errors.
          format: int32
      additionalProperties: false
    DefinedCrowd.PublicApi.Api.Results.Upload.UploadInputUnitsResult:
      title: JSON object
      type: object
      properties:
        uploadId:
          type: string
          description: ID for a set of uploaded input units.
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
      additionalProperties: false
    DefinedCrowd.PublicApi.Api.Results.Upload.UploadStatusesResult:
      title: JSON object
      type: object
      properties:
        uploads:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.UploadStateResult'
          description: Details from project’s input unit sets.
        totalCount:
          type: integer
          description: Total number of items available.
          format: int32
      additionalProperties: false
    DefinedCrowd.PublicApi.Api.Results.Project.GetPagedProjectErrorsQueryResults:
      title: JSON object
      type: object
      properties:
        uploadInputUnitsError:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Project.UploadInputUnitError'
          description: List of errors in the data unit uploading asynchronous process.
        totalCount:
          type: integer
          description: Total number of items available.
          format: int32
      additionalProperties: false
    DefinedCrowd.PublicApi.Api.Results.Project.ErrorProperty:
      title: JSON object
      type: object
      properties:
        inputDataUnitProperty:
          type:
          - string
          - 'null'
          description: Name of property for which error exists.
        inputDataUnitPropertyValue:
          type:
          - string
          - 'null'
          description: Original value of the property for which error exists.
      additionalProperties: false
    DefinedCrowd.PublicApi.Api.Results.Upload.UploadStateResult:
      title: JSON object
      type: object
      properties:
        uploadId:
          type: string
          description: ID for a set of uploaded input units.
          format: uuid
          example: 00000000-0000-0000-0000-000000000000
        inputDataUnitsStats:
          allOf:
          - $ref: '#/components/schemas/DefinedCrowd.PublicApi.Api.Results.Upload.Dtos.InputDataUnitsStatsResult'
          description: Upload statistics.
        isUploading:
          type: boolean
          description: Indication if the upload is still ongoing or not.
        uploadStartTimestamp:
          type: string
          description: Date and timestamp of when the upload started.
          format: date-time
        uploadEndTimestamp:
          type:
          - string
          - 'null'
          description: Date and timestamp of when the upload ended.
          format: date-time
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: apiKey
      description: Please enter into field the word 'Bearer' following by space and JWT
      name: Authorization
      in: header
x-tagGroups:
- name: ' '
  tags:
  - Supported Languages
- name: Project life cycle
  tags:
  - Project Management
  - Subscriptions
  - Jobs
  - Input Units
  - Deliverables
- name: Speech Technologies
  tags:
  - Mean Opinion Score
  - Pronunciation Validation