---
title: "Retrieve metadata about a specific protocol that the homeserver supports."
method: GET
path: "/_matrix/client/v3/thirdparty/protocol/{protocol}"
tags: ["Third-party Lookup"]
---

# Retrieve metadata about a specific protocol that the homeserver supports.

`GET /_matrix/client/v3/thirdparty/protocol/{protocol}`

## Request

- Base URL: `https://matrix.org`
- URL: `https://matrix.org/_matrix/client/v3/thirdparty/protocol/{protocol}`
- Auth: one of:
  - API key in query parameter `access_token`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/matrix/apis/matrix-client-server-api/docs/_matrix/client/v3/thirdparty/protocol/:protocol/get.ts> (a function with typed inputs; its response is checked against the schema)

Fetches the metadata from the homeserver about a particular third-party protocol.

## Path parameters

- `protocol` string, required

## Response `200`

The protocol was found and metadata returned.

- object
  - `field_types` object, required: The type definitions for the fields defined in `user_fields` and `location_fields`. Each entry in those arrays MUST have an entry here. The `string` key for this object is the field name itself. May be an empty object if no fields are defined.
  - `icon` string, required: A content URI representing an icon for the third-party protocol.
  - `location_fields` string[], required: Fields which may be used to identify a third-party location. These should be ordered to suggest the way that entities may be grouped, where higher groupings are ordered first. For example, the name of a network should be searched before the name of a channel.
  - `user_fields` string[], required: Fields which may be used to identify a third-party user. These should be ordered to suggest the way that entities may be grouped, where higher groupings are ordered first. For example, the name of a network should be searched before the nickname of a user.
  - `instances` object[], required: A list of objects representing independent instances of configuration. For example, multiple networks on IRC if multiple are provided by the same application service. The instances are modified by the homeserver from the response of [`GET /_matrix/app/v1/thirdparty/protocol/{protocol}`](https://spec.matrix.org/v1.19/application-service-api/#get_matrixappv1thirdpartyprotocolprotocol) to include an `instance_id` to serve as a unique identifier for each instance on the homeserver.
    - `desc` string, required: A human-readable description for the protocol, such as the name.
    - `fields` object, required: Preset values for `fields` the client may use to search by.
    - `icon` string: An optional content URI representing the protocol. Overrides the one provided at the higher level Protocol object.
    - `network_id` string, required: A unique identifier across all instances.
    - `instance_id` string: A unique identifier for this instance on the homeserver. This field is added to the response of [`GET /_matrix/app/v1/thirdparty/protocol/{protocol}`](https://spec.matrix.org/v1.19/application-service-api/#get_matrixappv1thirdpartyprotocolprotocol) by the homeserver. This is the identifier to use as the `third_party_instance_id` in a request to [`POST /_matrix/client/v3/publicRooms`](https://spec.matrix.org/v1.19/client-server-api/#post_matrixclientv3publicrooms).

## Other responses

- `404`: The protocol is unknown.

---

[API](https://skmtc.dev/matrix/apis/matrix-client-server-api.md) - [All operations](https://skmtc.dev/matrix/apis/matrix-client-server-api/llms.txt) - [OpenAPI document](https://skmtc.dev/matrix/apis/matrix-client-server-api/revisions/c7fe4072c681?raw)
