---
title: "Services API"
manual: "TYPO3 Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3coreapi:services-developer-service-related-api@main"
source: "ApiOverview/Services/Developer/ServiceRelatedApi.rst"
rendered: "2026-09-30T05:33:23+00:00"
---

# Services API {#services-developer-service-related-api}

This section describes the methods of the TYPO3 Core that are related
to the use of services.

## `\TYPO3\CMS\Core\Utility\ExtensionManagementUtility` {#services-developer-service-related-api-extension-management-utility}

This extension management class contains three methods related to
services:

-   **addService**

    This method is used to register services with TYPO3 CMS. It checks for
    availability of a service with regards to OS dependency (if any) and
    fills the `$GLOBALS['T3_SERVICES']` array, where information
    about all registered services is kept.

-   **findService**

    This method is used to find the appropriate service given a type and a
    subtype. It handles priority and quality rankings. It also checks for
    availability based on executables dependencies, if any.

    This method is normally called by
    `TYPO3CMSCoreUtilityGeneralUtility::makeInstanceService()`,
    so you shouldn't have to worry about calling it directly, but it can be useful to check if
    there's at least one service available.

-   **deactivateService**

    Marks a service as unavailable. It is called internally by
    `addService()` and `findService()` and should probably not
    be called directly unless you're sure of what you're doing.

## `\TYPO3\CMS\Core\Utility\GeneralUtility` {#services-developer-service-related-api-general-utility}

This class contains a single method related to services, but the most
useful one, used to get an instance of a service.

-   **makeInstanceService**

    This method is used to get an instance of a service class of a given
    type and subtype. It calls on `TYPO3CMSCoreUtilityExtensionManagementUtility::findService()`
    to find the best possible service (in terms of priority and quality).

    As described above it keeps a registry of all instantiated service
    classes and uses existing instances whenever possible, in effect
    turning service classes into singletons.
