Akahu Datafiles API

The Datafiles API from Akahu — 3 operation(s) for datafiles.

Operations 5

POST /v1/applications/{applicationId}/datafiles Create datafile #
GET /v1/applications/{applicationId}/datafiles List datafiles for application #
GET /v1/applications/{applicationId}/datafiles/{dataFileId} Get datafile details #
DELETE /v1/applications/{applicationId}/datafiles/{dataFileId} Delete datafile #
GET /v1/applications/{applicationId}/datafiles/{dataFileId}/download Download datafile contents #

Specifications

Schemas & Data

📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-resource-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-report-account-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-document-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-datafile-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-create-sharing-request-params-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-report-transaction-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-account-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-transaction-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-payment-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-party-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-connection-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-pending-transaction-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-genie-outlet-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-genie-merchant-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-genie-feedback-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-genie-category-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-genie-search-response-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-genie-search-request-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-one-off-payment-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-one-off-payment-request-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-one-off-payment-request-response-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-one-off-payment-connections-response-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-status-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-pdf-statement-schema.json
📊
JSONSchema
https://artifacts.apis.io/akahu/json-schema/akahu-pdf-export-schema.json

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/akahu:akahu-datafiles-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

akahu-datafiles-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Akahu Apply Datafiles API
  version: 1.0.0
servers:
- url: https://api.apply.akahu.nz
  description: Akahu Apply API
tags:
- name: Datafiles
paths:
  /v1/applications/{applicationId}/datafiles:
    post:
      operationId: CreateDatafile
      tags:
      - Datafiles
      summary: Create datafile
      description: 'This endpoint creates a new datafile record in a `pending` state.

        Each datafile represents a single file, which needs to be uploaded shortly after datafile creation.


        If the datafile is not uploaded before the `expires_at` timestamp included in the response, the record will be automatically deleted.


        The datafile can be uploaded by making a `PUT` request to the `upload_url` provided in the response.

        Datafile have a maximum size of 200MB.'
      deprecated: false
      security:
      - APIKey: []
      parameters:
      - schema:
          $ref: '#/components/schemas/ApplicationId'
        required: true
        name: applicationId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  maxLength: 255
                  description: The filename of this datafile.
                schema:
                  type: string
                  description: The name of the schema for this datafile.
                content_type:
                  type: string
                  enum:
                  - application/json
                  description: The content type of the datafile.
              required:
              - name
              - schema
              - content_type
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    $ref: '#/components/schemas/DatafileId'
                  expires_at:
                    type: string
                    format: date-time
                  upload_url:
                    type: string
                    format: uri
                required:
                - _id
                - expires_at
                - upload_url
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDatafile400ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic401ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic403ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic404ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic429ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic500ErrorResponse'
    get:
      operationId: ListDatafiles
      tags:
      - Datafiles
      summary: List datafiles for application
      deprecated: false
      security:
      - APIKey: []
      parameters:
      - schema:
          $ref: '#/components/schemas/ApplicationId'
        required: true
        name: applicationId
        in: path
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Datafile'
                required:
                - items
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic400ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic401ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic403ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic404ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic429ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic500ErrorResponse'
  /v1/applications/{applicationId}/datafiles/{dataFileId}:
    get:
      operationId: GetDatafile
      tags:
      - Datafiles
      summary: Get datafile details
      deprecated: false
      security:
      - APIKey: []
      parameters:
      - schema:
          $ref: '#/components/schemas/ApplicationId'
        required: true
        name: applicationId
        in: path
      - schema:
          $ref: '#/components/schemas/DatafileId'
        required: true
        name: dataFileId
        in: path
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Datafile'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic400ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic401ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic403ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic404ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic429ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic500ErrorResponse'
    delete:
      operationId: DeleteDatafile
      tags:
      - Datafiles
      summary: Delete datafile
      deprecated: false
      security:
      - APIKey: []
      parameters:
      - schema:
          $ref: '#/components/schemas/ApplicationId'
        required: true
        name: applicationId
        in: path
      - schema:
          $ref: '#/components/schemas/DatafileId'
        required: true
        name: dataFileId
        in: path
      responses:
        '204':
          description: Accepted
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteDatafile400ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic401ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic403ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic404ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic429ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic500ErrorResponse'
  /v1/applications/{applicationId}/datafiles/{dataFileId}/download:
    get:
      operationId: DownloadDatafile
      tags:
      - Datafiles
      summary: Download datafile contents
      deprecated: false
      security:
      - APIKey: []
      parameters:
      - schema:
          $ref: '#/components/schemas/ApplicationId'
        required: true
        name: applicationId
        in: path
      - schema:
          $ref: '#/components/schemas/DatafileId'
        required: true
        name: dataFileId
        in: path
      responses:
        '200':
          description: Success
          content:
            application/octet-stream:
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadDatafile400ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic401ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic403ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic404ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic429ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Generic500ErrorResponse'
components:
  schemas:
    Generic401ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Generic401ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    DeleteDatafile400ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                oneOf:
                - $ref: '#/components/schemas/Generic400ErrorResponseCode'
                - $ref: '#/components/schemas/DeleteDatafile400ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    DeleteDatafile400ErrorResponseCode:
      type: string
      enum:
      - application_archived
    Datafile:
      type: object
      properties:
        _id:
          $ref: '#/components/schemas/DatafileId'
        _application:
          type: string
          pattern: ^application_[a-z0-9]{24,27}$
          example: application_tz4a98xxat96iws9zmbrgj3a
          description: The application that this datafile belongs to.
        name:
          type: string
          maxLength: 255
          description: The filename of this datafile.
        content_type:
          type: string
          enum:
          - application/json
          description: The content type of the datafile.
        schema:
          type: string
          description: The name of the schema for this datafile.
        status:
          $ref: '#/components/schemas/DatafileStatus'
        failure_reason:
          type: object
          properties:
            code:
              $ref: '#/components/schemas/DatafileFailureReasonCode'
            message:
              type: string
              default: Sorry, something went wrong while processing this datafile. Please try again later.
          required:
          - code
          description: If this datafile has failed to be processed, this field provides additional detail about what went wrong.
        created_at:
          type: string
          format: date-time
          description: The date that this datafile was created.
        updated_at:
          type: string
          format: date-time
          description: The date that this datafile was last updated at.
        expires_at:
          type: string
          format: date-time
          description: "Expiry for the datafile, after which the record will be deleted. Expiry varies as the datafile progresses through its lifecycle:\n\n - While the datafile has a status of `pending`, expiry is short lived, ensuring that the record is cleaned up quickly if a file is never uploaded.\n\n - After the datafile upload has been received, a 1 year expiry is set, after which the datafile and all associated data will be permanently deleted."
      required:
      - _id
      - _application
      - name
      - content_type
      - schema
      - status
      - created_at
      - updated_at
      description: '**Datafiles** are a structured way to bring financial data into an Application for analysis.


        A datafile represents a single file containing a financial information, that follows a supported schema.


        When a datafile is uploaded to an Application, Akahu Apply will process the information from the file and convert it to a standardised format.


        Datafiles can be added to an application only via this API.


        Note: Datafiles and their associated data expire 1 year after creation.'
    Generic429ErrorResponseCode:
      type: string
      enum:
      - too_many_requests
    Generic400ErrorResponseCode:
      type: string
      enum:
      - invalid_type
      - too_big
      - too_small
      - invalid_format
      - not_multiple_of
      - unrecognized_keys
      - invalid_union
      - invalid_key
      - invalid_element
      - invalid_value
      - invalid
      - invalid_id
    ApplicationId:
      type: string
      pattern: ^application_[a-z0-9]{24,27}$
      example: application_tz4a98xxat96iws9zmbrgj3a
    Generic429ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Generic429ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    DownloadDatafile400ErrorResponseCode:
      type: string
      enum:
      - datafile_locked
    DownloadDatafile400ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                oneOf:
                - $ref: '#/components/schemas/Generic400ErrorResponseCode'
                - $ref: '#/components/schemas/DownloadDatafile400ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    CreateDatafile400ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                oneOf:
                - $ref: '#/components/schemas/Generic400ErrorResponseCode'
                - $ref: '#/components/schemas/CreateDatafile400ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    Generic401ErrorResponseCode:
      type: string
      enum:
      - unauthorized
    Generic500ErrorResponseCode:
      type: string
      enum:
      - internal_error
    Generic404ErrorResponseCode:
      type: string
      enum:
      - not_found
    DatafileFailureReasonCode:
      type: string
      enum:
      - internal_error
      - invalid_input
      - timeout
      - malware_scan_failed
      - malware_detected
    DatafileId:
      type: string
      pattern: ^dat_[a-z0-9]{24,27}$
      example: dat_tz4a98xxat96iws9zmbrgj3a
    CreateDatafile400ErrorResponseCode:
      type: string
      enum:
      - application_archived
    DatafileStatus:
      type: string
      enum:
      - pending
      - processing
      - completed
      - failed
      description: "The status of a datafile:\n\n - `pending` The datafile record exists, but the file has not yet been fully uploaded.\n\n - `processing` Akahu Apply is extracting and enriching the data from this datafile.\n\n - `completed` This datafile has been successfully processed.\n\n - `failed` This datafile has not been successfully processed. See the `failure_reason` for more detail."
    Generic500ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Generic500ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    Generic404ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Generic404ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    Generic403ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Generic403ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    Generic400ErrorResponse:
      type: object
      properties:
        issues:
          type: array
          items:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Generic400ErrorResponseCode'
              message:
                type: string
              path:
                $ref: '#/components/schemas/IssuePath'
            required:
            - code
            - message
            - path
      required:
      - issues
    Generic403ErrorResponseCode:
      type: string
      enum:
      - forbidden
    IssuePath:
      type: array
      items:
        title: IssuePathSegment
        oneOf:
        - type: string
        - type: integer
  securitySchemes:
    APIKey:
      type: http
      scheme: bearer
      description: Bearer auth using an Akahu Apply API Key. These can be generated by an Akahu Apply administrator in the web portal.
x-provenance:
  method: searched
  source: https://developers.akahu.nz/reference
  harvested: '2026-10-26'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://developers.akahu.nz/reference/archiveapplication.md
  - https://developers.akahu.nz/reference/createapplication.md
  - https://developers.akahu.nz/reference/createdatafile.md
  - https://developers.akahu.nz/reference/createdocument.md
  - https://developers.akahu.nz/reference/createreferral.md
  - https://developers.akahu.nz/reference/createreferralredemption.md
  - https://developers.akahu.nz/reference/createreport.md
  - https://developers.akahu.nz/reference/createsharingrequest.md
  - https://developers.akahu.nz/reference/deletedatafile.md
  - https://developers.akahu.nz/reference/deletedocument.md
  - https://developers.akahu.nz/reference/downloaddatafile.md
  - https://developers.akahu.nz/reference/downloaddocument.md
  - https://developers.akahu.nz/reference/getapplication.md
  - https://developers.akahu.nz/reference/getcurrentorg.md
  - https://developers.akahu.nz/reference/getdatafile.md
  - https://developers.akahu.nz/reference/getdocument.md
  - https://developers.akahu.nz/reference/getreferral.md
  - https://developers.akahu.nz/reference/getreferralredemption.md
  - https://developers.akahu.nz/reference/getreport.md
  - https://developers.akahu.nz/reference/getreportaccounts.md
  - https://developers.akahu.nz/reference/getreportdatasources.md
  - https://developers.akahu.nz/reference/getreporthtmldownload.md
  - https://developers.akahu.nz/reference/getreportinsights.md
  - https://developers.akahu.nz/reference/getreportjsondownload.md
  - https://developers.akahu.nz/reference/getreporttransactions.md
  - https://developers.akahu.nz/reference/getsharingrequest.md
  - https://developers.akahu.nz/reference/listdatafiles.md
  - https://developers.akahu.nz/reference/listdocuments.md
  - https://developers.akahu.nz/reference/listreferrals.md
  - https://developers.akahu.nz/reference/listresources.md
  - https://developers.akahu.nz/reference/revokereferral.md
  - https://developers.akahu.nz/reference/unarchiveapplication.md
  - https://developers.akahu.nz/reference/updateapplication.md
  merge:
    pages: 33
    deduped: 2607
    conflicts_kept_first: 0