---
schema_version: "1"
id: 9a4b38a58f2b227749310d63d4119fee8a9838a2e4bc275f337fd1577869d4c1
title: Build and Use Richer Development Tools with the Apex Symbol API (Beta)
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/release-notes/264-0-0/rn_apex_symbol_api.md
canonical_url: https://help.salesforce.com/s/articleView?id=release-notes.rn_apex_symbol_api.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: b04448eb3e7564c55e8450201fe15efef0c3a9254834f0e20243d5fff2544bc6
description: Access comprehensive Apex type information with the Apex Symbol API (beta). This Tooling API REST resource returns detailed metadata for built-in, custom, and dynamic Apex types, such as classes, interfaces, methods, and triggers. Use this API to power code completion in IDEs, provide context for AI agents generating Apex code, or ground setup agents answering admin questions about code.
products:
  - Cross Cloud
release: "264"
---
# Build and Use Richer Development Tools with the Apex Symbol API (Beta)

Access comprehensive Apex type information with the Apex Symbol API (beta). This Tooling API REST resource returns detailed metadata for built-in, custom, and dynamic Apex types, such as classes, interfaces, methods, and triggers. Use this API to power code completion in IDEs, provide context for AI agents generating Apex code, or ground setup agents answering admin questions about code.

**Where:** This feature is available in API version 68.0 and later. This feature is available in Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.

![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-release-notes-salesforce_release_notes-264-0-0-production-enus/550ba85b-db1a-4608-9cd4-9a65ec96e1fa/images/icon_important.png)

Important This feature is a pilot or beta service that is subject to the Beta Services Terms at [Agreements - Salesforce.com](https://www.salesforce.com/company/legal/) or a written Unified Pilot Agreement if executed by Customer, and applicable terms in the [Product Terms Directory](https://ptd.salesforce.com/). Use of this pilot or beta service is at the Customer’s sole discretion..

**Why:** The Apex Symbol API provides comprehensive Apex type metadata that enables richer experiences across development tools and AI-powered workflows. By exposing the same type information that the Apex compiler uses, the Apex Symbol API bridges the gaps in the existing /completions Tooling API endpoint and SymbolTable Tooling API object.

**How:** To retrieve Apex type information directly from the Tooling API REST resource, send a GET request to the /services/data/vXX.0/tooling/symbols endpoint. The endpoint requires the `category` query parameter, which takes one of these values.

- `builtin`: standard Apex types
- `database`: custom and packaged Apex types
- `dynamic`: dynamic Apex types

For more targeted queries, use the optional `namespace` or `name` query parameters. Filtering improves performance for large orgs and provides a better experience for consumers that only need information about specific namespaces, classes, or other Apex types.

For example, this request queries for the `ApexPages` class, which contains built-in Apex types in the System namespace:

```
/services/data/v68.0/tooling/symbols?category=builtin&namespace=System&name=ApexPages
```

Here’s an excerpt of the JSON response for this request.

```json
{
  "typeStubs": [
    {
      "name": "ApexPages",
      "namespacePrefix": "System",
      "kind": "CLASS",
      "modifiers": [
        "global"
      ],
      "annotations": [],
      "superClass": null,
      "interfaces": [],
      "fields": [],
      "properties": [],
      "methods": [
        {
          "name": "addMessage",
          "isConstructor": null,
          "returnType": {
            "namespacePrefix": null,
            "name": "void",
            "typeParameters": null
          },
          "modifiers": [
            "global",
            "static"
          ],
          "annotations": [],
          "parameters": [
            {
              "name": "message",
              "type": {
                "namespacePrefix": "ApexPages",
                "name": "Message",
                "typeParameters": null
              },
              "annotations": [],
              "documentation": ""
            }
          ],
          "documentation": "Add a message to the current page context."
        }
      ],
      "innerTypes": [],
      "triggerOperations": null,
      "documentation": "Use ApexPages to add and check for messages associated...",
      "triggerObjectType": null,
      "compileError": null
    }
  ]
}
```

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-release-notes-salesforce_release_notes-264-0-0-production-enus/550ba85b-db1a-4608-9cd4-9a65ec96e1fa/images/icon_note.png)

Note The Apex Symbol API enforces a concurrency limit of 1 concurrent caller per org. If you make a second request while another request is in progress, the second request fails. Avoid parallel calls to this API from the same org.

#### See Also

- [_Tooling API_: Retrieve Apex Type Information with the Symbols Resource (Beta)](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/intro_rest_resources_apex_symbols.htm)
- [_Apex Developer Guide_: ApexDoc Comment Structure and Tags](https://developer.salesforce.com/docs/atlas.en-us.264.0.apexcode.meta/apexcode/apex_doc_format.htm)
- [Salesforce Extensions for Visual Studio Code](https://developer.salesforce.com/tools/vscode)