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

# Get overall usage summary

> Get an overall usage summary with totals across all tasks.
Includes total costs, task counts by status,
usage breakdown by model, and time-based trends.

Access control:
- Solo users (not in a team): Returns their own usage summary
- Team admins: Returns aggregated summary for all team members (includes by_email breakdown)
- Team members/viewers: No access (returns 403)




## OpenAPI

````yaml /openapi/neo.public.openapi.json get /api/v1/usage/summary
openapi: 3.1.0
info:
  contact:
    name: ProjectDiscovery
    url: https://neo.projectdiscovery.io
  description: Neo API Server - Security agent orchestration platform
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  title: Neo API
  version: 1.0.0
servers:
  - description: Production
    url: https://neo.api.projectdiscovery.io
  - description: Development
    url: https://neo.api.dev.projectdiscovery.io
  - description: Local development
    url: http://localhost:8080
security: []
tags:
  - description: Task execution and management
    name: Tasks
  - description: Agent listing and management
    name: Agents
  - description: Public agent directory
    name: Agent Directory
  - description: User file storage management
    name: Files
  - description: User working memory management
    name: Memory
  - description: Scheduled and recurring task management
    name: Schedules
  - description: Knowledge base and semantic search
    name: Knowledge
  - description: Encrypted user credentials and API keys
    name: Secrets
  - description: Neo API key management for programmatic access
    name: API Keys
  - description: User profile and account information
    name: User
  - description: Task and LLM usage tracking
    name: Usage
  - description: Bring Your Own Key provider management
    name: BYOK
  - description: Connect personal AI provider accounts and select them as a model source
    name: AI Connections
  - description: Model discovery and capabilities
    name: Models
  - description: Third-party integrations
    name: Integrations
  - description: Skill knowledge documents for agent prompts
    name: Skills
  - description: User-authored tools and toolkit management
    name: Dynamic Tools
  - description: Team management and member invitations
    name: Teams
  - description: Prompt library management and discovery
    name: Prompts
  - description: Slack bot integration for workspace installation and OAuth
    name: Slack
  - description: GitHub integration for PR reviews and repository management
    name: GitHub
  - description: Vulnerability issue tracking and management
    name: Issues
  - description: Subscription billing and plans
    name: Billing
  - description: Project management and member assignments
    name: Projects
  - description: SSH key pair generation and management for remote server access
    name: SSH Keys
  - description: Codebase structural analysis and mapping
    name: Codemaps
  - description: AI-generated codebase documentation and security analysis
    name: CodeWiki
  - description: Captured HTTP traffic query and replay
    name: Network Events
  - description: User and team API activity metadata
    name: Audit Logs
  - description: Vulnerability triage for HackerOne, GitHub, and Security Inbox
    name: Triage
paths:
  /api/v1/usage/summary:
    get:
      tags:
        - Usage
      summary: Get overall usage summary
      description: >
        Get an overall usage summary with totals across all tasks.

        Includes total costs, task counts by status,

        usage breakdown by model, and time-based trends.


        Access control:

        - Solo users (not in a team): Returns their own usage summary

        - Team admins: Returns aggregated summary for all team members (includes
        by_email breakdown)

        - Team members/viewers: No access (returns 403)
      operationId: get-v1-usage-summary
      parameters:
        - description: Filter from datetime (ISO 8601)
          in: query
          name: from
          required: false
          schema:
            format: date-time
            type: string
        - description: Filter to datetime (ISO 8601)
          in: query
          name: to
          required: false
          schema:
            format: date-time
            type: string
        - description: Group by time period
          in: query
          name: group_by
          required: false
          schema:
            enum:
              - day
              - week
              - month
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsageSummaryResponse'
          description: Usage summary
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - team members/viewers cannot access usage data
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      security:
        - BearerAuth: []
        - ApiKeyAuth: []
components:
  schemas:
    UsageSummaryResponse:
      properties:
        by_email:
          description: >-
            Usage statistics by team member email, sorted by neo_credits
            descending (only for team admins)
          items:
            $ref: '#/components/schemas/UsageEmailStats'
          type: array
        by_model:
          additionalProperties:
            $ref: '#/components/schemas/UsageModelStats'
          description: >-
            Usage statistics by model. A task is counted under every model it
            ran on (see `tasks` in each entry); costs are split by model and sum
            to the total.
          type: object
        by_period:
          description: Usage statistics by time period (only if group_by is specified)
          items:
            $ref: '#/components/schemas/UsagePeriodStats'
          type: array
        by_project:
          description: >-
            Usage statistics by project, sorted by neo_credits descending. Pure
            usage analytics (no spending caps).
          items:
            $ref: '#/components/schemas/UsageProjectStats'
          type: array
        by_status:
          additionalProperties:
            type: integer
          description: Task counts by status
          type: object
        byok:
          $ref: '#/components/schemas/ByokUsageSummary'
        grand_total_issued_credits:
          description: >-
            Grand total credits ever issued. For subscription customers, the sum
            of every monthly subscription grant
            (subscription_grant/renew/proration) plus all top-up purchases and
            positive admin amount grants. For non-subscription customers, top-up
            purchases and admin amount grants only. Not reduced by usage,
            expiry, or cancellation.
          format: float
          type: number
        grand_total_used_credits:
          description: >-
            Total task spend counted from the most recent admin usage reset
            (reset_usage event); all-time when no admin reset exists.
            Independent of subscription renewal/settlement window moves.
          format: float
          type: number
        last_credit_reset:
          description: >-
            When set, the datetime from which credit usage is counted. Usage
            before this date is excluded from used/available credit
            calculations.
          format: date-time
          nullable: true
          type: string
        neo_credits_expires_at:
          description: >-
            When set, credits will be frozen (available=0) after this date. NULL
            means never expires.
          format: date-time
          nullable: true
          type: string
        neo_credits_is_expired:
          description: Whether the Neo credits have expired (expires_at is in the past)
          type: boolean
        total_agent_triggers:
          description: Total agent triggers
          type: integer
        total_available_neo_credits:
          description: >-
            Available Neo credits since last reset (issued - used since reset).
            Not affected by date filters. Returns 0 if credits are expired.
          format: float
          type: number
        total_execution_ms:
          description: Total execution time in milliseconds
          type: integer
        total_issued_neo_credits:
          description: Total Neo credits issued/allocated to the user
          format: float
          type: number
        total_neo_credits:
          description: Total Neo credits used
          format: float
          type: number
        total_neo_credits_post_reset:
          description: >-
            Neo credits used since the last reset (issued - available). Not
            affected by date filters.
          format: float
          type: number
        total_steps:
          description: Total steps executed
          type: integer
        total_tasks:
          description: Total number of tasks
          type: integer
        total_tool_calls:
          description: Total tool calls
          type: integer
      required:
        - total_tasks
        - total_neo_credits
        - by_status
        - by_model
      type: object
    ErrorResponse:
      properties:
        code:
          description: >
            Stable machine-readable error code — branch on this rather than

            matching the human `error`/`message` strings. `access_restricted`

            (HTTP 403) denies hosted Neo access under the access policy. On team

            invitations, param=email identifies a restricted recipient rather

            than the caller; show the error without redirecting the caller.
            Domain codes include

            `user_spending_cap_reached`, `project_spending_cap_reached`, and

            `insufficient_neo_credits`; Free/usage codes include

            `free_grant_challenge_required`, `free_usage_exhausted`,

            `free_task_budget_exhausted`, `model_not_available_on_free`,

            `sandbox_not_available_on_free` (cloud sandbox surfaces are not

            available on the Free plan; task files remain available from the

            task), `free_cannot_continue_managed_task` (a task that ran on the

            standard cloud sandbox cannot be continued on the Free plan; start

            a new task), `free_origin_not_supported` (integration-originated

            tasks are not available on the Free plan),

            `weekly_usage_limit_reached`, `billing_period_usage_limit_reached`,

            `topup_required`, `subscription_required`, and

            `isolated_workspace_purged`. Otherwise it mirrors the error kind

            (e.g. `forbidden`, `invalid_request`, `not_exists`,
            `already_exists`).
          example: user_spending_cap_reached
          type: string
        error:
          example: Bad request
          type: string
        error_id:
          description: Correlation id for a specific error instance, when present.
          type: string
        kind:
          description: Coarse error category (e.g. "forbidden request", "invalid request").
          example: forbidden request
          type: string
        message:
          description: |
            Human-readable detail (the kind prefixed to the error). For display,
            not for branching.
          type: string
        param:
          description: >-
            Field rejected by the policy; email for a restricted invite
            recipient.
          type: string
        turnstile_site_key:
          description: |
            Public Cloudflare Turnstile site key returned only with
            `free_grant_challenge_required`, so the client can complete the
            invisible verification before retrying the request.
          type: string
      required:
        - error
      type: object
    UsageEmailStats:
      properties:
        email:
          description: Team member email
          type: string
        neo_credits:
          description: Neo credits used by this user
          format: float
          type: number
        tasks:
          description: Number of tasks by this user
          type: integer
      required:
        - email
        - tasks
        - neo_credits
      type: object
    UsageModelStats:
      properties:
        neo_credits:
          description: >-
            Neo credits used on this model. Each task's cost is split by the
            model that served each of its agent runs (a subagent on its own
            model counts toward that model, not the main one). The costs of one
            task add up to exactly the task's cost, so the sum of `neo_credits`
            over `by_model` equals the total.
          format: float
          type: number
        tasks:
          description: >-
            Number of tasks that ran on this model. A task that used several
            models (the main model and routed subagent models) is counted once
            for each model it used, so the sum of `tasks` over `by_model` can
            exceed the number of tasks. Do not add these counts to get a task
            total; use `total_tasks`.
          type: integer
      required:
        - Tasks
        - neo_credits
      type: object
    UsagePeriodStats:
      properties:
        date:
          description: Period date (YYYY-MM-DD)
          type: string
        neo_credits:
          description: Neo credits used in this period
          format: float
          type: number
        tasks:
          description: Number of tasks in this period
          type: integer
      required:
        - date
        - Tasks
        - neo_credits
      type: object
    UsageProjectStats:
      properties:
        last_used:
          description: Timestamp of the most recent task attributed to this project
          format: date-time
          nullable: true
          type: string
        llm_spend:
          description: >-
            BYOK LLM spend for this project (own-key tasks). Shown on the BYOK
            tab; Neo cost = llm_spend × neoCostRate.
          format: float
          type: number
        neo_credits:
          description: Neo credits used by this project (non-BYOK tasks)
          format: float
          type: number
        project_id:
          description: Project ID
          type: string
        project_name:
          description: Project name
          type: string
        tasks:
          description: Number of tasks attributed to this project
          type: integer
      required:
        - project_id
        - project_name
        - tasks
        - neo_credits
      type: object
    ByokUsageSummary:
      description: BYOK (Bring Your Own Key) usage breakdown
      properties:
        total_llm_cost:
          description: Total LLM cost for BYOK streams
          format: float
          type: number
        total_neo_cost:
          description: Total Neo platform cost for BYOK streams
          format: float
          type: number
        total_streams:
          description: Total number of streams that used BYOK
          type: integer
        total_tasks:
          description: Total number of distinct tasks that used BYOK
          type: integer
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT authentication token
      scheme: bearer
      type: http
    ApiKeyAuth:
      description: Neo API key (neo_sk_* prefix)
      in: header
      name: X-Api-Key
      type: apiKey

````

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