> ## Documentation Index
> Fetch the complete documentation index at: https://docs.canary.effectiveai.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Attach an existing file to an objection

> Attach a file using mode attach (default), or explicitly copy its current version using mode copy. Attach is repeatable for the same owner and requires file edit access; a file owned by another record returns 409. Copy requires source read and destination edit access and preserves the original. Copy is limited to 100 MiB; larger files return 413 copy_too_large and must be uploaded directly; it creates a new file on every request, so reconcile the document list after an uncertain result before retrying. Requires edit access to the managed filing and objection. Does not extract items, run triage or notify an agent.



## OpenAPI

````yaml /openapi.json post /objections/{id}/documents
openapi: 3.0.3
info:
  title: Effective API
  version: 2.0.0
  description: The public Effective REST API. Authenticate using an Effective API key.
servers:
  - url: https://api.canary.effectiveai.app/api/v2
    description: Canary
security:
  - bearerAuth: []
paths:
  /objections/{id}/documents:
    post:
      tags:
        - Objections
      summary: Attach an existing file to an objection
      description: >-
        Attach a file using mode attach (default), or explicitly copy its
        current version using mode copy. Attach is repeatable for the same owner
        and requires file edit access; a file owned by another record returns
        409. Copy requires source read and destination edit access and preserves
        the original. Copy is limited to 100 MiB; larger files return 413
        copy_too_large and must be uploaded directly; it creates a new file on
        every request, so reconcile the document list after an uncertain result
        before retrying. Requires edit access to the managed filing and
        objection. Does not extract items, run triage or notify an agent.
      operationId: attachObjectionDocument
      parameters:
        - schema:
            type: string
            format: uuid
          required: true
          name: id
          in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                fileId:
                  type: string
                  format: uuid
                mode:
                  type: string
                  enum:
                    - attach
                    - copy
                  default: attach
              required:
                - fileId
              additionalProperties: false
      responses:
        '200':
          description: Attached file (a new ID when copied).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ObjectionDocument'
        '400':
          description: >-
            Invalid parameters, cursor or completion token;
            invalid_upload_content means correct the file and start a new
            upload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '401':
          description: Authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '403':
          description: >-
            Current record, destination or file permissions do not permit this
            operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '404':
          description: >-
            Objection or document is missing, inaccessible or not attached to
            this objection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '409':
          description: >-
            Read-only filing, document belongs to another owner, upload not
            ready, or concurrent file change. Copy an owned file explicitly;
            retry concurrent completion after it finishes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '413':
          description: >-
            copy_too_large: source exceeds the 100 MiB copy limit; upload the
            file directly instead.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '415':
          description: Content-Type must be application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '500':
          description: Unexpected server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '503':
          description: Temporarily unavailable. Retry-After is in seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
      security:
        - bearerAuth: []
components:
  schemas:
    V2ObjectionDocument:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: >-
            File ID. Read metadata at /files/{id}, download at
            /files/{id}/download.
        name:
          type: string
        canOpen:
          type: boolean
          description: >-
            Whether the caller can read the file content; content endpoints
            recheck current access.
      required:
        - id
        - name
        - canOpen
      additionalProperties: false
    V2CodedError:
      allOf:
        - $ref: '#/components/schemas/V2Error'
        - type: object
          properties:
            code:
              type: string
              minLength: 1
              description: Stable error code. Clients must tolerate unknown future codes.
            details:
              type: array
              items:
                type: object
                properties:
                  location:
                    type: string
                    enum:
                      - path
                      - query
                      - header
                      - body
                  path:
                    type: array
                    items:
                      type: string
                      maxLength: 64
                    maxItems: 12
                  code:
                    type: string
                    enum:
                      - required
                      - invalid_type
                      - invalid_value
                      - unknown_field
                  message:
                    type: string
                    minLength: 1
                    maxLength: 200
                required:
                  - location
                  - path
                  - code
                  - message
              minItems: 1
              maxItems: 20
              description: Bounded safe validation issues; may omit some invalid fields.
            requestId:
              type: string
              minLength: 1
              maxLength: 128
              description: >-
                Existing server correlation for this HTTP attempt, when
                available.
            dataset:
              type: string
              enum:
                - naic
                - osha
              description: Dataset needed for dataset_not_enabled.
            businessCode:
              type: string
              description: The rater’s own refusal code, for business_rejection.
            violations:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                    description: Authored or built-in constraint code
                  message:
                    type: string
                    description: Authored message for the failed constraint
                  path:
                    type: string
                    description: Input path of the offending value; empty for the request
                  value:
                    nullable: true
                    description: Offending input value, size-bounded by the runtime
                  constraint:
                    type: string
                    description: The constraint the value failed, as text
                  cite:
                    type: string
                    nullable: true
                    description: >-
                      Filing citation of the constraint, when the source cites
                      one
                required:
                  - code
                  - message
                  - path
                  - value
                  - constraint
                  - cite
                additionalProperties: false
              maxItems: 256
              description: >-
                Each input constraint the submission failed, for invalid_inputs
                and business_rejection.
            violationsTruncated:
              type: boolean
              description: >-
                True when the rater reported more violations than violations
                holds.
            executionId:
              type: string
              description: >-
                The recorded execution of a failed rating, for rater rating
                failures.
            accessUrl:
              type: string
              nullable: true
              format: uri
              description: >-
                Where to add the product to your account, for
                product_access_required.
          required:
            - code
    V2Error:
      type: object
      properties:
        error:
          type: string
          minLength: 1
          description: Human-readable explanation of the failure.
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Effective API key. Send Authorization: Bearer sk-eai-...'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.