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

# Citește o previziune



## OpenAPI

````yaml /openapi/v1.ro.yaml get /forecasts/{id}
openapi: 3.1.0
info:
  title: ThinkOut API
  version: '1.0'
  description: >-
    Acces de citire la datele unui spațiu de lucru ThinkOut.


    În versiunea 1 fiecare endpoint este un `GET`. Listele folosesc același
    înveliș și se paginează cu un cursor oriunde pot crește. Fiecare răspuns
    poartă `X-RateLimit-Limit`, `X-RateLimit-Remaining` și `X-RateLimit-Reset`.


    Versiunea 1 se schimbă doar prin adăugare: pot apărea oricând endpointuri
    noi, parametri opționali, câmpuri de răspuns și valori de enumerare.
    Tolerează câmpurile necunoscute și nu trata niciodată o enumerare ca
    închisă.
  contact:
    name: Suport ThinkOut
    url: https://developers.thinkout.io/guides/support
servers:
  - url: https://api.thinkout.io/v1
security:
  - apiKey: []
tags:
  - name: Bănci
    description: Conexiunile bancare ale spațiului de lucru și starea fiecăreia.
  - name: Conturi
    description: Conturi manuale, sincronizate cu banca și delegate, cu solduri calculate.
  - name: Tranzacții
    description: Mișcări înregistrate și în așteptare pe conturile spațiului de lucru.
  - name: Categorii
    description: Arborele de categorii al spațiului de lucru, pe direcție și activitate.
  - name: Parteneri
    description: >-
      Clienții și furnizorii cărora le sunt atribuite tranzacțiile și
      previziunile.
  - name: Etichete
    description: Etichete libere, grupate pe tipuri.
  - name: Previziuni
    description: Încasări și plăți planificate și tranzacțiile care le-au realizat.
  - name: Rapoarte
    description: >-
      Totaluri, nu rânduri. Sinteze peste tranzacții, previziuni și cash flow,
      plus soldurile pe conturi.
paths:
  /forecasts/{id}:
    get:
      tags:
        - Previziuni
      summary: Citește o previziune
      operationId: getForecast
      parameters:
        - $ref: '#/components/parameters/id'
        - $ref: '#/components/parameters/forecast_expand'
      responses:
        '200':
          description: Previziunea.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forecast'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    id:
      name: id
      in: path
      required: true
      schema:
        type: string
        format: uuid
    forecast_expand:
      name: expand
      in: query
      description: >-
        Relații de întors ca obiecte în loc de identificatori. Separate prin
        virgulă. Extinderea merge un singur nivel; un nume necunoscut este
        respins cu `invalid_expand`.
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
          enum:
            - category
            - counterparty
            - labels
            - recurrence
            - linked_transactions
      example: category,linked_transactions
  schemas:
    Forecast:
      type: object
      required:
        - object
        - id
        - date
        - amount
        - remaining_amount
        - currency
        - direction
        - status
        - description
        - comment
        - category
        - counterparty
        - labels
        - recurrence
        - linked_transactions
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: forecast
        id:
          type: string
          format: uuid
        date:
          type: string
          format: date
          description: Ziua în care este așteptată mișcarea.
        amount:
          $ref: '#/components/schemas/Money'
        remaining_amount:
          $ref: '#/components/schemas/Money'
          description: Partea din `amount` neacoperită încă de tranzacțiile asociate.
        currency:
          $ref: '#/components/schemas/Currency'
        direction:
          $ref: '#/components/schemas/Direction'
        status:
          $ref: '#/components/schemas/ForecastStatus'
        description:
          type:
            - string
            - 'null'
        comment:
          type:
            - string
            - 'null'
        category:
          $ref: '#/components/schemas/ExpandableCategory'
        counterparty:
          $ref: '#/components/schemas/ExpandableCounterparty'
        labels:
          $ref: '#/components/schemas/ExpandableLabels'
        recurrence:
          $ref: '#/components/schemas/ExpandableRecurrence'
        linked_transactions:
          type: array
          description: >-
            Tranzacțiile potrivite cu această previziune, ca identificatori, sau
            ca tranzacții când `linked_transactions` este numit în `expand`.
          items:
            oneOf:
              - type: string
                format: uuid
              - $ref: '#/components/schemas/Transaction'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: forecast
        id: 7e6d5c4b-3a29-4180-9f8e-7d6c5b4a3928
        date: '2026-09-15'
        amount: '-4200.00'
        remaining_amount: '-4200.00'
        currency: EUR
        direction: outflow
        status: planned
        description: Office rent
        comment: null
        category: 2a3b4c5d-6e7f-4809-8a1b-2c3d4e5f6a7b
        counterparty: 8b9c0d1e-2f3a-4b5c-8d6e-7f8a9b0c1d2e
        labels:
          - 0f1e2d3c-4b5a-4968-8776-655443322110
        recurrence: 4c5d6e7f-8091-4a2b-9c3d-4e5f6a7b8c9d
        linked_transactions: []
        created_at: '2025-12-20T09:30:00Z'
        updated_at: '2025-12-20T09:30:00Z'
    Money:
      type: string
      description: >-
        Sumă zecimală ca șir de caractere, cu două decimale. Negativ înseamnă
        ieșire la tranzacții, previziuni și cifre din rapoarte.
      pattern: ^-?[0-9]+\.[0-9]{2}$
      example: '-1250.00'
    Currency:
      type: string
      description: Cod de monedă alfabetic ISO 4217.
      pattern: ^[A-Z]{3}$
      example: RON
    Direction:
      type: string
      description: >-
        Dacă banii intră sau ies. Pe o tranzacție sau o previziune urmează
        semnul lui `amount`.
      enum:
        - inflow
        - outflow
    ForecastStatus:
      type: string
      description: >-
        `realised` este completă. `partial` are tranzacții asociate. `overdue`
        are data înainte de azi și niciuna. `planned` are data azi sau mai
        târziu și niciuna.
      enum:
        - planned
        - overdue
        - partial
        - realised
    ExpandableCategory:
      description: >-
        Identificatorul unei categorii, sau categoria completă când este numită
        în `expand`.
      oneOf:
        - type: string
          format: uuid
        - $ref: '#/components/schemas/Category'
    ExpandableCounterparty:
      description: >-
        Identificatorul unui partener, partenerul complet când este numit în
        `expand`, sau `null` când nu există atribuire.
      oneOf:
        - type: string
          format: uuid
        - $ref: '#/components/schemas/Counterparty'
        - type: 'null'
    ExpandableLabels:
      description: >-
        Identificatori de etichete, sau etichetele complete când `labels` este
        numit în `expand`.
      type: array
      items:
        oneOf:
          - type: string
            format: uuid
          - $ref: '#/components/schemas/Label'
    ExpandableRecurrence:
      description: >-
        Identificatorul planului recurent din care a fost generată previziunea,
        planul complet când este trecut în `expand`, sau `null` pentru o
        previziune unică.
      oneOf:
        - type: string
          format: uuid
        - $ref: '#/components/schemas/Recurrence'
        - type: 'null'
    Transaction:
      type: object
      required:
        - object
        - id
        - date
        - amount
        - currency
        - direction
        - status
        - source
        - description
        - comment
        - account
        - category
        - counterparty
        - labels
        - bank_details
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: transaction
        id:
          type: string
          format: uuid
        date:
          type: string
          format: date
          description: Data înregistrării. Nu există componentă de timp.
          example: '2026-09-03'
        amount:
          $ref: '#/components/schemas/Money'
        currency:
          $ref: '#/components/schemas/Currency'
        direction:
          $ref: '#/components/schemas/Direction'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        source:
          $ref: '#/components/schemas/TransactionSource'
        description:
          type:
            - string
            - 'null'
          example: ORANGE ROMANIA SA
        comment:
          type:
            - string
            - 'null'
          description: Text liber adăugat de utilizatori în ThinkOut.
        account:
          $ref: '#/components/schemas/ExpandableAccount'
        category:
          oneOf:
            - $ref: '#/components/schemas/ExpandableCategory'
            - type: 'null'
          description: >-
            `null` pentru o tranzacție împărțită, a cărei categorisire stă pe
            bucățile ei.
        counterparty:
          $ref: '#/components/schemas/ExpandableCounterparty'
        labels:
          $ref: '#/components/schemas/ExpandableLabels'
        bank_details:
          oneOf:
            - $ref: '#/components/schemas/BankDetails'
            - type: 'null'
          description: '`null` dacă `source` nu este `bank`.'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: transaction
        id: 8f1c0a4e-2b1d-4c8e-9f3a-7d6e5c4b3a21
        date: '2026-09-03'
        amount: '-1250.00'
        currency: RON
        direction: outflow
        status: booked
        source: bank
        description: ORANGE ROMANIA SA
        comment: null
        account: c2d7e8f9-1a2b-4c3d-8e9f-0a1b2c3d4e5f
        category: 3b4c5d6e-7f80-4a1b-9c2d-3e4f5a6b7c8d
        counterparty: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
        labels:
          - 1f2e3d4c-5b6a-4978-8877-665544332211
        bank_details:
          payer: THINKOUT SRL
          payer_details: RO49INGB0000999900000001
          payee: ORANGE ROMANIA SA
          payee_details: RO12BTRL0000000000000002
          reference: Factura 2026-08 nr 1234567
          additional: null
        created_at: '2026-09-03T08:12:44Z'
        updated_at: '2026-09-03T08:12:44Z'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - code
            - message
            - param
            - request_id
          properties:
            type:
              type: string
              enum:
                - invalid_request
                - authentication
                - not_found
                - rate_limit
                - server
            code:
              type: string
              description: >-
                Motiv stabil, citibil de o mașină. Ramifică pe acesta, nu pe
                `message`. Unul dintre `invalid_parameter`, `invalid_cursor`,
                `limit_out_of_range`, `invalid_expand`, `as_of_in_future`,
                `unauthorized`, `forbidden`, `resource_not_found`,
                `too_many_groups`, `period_too_long`, `rate_limited`,
                `internal_error`.
            message:
              type: string
              description: >-
                Explicație pentru oameni, în engleză. Formularea se poate
                schimba.
            param:
              type:
                - string
                - 'null'
              description: Parametrul de query vinovat, când există unul.
            request_id:
              type: string
              description: Menționează-l când contactezi suportul.
    Category:
      type: object
      required:
        - object
        - id
        - name
        - code
        - direction
        - activity
        - parent_id
        - position
        - color
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: category
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Telecom
        code:
          type:
            - string
            - 'null'
          description: >-
            Identificatorul categoriei în șablonul din care a fost creat spațiul
            de lucru, sau `null` pentru o categorie creată de cineva. Doar
            `uncategorized_inflows` și `uncategorized_outflows` există în
            fiecare spațiu de lucru și merită tratate special.
          example: uncategorized_outflows
        direction:
          $ref: '#/components/schemas/Direction'
        activity:
          $ref: '#/components/schemas/Activity'
        parent_id:
          type:
            - string
            - 'null'
          format: uuid
          description: '`null` pentru categoriile de nivel superior.'
        position:
          type: integer
          description: Ordinea între categoriile de pe același nivel, ca în ThinkOut.
        color:
          type:
            - string
            - 'null'
          description: Culoare hex cu litere mici, ca în ThinkOut.
          pattern: ^#[0-9a-f]{6}$
          example: '#1b7fe4'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: category
        id: 3b4c5d6e-7f80-4a1b-9c2d-3e4f5a6b7c8d
        name: Telecom
        code: null
        direction: outflow
        activity: operating
        parent_id: 6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d
        position: 2
        color: '#1b7fe4'
        created_at: '2024-01-01T10:00:00Z'
        updated_at: '2024-01-01T10:00:00Z'
    Counterparty:
      type: object
      required:
        - object
        - id
        - name
        - country_code
        - color
        - symbol
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: counterparty
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Orange
        country_code:
          type:
            - string
            - 'null'
          description: Cod de țară ISO 3166-1 alpha-2.
          pattern: ^[A-Z]{2}$
          example: RO
        color:
          type:
            - string
            - 'null'
          pattern: ^#[0-9a-f]{6}$
        symbol:
          type:
            - string
            - 'null'
          description: Text scurt afișat în avatarul partenerului în ThinkOut.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: counterparty
        id: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
        name: Orange
        country_code: RO
        color: '#e4571b'
        symbol: OR
        created_at: '2024-02-14T08:00:00Z'
        updated_at: '2024-02-14T08:00:00Z'
    Label:
      type: object
      required:
        - object
        - id
        - name
        - type
        - color
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: label
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Q3
        type:
          oneOf:
            - $ref: '#/components/schemas/LabelType'
            - type: 'null'
          description: >-
            Grupul din care face parte eticheta, sau `null` când nu are
            niciunul. Tipurile nu au endpoint propriu.
        color:
          type:
            - string
            - 'null'
          pattern: ^#[0-9a-f]{6}$
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: label
        id: 1f2e3d4c-5b6a-4978-8877-665544332211
        name: Q3
        type:
          id: 7c8d9e0f-1a2b-4c3d-8e4f-5a6b7c8d9e0f
          name: Quarter
        color: '#7c3aed'
        created_at: '2026-01-05T09:00:00Z'
        updated_at: '2026-01-05T09:00:00Z'
    Recurrence:
      type: object
      description: Planul recurent din care a fost generată această previziune.
      required:
        - id
        - name
        - interval
        - every
        - start_date
        - end_date
        - occurrences
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Office rent
        interval:
          $ref: '#/components/schemas/RecurrenceInterval'
        every:
          type: integer
          minimum: 1
          description: >-
            Numărul de intervale între apariții. `interval: month, every: 1`
            înseamnă lunar.
        start_date:
          type: string
          format: date
        end_date:
          type: string
          format: date
        occurrences:
          type: integer
          description: Numărul total de previziuni generate de plan.
    TransactionStatus:
      type: string
      description: >-
        Tranzacțiile `pending` vin de la bancă și nu sunt încă înregistrate.
        Suma lor se poate schimba la înregistrare, deci actualizează după `id`.
      enum:
        - booked
        - pending
    TransactionSource:
      type: string
      description: Cum a intrat tranzacția în ThinkOut.
      enum:
        - manual
        - import
        - bank
    ExpandableAccount:
      description: >-
        Identificatorul unui cont, sau contul complet când este numit în
        `expand`.
      oneOf:
        - type: string
          format: uuid
        - $ref: '#/components/schemas/Account'
    BankDetails:
      type: object
      description: Câmpuri brute primite de la bancă.
      required:
        - payer
        - payer_details
        - payee
        - payee_details
        - reference
        - additional
      properties:
        payer:
          type:
            - string
            - 'null'
        payer_details:
          type:
            - string
            - 'null'
          description: >-
            Identificatorii contului plătitorului, așa cum sunt furnizați de
            bancă.
        payee:
          type:
            - string
            - 'null'
        payee_details:
          type:
            - string
            - 'null'
        reference:
          type:
            - string
            - 'null'
          description: Referința plății sau linia de informații.
        additional:
          type:
            - string
            - 'null'
    Activity:
      type: string
      description: >-
        Secțiunea din situația fluxurilor de numerar căreia îi aparține
        categoria.
      enum:
        - operating
        - investing
        - financing
    LabelType:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Quarter
    RecurrenceInterval:
      type: string
      enum:
        - day
        - week
        - month
        - year
    Account:
      type: object
      required:
        - object
        - id
        - name
        - currency
        - group
        - source
        - balance
        - balance_as_of
        - opening_balance
        - opening_date
        - bank
        - external_account_id
        - original_name
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: account
        id:
          type: string
          format: uuid
        name:
          type: string
          example: ING Curent
        currency:
          $ref: '#/components/schemas/Currency'
        group:
          type:
            - string
            - 'null'
          description: Grupare cu text liber, atribuită în ThinkOut.
          example: Operational
        source:
          $ref: '#/components/schemas/AccountSource'
        balance:
          $ref: '#/components/schemas/Money'
        balance_as_of:
          type: string
          format: date
          description: Ziua al cărei sold de sfârșit de zi este raportat.
        opening_balance:
          $ref: '#/components/schemas/Money'
        opening_date:
          type: string
          format: date
          description: Data la care se aplică soldul inițial.
        bank:
          $ref: '#/components/schemas/ExpandableBank'
        external_account_id:
          type:
            - string
            - 'null'
          description: >-
            Identificatorul contului la furnizor. `null` pentru conturile
            manuale.
        original_name:
          type:
            - string
            - 'null'
          description: >-
            Numele contului așa cum îl raportează banca, înainte de orice
            redenumire în ThinkOut. `null` pentru conturile manuale.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: account
        id: c2d7e8f9-1a2b-4c3d-8e9f-0a1b2c3d4e5f
        name: ING Curent
        currency: RON
        group: Operational
        source: bank
        balance: '15230.45'
        balance_as_of: '2026-09-03'
        opening_balance: '1000.00'
        opening_date: '2024-01-01'
        bank: 5d6e7f80-9a1b-4c2d-8e3f-4a5b6c7d8e9f
        external_account_id: ACC-00012345
        original_name: Cont curent RON
        created_at: '2024-01-01T10:00:00Z'
        updated_at: '2026-08-30T06:00:00Z'
    AccountSource:
      type: string
      description: >-
        Conturile `delegated` sunt conturi bancare pe care alt spațiu de lucru
        le-a delegat către acesta.
      enum:
        - manual
        - bank
        - delegated
    ExpandableBank:
      description: >-
        Identificatorul unei conexiuni bancare, conexiunea completă când este
        numită în `expand`, sau `null` pentru un cont manual. Pe un cont
        `delegated` conexiunea aparține altui spațiu de lucru, așa că
        identificatorul este întors, dar nu este nici extins, nici citibil.
      oneOf:
        - type: string
          format: uuid
        - $ref: '#/components/schemas/Bank'
        - type: 'null'
    Bank:
      type: object
      description: >-
        O autorizare cu o singură bancă. Mai multe conturi pot folosi aceeași
        conexiune, iar un spațiu de lucru poate avea mai multe conexiuni la
        aceeași bancă.
      required:
        - object
        - id
        - name
        - country_code
        - status
        - last_sync_at
        - consent_expires_at
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: bank
        id:
          type: string
          format: uuid
        name:
          type: string
          description: Numele băncii, așa cum îl raportează furnizorul.
          example: ING Bank
        country_code:
          type:
            - string
            - 'null'
          description: Țara băncii, cod ISO 3166-1 alpha-2.
          pattern: ^[A-Z]{2}$
          example: RO
        status:
          $ref: '#/components/schemas/BankStatus'
        last_sync_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Când a întors furnizorul date cu succes ultima oară, sau `null`. O
            conexiune `connected` cu un `last_sync_at` vechi este cazul care
            merită o alertă.
        consent_expires_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Când trebuie reînnoit consimțământul bancar, dacă furnizorul îl
            raportează.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: bank
        id: 5d6e7f80-9a1b-4c2d-8e3f-4a5b6c7d8e9f
        name: ING Bank
        country_code: RO
        status: connected
        last_sync_at: '2026-09-03T06:00:00Z'
        consent_expires_at: '2026-11-30T00:00:00Z'
        created_at: '2024-01-01T10:00:00Z'
        updated_at: '2026-09-03T06:00:00Z'
    BankStatus:
      type: string
      description: >-
        `connected` funcționează. `loading` este o sincronizare în curs.
        `requires_action` cere ca o persoană să se autentifice sau să reaprobe
        conexiunea în ThinkOut. `error` este orice altă eroare. Doar `connected`
        înseamnă că datele din spate sunt la zi.
      enum:
        - connected
        - loading
        - requires_action
        - error
  responses:
    BadRequest:
      description: Un parametru este invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request
              code: invalid_parameter
              message: direction must be 'inflow' or 'outflow'
              param: direction
              request_id: 0HNF8K3QJL2VM:00000001
    Unauthorized:
      description: Cheia API lipsește, este malformată, necunoscută sau revocată.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: authentication
              code: unauthorized
              message: Missing, malformed, unknown or revoked API key
              param: null
              request_id: 0HNF8K3QJL2VM:00000001
    Forbidden:
      description: Cheia este validă, dar planul ThinkOut al companiei nu include API-ul.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: authentication
              code: forbidden
              message: >-
                The API is not included in this company's ThinkOut plan. Contact
                support@thinkout.io to enable it.
              param: null
              request_id: 0HNF8K3QJL2VM:00000001
    NotFound:
      description: Nu există niciun obiect cu acest id în spațiul de lucru al cheii.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: not_found
              code: resource_not_found
              message: Transaction not found
              param: null
              request_id: 0HNF8K3QJL2VM:00000001
    RateLimited:
      description: >-
        Peste 120 de cereri în minutul curent pentru această cheie. Așteaptă
        secundele din `Retry-After`.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Secunde până se resetează fereastra de un minut.
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Cereri permise pe minut.
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Cereri rămase în minutul curent.
        X-RateLimit-Reset:
          schema:
            type: integer
          description: Secunde până se resetează fereastra de un minut.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: rate_limit
              code: rate_limited
              message: Too many requests
              param: null
              request_id: 0HNF8K3QJL2VM:00000001
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        O cheie API creată în setările ThinkOut. O cheie citește un singur
        spațiu de lucru.

````

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