---
title: "Get the original downsampled data"
method: GET
path: "/api/{projectId}/raw-data/{sampleId}/original"
tags: ["Raw data"]
---

# Get the original downsampled data

`GET /api/{projectId}/raw-data/{sampleId}/original`

## Request

- Base URL: `https://studio.edgeimpulse.com/v1`
- URL: `https://studio.edgeimpulse.com/v1/api/{projectId}/raw-data/{sampleId}/original`
- Auth: one of:
  - API key in header `x-api-key`
  - API key in cookie `jwt`
  - API key in header `x-jwt-token`
  - OAuth 2
    - Authorization code: `/v1/oauth/authorize`
    - Client credentials
    - Implicit: `/v1/oauth/authorize`
    - Password
    - Token URL: `/v1/oauth/token`
- TypeScript: <https://skmtc.dev/edgeimpulse/apis/edge-impulse-api/docs/api/:projectId/raw-data/:sampleId/original/get.ts> (a function with typed inputs; its response is checked against the schema)

Get the original, uncropped, downsampled data. If you have multiple datastreams and OptionalDatastreamIndexParameter is not passed in, the first datastream is returned. The ZoomStart/ZoomEnd parameters should be relative to the selected datastream.

## Path parameters

- `projectId` integer, required
- `sampleId` integer, required

## Query parameters

- `limitPayloadValues` integer
- `zoomStart` integer
- `zoomEnd` integer
- `impulseId` integer
- `datastreamIndex` integer
- `truncateStructuredLabels` boolean
- `datasetVersionId` integer

## Response `200`

OK

- GetSampleDspResponse
  - `success` boolean, required: Whether the operation succeeded
  - `error` string: Optional error description (set if 'success' was false)
  - `sample` Sample, required
    - `id` integer, required
    - `filename` string, required
    - `signatureValidate` boolean, required: Whether signature validation passed
    - `signatureMethod` string
    - `signatureKey` string: Either the shared key or the public key that was used to validate the sample
    - `created` string, date-time, required: Timestamp when the sample was created on device, or if no accurate time was known on device, the time that the file was processed by the ingestion service.
    - `lastModified` string, date-time, required: Timestamp when the sample was last modified.
    - `category` 'training' | 'testing' | 'validation' | 'post-processing', required
    - `coldstorageFilename` string, required
    - `label` string, required
    - `intervalMs` number, required: Interval between two windows (1000 / frequency). NOTE: Previously this value could change depending on whether the sample was resampled. This behavior has been removed.
    - `frequency` number, required: Frequency of the sample. NOTE: Previously this value could change depending on whether the sample was resampled. This behavior has been removed.
    - `originalIntervalMs` number, required: DEPRECATED. See "intervalMs".
    - `originalFrequency` number, required: DEPRECATED. See "frequency".
    - `deviceName` string
    - `deviceType` string, required
    - `sensors` Sensor[], required
      - `index` integer, required: Index of the sensor (globally, so you can refer back to it in e.g. getSampleAsAudio)
      - `name` string, required: Name of the axis
      - `units` string, required: Type of data on this axis. Needs to comply to SenML units (see https://www.iana.org/assignments/senml/senml.xhtml).
    - `valuesCount` integer, required: Number of readings in this file. If you have multiple datastreams, this is the value count from the datastream with the highest frequency.
    - `totalLengthMs` number: Total length (in ms.) of this file
    - `added` string, date-time, required: Timestamp when the sample was added to the current acquisition bucket.
    - `boundingBoxes` BoundingBox[], required
      - `label` string, required
      - `x` integer, required
      - `y` integer, required
      - `width` integer, required
      - `height` integer, required
    - `boundingBoxesType` 'object_detection' | 'constrained_object_detection', required
    - `chartType` 'chart' | 'image' | 'video' | 'table', required
    - `thumbnailVideo` string
    - `thumbnailVideoFull` string
    - `isDisabled` boolean, required: True if the current sample is excluded from use
    - `isProcessing` boolean, required: True if the current sample is still processing (e.g. for video)
    - `processingJobId` integer: Set when sample is processing and a job has picked up the request
    - `processingError` boolean, required: Set when processing this sample failed
    - `processingErrorString` string: Error (only set when processing this sample failed)
    - `isCropped` boolean, required: Whether the sample is cropped from another sample (and has crop start / end info)
    - `metadata` object: Sample free form associated metadata
    - `projectId` integer, required: Unique identifier of the project this sample belongs to
    - `projectOwnerName` string: Name of the owner of the project this sample belongs to
    - `projectName` string: Name of the project this sample belongs to
    - `projectLabelingMethod` 'single_label' | 'object_detection' | 'label_map'
    - `sha256Hash` string, required: Data sample SHA 256 hash (including CBOR envelope if applicable)
    - `structuredLabels` StructuredLabel[]
      - `startIndex` integer, required: Start index of the label (e.g. 0)
      - `endIndex` integer, required: End index of the label (e.g. 3). This value is inclusive, so { startIndex: 0, endIndex: 3 } covers 0, 1, 2, 3.
      - `label` string, required: The label for this section.
      - `labelMap` SampleLabelMapLabels
        - `type` 'key-values', required
        - `labels` object, required
    - `structuredLabelsList` string[]
    - `createdBySyntheticDataJobId` integer: If this sample was created by a synthetic data job, it's referenced here.
    - `imageDimensions` object
      - `width` integer, required
      - `height` integer, required
    - `videoUrl` string: Video link, cropped and in original resolution.
    - `videoUrlFull` string: Video link in original resolution.
    - `labelMap` SampleLabelMapLabels
      - `type` 'key-values', required
      - `labels` object, required
    - `lastUpdatedBy` union: Information about the entity that last updated a sample. This can be a user, a project API key, an OAuth client, or a dataset version restore operation.
      - LastUpdatedByUser: The user who last updated a sample.
        - `type` 'user', required
        - `id` integer, required: The ID of the user that last updated the sample.
      - LastUpdatedByProjectApiKey: The project API key that last updated a sample.
        - `type` 'projectApiKey', required
        - `id` integer, required: The ID of the project API key that last updated the sample.
      - LastUpdatedByOAuthClient: The OAuth client that last updated a sample, and the user it is acting on behalf of.
        - `type` 'oauthClient', required
        - `oauthClientId` string, required: The ID of the OAuth client that last updated the sample.
        - `userId` integer: The user ID the OAuth client is acting on behalf of.
      - LastUpdatedByDatasetVersionRestore: The dataset restore that last updated a sample.
        - `type` 'datasetVersionRestore', required
        - `datasetVersionId` integer, required: The ID of the dataset version that last updated the sample.
        - `groupKey` string, required: A random grouping ID to keep restore snapshots isolated.
        - `actor` union: The actor that started the dataset restore operation.
          - object: The user who last updated a sample.
            - `type` 'user', required
            - `id` integer, required: The ID of the user that last updated the sample.
          - object: The project API key that last updated a sample.
            - `type` 'projectApiKey', required
            - `id` integer, required: The ID of the project API key that last updated the sample.
          - object: The OAuth client that last updated a sample, and the user it is acting on behalf of.
            - `type` 'oauthClient', required
            - `oauthClientId` string, required: The ID of the OAuth client that last updated the sample.
            - `userId` integer: The user ID the OAuth client is acting on behalf of.
    - `datastreams` SampleDatastream[], required
      - `index` integer, required
      - `chartType` 'chart' | 'image' | 'video' | 'table', required
      - `intervalMs` number, required: Interval between two windows (1000 / frequency).
      - `frequencyHz` number, required: Frequency of the datastream
      - `sensors` Sensor[], required
        - `index` integer, required: Index of the sensor (globally, so you can refer back to it in e.g. getSampleAsAudio)
        - `name` string, required: Name of the axis
        - `units` string, required: Type of data on this axis. Needs to comply to SenML units (see https://www.iana.org/assignments/senml/senml.xhtml).
      - `valuesCount` integer, required: Number of readings in this datastream.
      - `imageDimensions` object
        - `width` integer, required
        - `height` integer, required
      - `totalLengthMs` number, required: Total length (in ms.) of the datastream
  - `payload` RawSamplePayload, required: Sensor readings and metadata
    - `device_name` string: Unique identifier for this device. **Only** set this when the device has a globally unique identifier (e.g. MAC address).
    - `device_type` string, required: Device type, for example the exact model of the device. Should be the same for all similar devices.
    - `sensors` Sensor[], required: Array with sensor axes
      - `index` integer, required: Index of the sensor (globally, so you can refer back to it in e.g. getSampleAsAudio)
      - `name` string, required: Name of the axis
      - `units` string, required: Type of data on this axis. Needs to comply to SenML units (see https://www.iana.org/assignments/senml/senml.xhtml).
    - `values` array[], required: Array of sensor values. One array item per interval, and as many items in this array as there are sensor axes. This type is returned if there are multiple axes.
      - number[]
    - `cropStart` integer: New start index of the cropped sample
    - `cropEnd` integer: New end index of the cropped sample
    - `intervalMs` number, required: Interval between two windows (1000 / frequency). If the data was resampled, then this lists the resampled interval for this payload.
    - `frequencyHz` number, required: Frequency of the sample. If the data was resampled, then this lists the resampled frequency for this payload.
  - `totalPayloadLength` integer, required: Total number of payload values

---

[API](https://skmtc.dev/edgeimpulse/apis/edge-impulse-api.md) - [All operations](https://skmtc.dev/edgeimpulse/apis/edge-impulse-api/llms.txt) - [OpenAPI document](https://skmtc.dev/edgeimpulse/apis/edge-impulse-api/revisions/e2a976d38427?raw)
