---
schema_version: "1"
id: 05c1c9d5435574a28c5ba82dda9d0d4cf6ff88c7f805c5cfd0938418f0ed8545
title: When to Use Tooling API
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/api_tooling/intro_tasks.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/intro_tasks.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: af3247a7d04998165566514941bcc7da2d52d6ce0f378808763fb5cf14a4ab9c
description: Use Tooling API when you need fine-grained access to an org’s metadata. Tooling API’s SOQL capabilities for many metadata types allow you to retrieve smaller pieces of metadata. Smaller retrieves improve performance, which makes Tooling API a better fit for developing interactive applications.
---
# When to Use Tooling API

Use Tooling API when you need fine-grained access to an org’s metadata. Tooling API’s SOQL capabilities for many metadata types allow you to retrieve smaller pieces of metadata. Smaller retrieves improve performance, which makes Tooling API a better fit for developing interactive applications.

Because Tooling API allows you to change just one element within a complex type, it can be easier to use than Metadata API. Other use cases include:

- Source control integration
- Continuous integration
- Apex classes or trigger deployment

Some of the specific tasks you can accomplish using the Tooling API:

- **Retrieve metadata about an object’s field**: Use [FieldDefinition](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_fielddefinition.htm).
- **Retrieve custom or standard object properties**: Use [EntityDefinition](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_entitydefinition.htm).
- **Manage working copies of Apex classes and triggers and Visualforce pages and components.**: Use [ApexClassMember](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexclassmember.htm), [ApexTriggerMember](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apextriggermember.htm), [ApexPageMember](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexpagemember.htm), [ApexComponentMember](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexcomponentmember.htm), and [MetadataContainer](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_metadatacontainer.htm) .
- **Manage working copies of static resource files.**: Use [StaticResource](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_staticresource.htm).
- **Check for updates and errors in working copies of Apex classes and triggers and Visualforce pages and components.**: [ContainerAsyncRequest](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_containerasyncrequest.htm)
- **Commit changes to your organization.**: Use [ContainerAsyncRequest](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_containerasyncrequest.htm).
- **Set heap dump markers.**: Use [ApexExecutionOverlayAction](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexexecutionoverlayaction.htm)
- **Overlay Apex code or SOQL statements on an Apex execution.**: Use [ApexExecutionOverlayAction](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexexecutionoverlayaction.htm).
- **Execute anonymous Apex.**: For sample code, see [SOAP Calls](https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/intro_soap_overview.htm) and [REST Overview](https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/intro_rest_overview.htm "Use REST if you’re using a language that isn’t strongly typed, like JavaScript.").
- **Generate log files for yourself or for other users.**: Set checkpoints with [TraceFlag](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_traceflag.htm)
- **Access debug log and heap dump files.**: Use [ApexLog](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexlog.htm) and [ApexExecutionOverlayResult](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexexecutionoverlayresult.htm).
- **Manage custom fields on custom objects.**: Use [CustomField](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_customfield.htm).
- **Access code coverage results.**: Use [ApexCodeCoverage](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexcodecoverage.htm), [ApexOrgWideCoverage](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexorgwidecoverage.htm), and [ApexCodeCoverageAggregate](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apexcodecoverageaggregate.htm).
- **Execute tests, and manage test results.**: Use [ApexTestQueueItem](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apextestqueueitem.htm) and [ApexTestResult](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_apextestresult.htm).
- **Manage validation rules and workflow rules.**: Use [ValidationRule](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_validationrule.htm) and [WorkflowRule](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_tooling.meta/api_tooling/tooling_api_objects_workflowrule.htm).

#### See Also

- [REST Overview](https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/intro_rest_overview.htm "Use REST if you’re using a language that isn’t strongly typed, like JavaScript.")
- [SOAP Calls](https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/intro_soap_overview.htm)