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

# Save chart notes



## OpenAPI

````yaml /docs/api/openapi.json post /v1/jev/annotations/save
openapi: 3.1.0
info:
  title: Quantura API
  version: 1.0.0
  description: >-
    Search markets and public datasets, download historical observations, create
    forecasts and inspect screener quantiles.
  contact:
    name: Quantura
    url: https://quantura.studio/contact
  license:
    name: Quantura API Terms
    url: https://quantura.studio/terms
servers:
  - url: https://quantura.studio/api
security:
  - bearerAuth: []
  - clerkOAuth:
      - openid
      - profile
      - email
tags:
  - name: Access
  - name: Forecast
  - name: Screener
  - name: Search
  - name: Download
  - name: Scout
paths:
  /v1/jev/annotations/save:
    servers:
      - url: https://quantura.studio/api
    post:
      tags:
        - Scout
      summary: Save chart notes
      operationId: saveForecastAnnotations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
                - context
                - notes
              properties:
                context:
                  $ref: '#/components/schemas/JevForecastContext'
                notes:
                  type: array
                  maxItems: 20
                  items:
                    type: object
                    additionalProperties: false
                    required:
                      - id
                      - text
                      - timestamp
                      - series
                    properties:
                      id:
                        type: string
                        format: uuid
                      text:
                        type: string
                        minLength: 1
                        maxLength: 240
                      timestamp:
                        type: string
                        format: date-time
                      series:
                        type: string
                        description: history or an exact available decimal quantile key.
      responses:
        '200':
          description: Private notes, with values derived server-side from existing points.
          content:
            application/json:
              schema:
                type: object
              example:
                data:
                  context_hash: example-context-hash
                  notes: []
        '401':
          description: Sign-in required or invalid authentication.
        '403':
          description: Paid API entitlement, scope or current resource access denied.
        '404':
          description: Saved or published context unavailable.
        '409':
          description: Context changed, conversation busy, or 30-turn limit reached.
        '422':
          description: Invalid reference, question, turn ID or annotation.
        '429':
          description: Per-user or global Scout budget reached.
        '503':
          description: Scout unavailable; no substitute answer is generated.
      security:
        - bearerAuth: []
        - clerkOAuth:
            - openid
            - profile
            - email
components:
  schemas:
    JevForecastContext:
      oneOf:
        - type: object
          additionalProperties: false
          required:
            - kind
            - id
          properties:
            kind:
              type: string
              enum:
                - ensemble
                - game
                - saved_game
                - sagemaker
            id:
              type: string
              pattern: ^[A-Za-z0-9_-]{1,220}$
        - type: object
          additionalProperties: false
          required:
            - kind
            - symbol
            - scan_id
          properties:
            kind:
              const: screener
            symbol:
              type: string
              maxLength: 40
            scan_id:
              type: string
              maxLength: 160
        - type: object
          additionalProperties: false
          required:
            - kind
            - name
            - frequency
            - rows
          properties:
            kind:
              const: preview
            name:
              type: string
              minLength: 1
              maxLength: 120
            frequency:
              type: string
              maxLength: 40
            rows:
              type: array
              minItems: 2
              maxItems: 500
              items:
                type: object
                required:
                  - timestamp
                  - target
                properties:
                  timestamp:
                    type: string
                    format: date-time
                  target:
                    type: number
      description: >-
        References are resolved and authorized server-side. Client-supplied
        forecast arrays are rejected. Preview rows are explicitly user-supplied
        observations, not verified provider data.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Clerk personal API key or legacy Quantura key
    clerkOAuth:
      type: oauth2
      description: >-
        Clerk authorization code with PKCE S256. Pass
        resource=https://quantura.studio on authorization and token requests.
        Paid Pro, enterprise or verified administrator API access is required.
      flows:
        authorizationCode:
          authorizationUrl: https://clerk.quantura.studio/oauth/authorize
          tokenUrl: https://clerk.quantura.studio/oauth/token
          refreshUrl: https://clerk.quantura.studio/oauth/token
          scopes:
            openid: Identify the Quantura account
            profile: Resolve the account profile
            email: Verify account email
            offline_access: Refresh access after expiry

````

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