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

# Accept an offer manually

> **Beta. This endpoint is unstable and may still change without notice.** Pin against the dated version and watch the changelog.

Records a manual acceptance on behalf of the recipient, with an optional signed PDF upload. Use this for offers accepted outside the recipient view.



## OpenAPI

````yaml assets/openapi-v2-offers.json post /api/offers/{id}/accept
openapi: 3.1.0
info:
  title: Fynn Angebote API (Beta)
  version: 2026-06
  description: >-
    **Beta / Unstable.** The Fynn Angebote (offers) API lets you read, update,
    publish, approve and accept offers programmatically. It is the actively
    maintained surface that replaces the older offer endpoints (still available
    but deprecated, removed on 2026-08-01).


    These endpoints are new and may still change without notice while the
    surface settles. Pin against the dated version and watch the changelog
    before relying on them in production.


    Authenticate every request with an API token of your organisation
    (`Authorization: Bearer api_...`). Documents are returned as media
    references; see the note on each media `id` for how to download the file.
servers:
  - url: https://coreapi.io
    description: Production
  - url: https://preview.coreapi.io
    description: Sandbox
security:
  - ApiToken: []
tags:
  - name: Offers
    description: Read, update, publish and accept offers. Beta.
  - name: Offer approval
    description: Internal approval flow for offers. Beta.
paths:
  /api/offers/{id}/accept:
    post:
      tags:
        - Offers
      summary: Accept an offer manually
      description: >-
        **Beta. This endpoint is unstable and may still change without notice.**
        Pin against the dated version and watch the changelog.


        Records a manual acceptance on behalf of the recipient, with an optional
        signed PDF upload. Use this for offers accepted outside the recipient
        view.
      operationId: acceptOffer
      parameters:
        - name: id
          in: path
          required: true
          description: Offer ID (ULID).
          schema:
            type: string
            format: ulid
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                acceptedAt:
                  type: string
                  format: date-time
                  description: >-
                    Acceptance timestamp as an ISO-8601 instant, e.g.
                    2026-04-01T00:00:00Z.
                file:
                  type: string
                  format: binary
                  description: Optional signed PDF (max 20 MB).
              required:
                - acceptedAt
      responses:
        '200':
          description: The acceptance outcome.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferAcceptOutcome'
        '403':
          description: Access denied.
        '404':
          description: Offer not found or in another organisation.
        '409':
          description: The offer cannot be accepted in its current state.
      security:
        - ApiToken: []
components:
  schemas:
    OfferAcceptOutcome:
      type: object
      properties:
        status:
          type: string
          enum:
            - open
            - signing
            - awaiting_invoice_details
            - signed
            - archived
        signedAt:
          type:
            - string
            - 'null'
          format: date-time
      required:
        - status
  securitySchemes:
    ApiToken:
      type: http
      scheme: bearer
      description: >-
        API token of the organisation. Send it as Authorization: Bearer api_...
        The token is bound to exactly one organisation.

````