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

# Diagnose reply rate

> Answers "why do I get no replies?" with a verdict computed on the server. Returns the funnel, the stage where proposals get lost, how many silent clients interviewed nobody, the competition, the niche benchmark, and the causes ranked by replies lost. Counts cold proposals only: invitations and proposals sent on a trial are left out. Counts against the daily diagnose cap



## OpenAPI

````yaml get /insights/reply-diagnosis
openapi: 3.0.4
info:
  title: Vollna API
  description: API for managing Upwork profiles, proposals, results, and filters
  version: 1.0.0
servers:
  - url: https://api.vollna.com/v1
security: []
tags:
  - name: Profiles
    description: Manage Upwork profiles
  - name: Proposals
    description: Access and manage Upwork proposals
  - name: Results
    description: View monitoring results and projects
  - name: Filters
    description: Manage monitoring filters
  - name: Auto Bidding
    description: Manage auto bidding jobs and setups
  - name: Account
    description: The token team's account, plan and meters
  - name: Invitations
    description: Upwork invitations
  - name: Projects
    description: Upwork jobs and their competition
  - name: AI Qualifier
    description: A filter's AI qualifier and its verdicts
  - name: Market Insights
    description: Upwork market analytics and saved searches
  - name: Proposal Templates
    description: Proposal templates and their results
paths:
  /insights/reply-diagnosis:
    get:
      tags:
        - Proposals
      summary: Diagnose reply rate
      description: >-
        Answers "why do I get no replies?" with a verdict computed on the
        server. Returns the funnel, the stage where proposals get lost, how many
        silent clients interviewed nobody, the competition, the niche benchmark,
        and the causes ranked by replies lost. Counts cold proposals only:
        invitations and proposals sent on a trial are left out. Counts against
        the daily diagnose cap
      parameters:
        - name: organizationId
          in: query
          required: false
          description: One Upwork profile. Every visible profile when left out
          schema:
            type: integer
            minimum: 1
        - name: dateRange
          in: query
          required: false
          description: >-
            A preset: today, yesterday, last_7_days, last_week, last_4_weeks,
            last_30_days, last_month, last_3_months, last_90_days,
            last_12_months, month_to_date, quarter_to_date, year_to_date or
            all_time. Or a custom range as YYYY-MM-DD_YYYY-MM-DD. Read in the
            team owner's time zone
          schema:
            type: string
            default: last_90_days
        - name: templateId
          in: query
          required: false
          description: Only proposals sent with this proposal template
          schema:
            type: integer
            minimum: 1
        - name: filterId
          in: query
          required: false
          description: >-
            Only proposals written from this filter or sent by an auto-bidder on
            it
          schema:
            type: integer
            minimum: 1
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      scope:
                        type: object
                        properties:
                          organizationId:
                            type: integer
                            nullable: true
                          templateId:
                            type: integer
                            nullable: true
                          filterId:
                            type: integer
                            nullable: true
                          dateRange:
                            type: string
                          from:
                            type: string
                            format: date
                          to:
                            type: string
                            format: date
                      counted:
                        type: string
                      locked:
                        type: boolean
                        description: Only when every profile in scope is locked by the plan
                      reason:
                        type: string
                        description: Only when locked
                      funnel:
                        type: object
                        properties:
                          sent:
                            type: integer
                          viewed:
                            type: integer
                          replied:
                            type: integer
                          hired:
                            type: integer
                          viewRate:
                            type: number
                            nullable: true
                          replyRate:
                            type: number
                            nullable: true
                          replyGivenView:
                            type: number
                            description: Replies per viewed proposal, percent
                            nullable: true
                      stage:
                        type: string
                        description: insufficient below 30 cold proposals
                        enum:
                          - insufficient
                          - not_seen
                          - seen_ignored
                          - ok
                      reference:
                        type: object
                        description: The rates the funnel is compared with
                        properties:
                          viewRate:
                            type: number
                          replyGivenView:
                            type: number
                          source:
                            type: string
                            enum:
                              - niche
                              - fallback
                      ghost:
                        type: object
                        description: Clients who viewed a proposal and did not reply
                        properties:
                          ignored:
                            type: integer
                          withActivityData:
                            type: integer
                          coverage:
                            type: number
                            nullable: true
                          settled:
                            type: integer
                          noInterviewShare:
                            type: number
                            description: >-
                              Share of clients who viewed, did not reply and
                              interviewed nobody
                            nullable: true
                      competition:
                        type: object
                        properties:
                          yourMedianApplicantsDay1:
                            type: number
                            nullable: true
                          jobsWithDay1Reading:
                            type: integer
                          nicheAvgApplicants:
                            type: number
                            nullable: true
                          yourAvgPosition:
                            type: number
                            nullable: true
                          marketAvgPosition:
                            type: number
                            nullable: true
                          yourAvgMinutesToBid:
                            type: number
                            nullable: true
                          marketAvgMinutesToBid:
                            type: number
                            nullable: true
                      benchmark:
                        type: object
                        description: >-
                          The niche's view rate, reply rate and cost per reply
                          from Market Insights. null below full Market Insights
                        nullable: true
                      levers:
                        type: object
                        description: >-
                          Evidence per lever: late against early bids,
                          low-intent clients against the rest, boosted against
                          organic, and the letter
                        properties:
                          speed:
                            type: object
                            nullable: true
                          targeting:
                            type: object
                            nullable: true
                          boost:
                            type: object
                            nullable: true
                          letter:
                            type: object
                            nullable: true
                      causes:
                        type: array
                        description: >-
                          Fixable causes, the one that loses the most replies
                          first
                        items:
                          type: object
                          properties:
                            cause:
                              type: string
                              enum:
                                - late_bids
                                - low_intent_clients
                                - letter
                            label:
                              type: string
                            repliesLost:
                              type: number
                            evidence:
                              type: object
                            fix:
                              type: object
                              properties:
                                action:
                                  type: string
                                tool:
                                  type: string
                                  description: >-
                                    The MCP tool that applies the fix. Over
                                    REST, update_filter is PATCH /filters/{id}
                                    and update_proposal_template is PATCH
                                    /proposal-templates/{id}
                                templateIds:
                                  type: array
                                  items:
                                    type: integer
                      dataQuality:
                        type: object
                        properties:
                          sent:
                            type: integer
                          withActivityData:
                            type: integer
                          activityCoverage:
                            type: number
                            nullable: true
                          benchmarkSufficient:
                            type: boolean
                      verdict:
                        type: string
                        description: The answer in one paragraph
                      lockedProfiles:
                        type: array
                        description: Profiles left out because the plan locks them
                        items:
                          type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          description: The daily diagnose cap is used up, or the rate limit is reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
      security:
        - apiToken: []
components:
  responses:
    BadRequest:
      description: >-
        Invalid request. message says what to send instead; fields names each
        invalid field
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServiceError'
    Unauthorized:
      description: Missing or unknown API token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    PaymentRequired:
      description: The team's subscription is not active
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        The plan has no API access, or the token team may not do this. message
        says why
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServiceError'
    NotFound:
      description: Not found in the token's team
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServiceError'
  schemas:
    ServiceError:
      type: object
      properties:
        error:
          type: string
          description: Short error title
          example: Validation failed
        message:
          type: string
          description: What went wrong and what to send instead, written for the user
        fields:
          type: object
          description: >-
            Per-field messages keyed by dot path, when several fields fail at
            once
          additionalProperties:
            type: string
    Error:
      type: object
      properties:
        error:
          type: string
  securitySchemes:
    apiToken:
      type: apiKey
      name: X-API-TOKEN
      in: header
      description: API token for authentication

````

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