> ## 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.

# List secrets

> Retrieve personal secrets owned by the authenticated user.

Secrets are encrypted credentials (API keys, tokens, passwords) that Neo agents 
use when executing tools. Values are always masked in responses for security.

**Common use cases:**
- API keys for external services (GitHub, Slack, etc.)
- Authentication tokens for tool integrations
- Custom credentials for user-created agents




## OpenAPI

````yaml /openapi/neo.public.openapi.json get /api/v1/secrets
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/secrets:
    get:
      tags:
        - Secrets
      summary: List secrets
      description: >
        Retrieve personal secrets owned by the authenticated user.


        Secrets are encrypted credentials (API keys, tokens, passwords) that Neo
        agents 

        use when executing tools. Values are always masked in responses for
        security.


        **Common use cases:**

        - API keys for external services (GitHub, Slack, etc.)

        - Authentication tokens for tool integrations

        - Custom credentials for user-created agents
      operationId: get-v1-secrets
      responses:
        '200':
          content:
            application/json:
              example:
                - default_available: true
                  id: 550e8400-e29b-41d4-a716-446655440000
                  masked_value: ghp_xx••••••••xxxx
                  name: GITHUB_TOKEN
                - default_available: false
                  id: 550e8400-e29b-41d4-a716-446655440001
                  masked_value: htt••••••••.com
                  name: SLACK_WEBHOOK_URL
              schema:
                items:
                  $ref: '#/components/schemas/SecretResponse'
                type: array
          description: List of secrets with masked values
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized - valid authentication required
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      security:
        - BearerAuth: []
        - ApiKeyAuth: []
components:
  schemas:
    SecretResponse:
      properties:
        created_at:
          description: When the secret was created
          format: date-time
          type: string
        created_by_agent:
          description: >
            Indicates whether this secret was automatically created by an AI
            agent (true)

            or manually created by the user (false).
          example: true
          type: boolean
        default_available:
          default: false
          description: >
            Whether this personal secret is exposed by default at task runtime.

            If false, it is only exposed when explicitly selected in task
            requests.
          example: false
          type: boolean
        id:
          description: Unique identifier for the secret
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        masked_value:
          description: |
            Masked representation of the secret value for display purposes.
            Shows first 3 and last 4 characters with bullets (•) in between.
          example: ghp_xx••••••••xxxx
          type: string
        name:
          description: >
            Secret name (used as environment variable name when injected into
            agent execution).

            Should follow UPPER_SNAKE_CASE convention.
          example: GITHUB_TOKEN
          type: string
        updated_at:
          description: When the secret was last updated
          format: date-time
          type: string
      required:
        - id
        - name
        - masked_value
        - default_available
      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
  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.