Forithmus data-upload API

The data-upload API from Forithmus — 8 operation(s) for data-upload.

Operations 8

POST /challenges/{slug}/phases/{phase_id}/data/test-data Upload Test Data #
POST /challenges/{slug}/phases/{phase_id}/data/upload-url Generate Upload Url #
POST /challenges/{slug}/phases/{phase_id}/data/upload-complete Complete Direct Upload #
POST /challenges/{slug}/phases/{phase_id}/data/upload-abort Abort Direct Upload #
POST /challenges/{slug}/phases/{phase_id}/data/ground-truth Upload Ground Truth #
POST /challenges/{slug}/phases/{phase_id}/data/eval-container Upload Eval Container #
GET /challenges/{slug}/phases/{phase_id}/data/status Get Data Status #
DELETE /challenges/{slug}/phases/{phase_id}/data/{data_type} Delete Data #

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/forithmus-data-upload-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

forithmus-data-upload-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Forithmus Challenge Platform 2fa Data Upload API
  version: 1.0.0
servers:
- url: https://research.forithmus.com/api
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: data-upload
paths:
  /challenges/{slug}/phases/{phase_id}/data/test-data:
    post:
      tags:
      - data-upload
      summary: Upload Test Data
      description: 'Upload test input data as a zip file. The zip is stored in GCS temp and

        a Celery task handles extraction + scanning + GCS upload asynchronously.

        Returns immediately with a processing status.


        Uses explicit sessions to avoid holding a DB connection during file streaming

        and GCS upload (can be multi-GB).'
      operationId: upload_test_data_challenges__slug__phases__phase_id__data_test_data_post
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_test_data_challenges__slug__phases__phase_id__data_test_data_post'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /challenges/{slug}/phases/{phase_id}/data/upload-url:
    post:
      tags:
      - data-upload
      summary: Generate Upload Url
      description: 'Generate a signed POST Policy for direct-to-GCS upload.

        Client uploads directly to GCS, bypassing the backend (no buffering).'
      operationId: generate_upload_url_challenges__slug__phases__phase_id__data_upload_url_post
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /challenges/{slug}/phases/{phase_id}/data/upload-complete:
    post:
      tags:
      - data-upload
      summary: Complete Direct Upload
      description: 'Finalize a direct-to-GCS upload. Verifies the upload_id was issued to this

        user, confirms the blob exists in GCS, then queues the extraction task.'
      operationId: complete_direct_upload_challenges__slug__phases__phase_id__data_upload_complete_post
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: Body
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /challenges/{slug}/phases/{phase_id}/data/upload-abort:
    post:
      tags:
      - data-upload
      summary: Abort Direct Upload
      description: 'Cancel a direct upload: deletes the partial/complete _temp/ blob and invalidates the session.

        Client should call this if the upload is cancelled or fails.'
      operationId: abort_direct_upload_challenges__slug__phases__phase_id__data_upload_abort_post
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /challenges/{slug}/phases/{phase_id}/data/ground-truth:
    post:
      tags:
      - data-upload
      summary: Upload Ground Truth
      description: 'Upload ground truth labels as a zip file. The zip is stored in GCS temp

        and a Celery task handles extraction + scanning + GCS upload asynchronously.

        Returns immediately with a processing status.


        Uses explicit sessions to avoid holding a DB connection during file streaming.'
      operationId: upload_ground_truth_challenges__slug__phases__phase_id__data_ground_truth_post
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_ground_truth_challenges__slug__phases__phase_id__data_ground_truth_post'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /challenges/{slug}/phases/{phase_id}/data/eval-container:
    post:
      tags:
      - data-upload
      summary: Upload Eval Container
      description: 'Upload an evaluation Docker container as a .tar.gz file.

        Stored in GCS models bucket; registry push is handled by a Celery task.

        Returns immediately with a processing status.


        Uses explicit sessions to avoid holding a DB connection during file streaming.'
      operationId: upload_eval_container_challenges__slug__phases__phase_id__data_eval_container_post
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_eval_container_challenges__slug__phases__phase_id__data_eval_container_post'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /challenges/{slug}/phases/{phase_id}/data/status:
    get:
      tags:
      - data-upload
      summary: Get Data Status
      description: 'Check what data has been uploaded for this phase.

        Returns upload status for test data, ground truth, and eval container.'
      operationId: get_data_status_challenges__slug__phases__phase_id__data_status_get
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /challenges/{slug}/phases/{phase_id}/data/{data_type}:
    delete:
      tags:
      - data-upload
      summary: Delete Data
      description: 'Delete previously uploaded data for a phase.

        data_type must be one of: test-data, ground-truth, eval-container.'
      operationId: delete_data_challenges__slug__phases__phase_id__data__data_type__delete
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: phase_id
        in: path
        required: true
        schema:
          type: string
          title: Phase Id
      - name: data_type
        in: path
        required: true
        schema:
          type: string
          title: Data Type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Body_upload_ground_truth_challenges__slug__phases__phase_id__data_ground_truth_post:
      properties:
        file:
          type: string
          format: binary
          title: File
      type: object
      required:
      - file
      title: Body_upload_ground_truth_challenges__slug__phases__phase_id__data_ground_truth_post
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    Body_upload_test_data_challenges__slug__phases__phase_id__data_test_data_post:
      properties:
        file:
          type: string
          format: binary
          title: File
      type: object
      required:
      - file
      title: Body_upload_test_data_challenges__slug__phases__phase_id__data_test_data_post
    Body_upload_eval_container_challenges__slug__phases__phase_id__data_eval_container_post:
      properties:
        file:
          type: string
          format: binary
          title: File
      type: object
      required:
      - file
      title: Body_upload_eval_container_challenges__slug__phases__phase_id__data_eval_container_post
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError