> ## Documentation Index
> Fetch the complete documentation index at: https://dev.nickel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload a file



## OpenAPI

````yaml /nickel-api-docs.yaml post /file
openapi: 3.0.3
info:
  title: Nickel API
  description: >-
    This is the specification for the Nickel Rest API. The API lets you
    programmatically interact with the Nickel server. It uses resource oriented
    URLs, accepts and returns JSON encoded payloads and uses standard HTTP
    response codes. It is not a direct API to move money, but instead allows you
    to interact with Nickel as you would on a web interface.
  termsOfService: https://www.nickel.com/terms-of-service
  contact:
    email: support@nickel.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
  - url: https://rest.staging.nickel.com
    description: Sandbox / Staging
  - url: https://rest.nickel.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Payment
    description: Payments from your customers to you
  - name: Disbursement
    description: Payouts made from Nickel to you
  - name: Payment Link
    description: A request for payment against an invoice
  - name: Customer
    description: A customer record to request payments against
  - name: Charge Authorization
    description: >-
      An authorization for your customer to allow you to charge their payment
      method directly
  - name: Webhook
    description: Create a webhook for nickel to send updates to
  - name: File
    description: A file you can use to attach to invoices or debit authorizations
  - name: Vendor
    description: Manage vendors for accounts payable
  - name: Bill
    description: Bills from vendors and bill payments
  - name: Bill Payment Method
    description: >-
      A merchant's payment methods used to pay bills (bank accounts and cards on
      file)
  - name: Vendor Payout Method
    description: Vendor bank account and delivery method management
externalDocs:
  description: Find out more about Nickel
  url: https://nickel.com
paths:
  /file:
    post:
      tags:
        - File
      summary: Upload a file
      operationId: uploadFile
      requestBody:
        description: File Upload
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/file_body'
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
        '400':
          description: Invalid input (missing file, invalid file type, or validation error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    file_body:
      required:
        - file
      type: object
      properties:
        file:
          type: string
          format: binary
          description: The file to upload
        type:
          type: string
          description: >-
            The file type. Optional — if omitted, the type can be inferred from
            the data field.
          enum:
            - ACH_DEBIT_AUTHORIZATION_PDF
            - CREDIT_CARD_AUTHORIZATION_PDF
            - INVOICE_PDF
        data:
          type: string
          description: >-
            Alternative way to specify the file type using query-string format,
            e.g. "type=ACH_DEBIT_AUTHORIZATION_PDF". Either type or data must be
            provided.
    File:
      required:
        - createdAt
        - id
        - key
        - type
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        type:
          type: string
          enum:
            - ACH_DEBIT_AUTHORIZATION_PDF
            - CREDIT_CARD_AUTHORIZATION_PDF
            - INVOICE_PDF
        createdAt:
          type: string
          format: date-time
    Error:
      required:
        - error
      type: object
      properties:
        error:
          type: string
          description: >-
            A human-readable error message describing what went wrong. Note that
            some 500 responses may return a plain text string instead of this
            JSON object.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````