30MHz Ingest API

The ingest API from 30MHz — 5 operation(s) for ingest.

Operations 5

POST /ingest/manual-input-delete Delete manual import check data based on keys #
GET /ingest/organization/{organizationId}/import-check/{importCheckId}/example-call Import check event template #
POST /ingest/organization/{organizationId} Ingest external sensor data.Supports multiple events (100 max) except for… #
POST /ingest/manual-input-update Update manual data #
POST /ingest/manual-input-update/{id} Update manual data by event id #

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/30mhz-ingest-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

30mhz-ingest-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '2.0'
  title: ZENSIE Ingest API
servers:
- url: https://api.30mhz.com/api
tags:
- name: Ingest
paths:
  /ingest/manual-input-delete:
    post:
      tags:
      - Ingest
      summary: Delete manual import check data based on keys
      description: Authentication required for this operation.
      operationId: deleteDataManualImportChecks
      security:
      - Bearer: []
      responses:
        '200':
          description: Import checks event deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManualImportCheckStatsResponse'
            application/zensie-v2+json:
              schema:
                $ref: '#/components/schemas/ManualImportCheckStatsResponse'
        '400':
          description: Bad request while deleting manual data
        '403':
          description: Not enough permissions to perform the operation. User must be editor or owner in the organization.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManualImportCheckEventDelete'
          application/xml:
            schema:
              $ref: '#/components/schemas/ManualImportCheckEventDelete'
  /ingest/organization/{organizationId}/import-check/{importCheckId}/example-call:
    get:
      tags:
      - Ingest
      summary: Import check event template
      description: Authentication required for this operation.
      operationId: getIngestImportCheckTemplate
      parameters:
      - name: organizationId
        in: path
        required: true
        schema:
          type: string
      - name: importCheckId
        in: path
        required: true
        schema:
          type: string
      security:
      - Bearer: []
      responses:
        '200':
          description: Import check event template.
        '403':
          description: Not enough permissions to perform the operation. User must be editor or owner in the organization.
  /ingest/organization/{organizationId}:
    post:
      tags:
      - Ingest
      summary: Ingest external sensor data.Supports multiple events (100 max) except for…
      description: 'Authentication required for this operation.

        A maximum of 100 events are allowed per call.


        Event failure codes:

        1: Import check does not exist.


        2: Import check is currently disabled. The import check must be enabled in order to receive data.


        3: Sensor type for import check does not exist.


        4: Status field should contain one of the values: "ok" or "fail" .


        5: Timestamp field should contain a valid ISO 8601 DateTime format value with an explicitly set timezone value (e.g. 2017-01-17T19:23:02+06:45, 2017-01-17T19:23:02Z).


        6: Timestamp must be after 2015-01-01.


        8: The import check does not belong to the organization.


        9: Sensor type is not external.


        10: Sensor fields or the data types of the event are invalid (not matching the ones defined in sensor type table).


        11: Event could not be added to database.


        12: Event could not be added to notification system (notifications will not run for this event).


        14: Imported string value is too long.


        15: Sensor field defined in unit override is invalid.


        16: Unit defined for a sensor field is invalid.


        17: Collection not found


        18: Failed to create new manual input event.'
      operationId: ingestImportChecks
      parameters:
      - name: organizationId
        in: path
        required: true
        schema:
          type: string
      security:
      - Bearer: []
      responses:
        '200':
          description: Import checks events processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportCheckEventsResponse'
            application/zensie-v2+json:
              schema:
                $ref: '#/components/schemas/ImportCheckEventsResponse'
        '403':
          description: Not enough permissions to perform the operation. User must be editor or owner in the organization.
        '413':
          description: Too many events sent. A maximum of 100 events are allowed per call
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ImportCheckEvent'
          application/xml:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ImportCheckEvent'
  /ingest/manual-input-update:
    post:
      tags:
      - Ingest
      summary: Update manual data
      description: Authentication required for this operation.
      operationId: updateManualImportChecks
      security:
      - Bearer: []
      responses:
        '201':
          description: Import check event processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManualImportCheckEventUpdateResponse'
            application/zensie-v2+json:
              schema:
                $ref: '#/components/schemas/ManualImportCheckEventUpdateResponse'
        '400':
          description: Bad request while ingesting manual data
        '403':
          description: Not enough permissions to perform the operation. User must be editor or owner in the organization.
        '404':
          description: Event not found
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManualImportCheckEventUpdate'
          application/xml:
            schema:
              $ref: '#/components/schemas/ManualImportCheckEventUpdate'
  /ingest/manual-input-update/{id}:
    post:
      tags:
      - Ingest
      summary: Update manual data by event id
      description: Authentication required for this operation.
      operationId: updateManualImportChecksWithId
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      security:
      - Bearer: []
      responses:
        '201':
          description: Import check event processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManualImportCheckEventUpdateResponse'
            application/zensie-v2+json:
              schema:
                $ref: '#/components/schemas/ManualImportCheckEventUpdateResponse'
        '400':
          description: Bad request while ingesting manual data
        '403':
          description: Not enough permissions to perform the operation. User must be editor or owner in the organization.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManualImportCheckEventUpdate'
          application/xml:
            schema:
              $ref: '#/components/schemas/ManualImportCheckEventUpdate'
components:
  schemas:
    ManualImportCheckStatsResponse:
      type: object
      required:
      - data
      properties:
        collectionId:
          type: string
        data:
          type: object
        dateEntryId:
          type: string
        id:
          type: string
    ManualImportCheckEventUpdateResponse:
      type: object
      required:
      - checkId
      properties:
        checkId:
          type: string
        collectionId:
          type: string
        dateEntryId:
          type: string
        id:
          type: string
    ImportCheckEventsResponse:
      type: object
      required:
      - failedEvents
      properties:
        failedEvents:
          type: array
          description: List of failed ingests in the batch.
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ImportCheckEventFailure'
        failedEventsNo:
          type: integer
          format: int32
          description: Number of failed ingests in the batch.
        ingestedDocId:
          type: string
          description: Id of the created manual input event if any. It is always one single id since multiple events creation is not supported.
        okEventsNo:
          type: integer
          format: int32
          description: Number of successful ingests in the batch.
    ManualImportCheckEventUpdate:
      type: object
      required:
      - data
      properties:
        checkId:
          type: string
        collectionId:
          type: string
        data:
          type: object
        dateEntryId:
          type: string
    ImportCheckEvent:
      type: object
      required:
      - data
      - timestamp
      properties:
        checkId:
          type: string
          description: Id of the check to import an event for.
        collectionId:
          type: string
          description: Optional collection id of the event.
        data:
          type: object
          description: 'Data as a map of sensor fields to their corresponding value, e.g. {''temperature'': 21.5}.'
        error:
          type: string
          description: Optional error for when status is 'fail'.
        status:
          type: string
          description: Optional 'ok' or 'fail' values representing the event success status.
        timestamp:
          type: string
          description: ISO 8601 DateTime format value with an explicitly set timezone value * (e.g. 2017-01-17T19:23:02+06:45, 2017-01-17T19:23:02Z)
        unitsOverride:
          type: object
          description: 'A map that defines unitId used in data values for each sensor field, e.g.  { ''radiation'': ''umol_m2_s1'' }. If not defined, value is assumed to be in the metric''s default unit.'
          additionalProperties:
            type: string
        updateData:
          type: boolean
          description: Whether to update an existing event at the given timestamp for the given checkId or to create a new one. Default is false, so if not set, a new event will be created. Multiple events for the same checkId at the same timestamp are aggregated when they are retrieved.
    ImportCheckEventFailure:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/ImportCheckEvent'
        errorCode:
          type: integer
          format: int32
        errorText:
          type: string
    ManualImportCheckEventDelete:
      type: object
      required:
      - jsonKeys
      properties:
        checkId:
          type: string
        dateEntryId:
          type: string
        id:
          type: string
        jsonKeys:
          type: array
          uniqueItems: true
          items:
            type: string
  securitySchemes:
    Bearer:
      description: ''
      type: apiKey
      name: Authorization
      in: header