> ## Documentation Index
> Fetch the complete documentation index at: https://major-5cc5eebc-docs-bot-mr2qm9w6-typctx.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# RingCentral

> Access call logs, messages, SMS, and extension data from RingCentral communications APIs.

The `RingCentralResourceClient` allows you to connect to RingCentral and interact with communications data, including call logs, messages, SMS, and extension information.

## Usage

```typescript theme={null}
import { myRingCentralClient } from "./clients";

const result = await myRingCentralClient.invoke(
  "GET",
  "/restapi/v1.0/account/~/call-log",
  "list-calls",
  {
    query: { limit: "100" },
  }
);

if (result.ok && result.result.body.kind === "json") {
  console.log("Call logs:", result.result.body.value);
}
```

## Authentication

When creating a RingCentral connector, choose your OAuth scope:

* **Read-only** — access call logs, messages, SMS, and extension data
* **Read-write** — read-only access plus ability to send SMS and update data
* **Custom** — configure specific permissions manually

The OAuth flow redirects to RingCentral to authenticate your account. Major securely stores the token and handles authentication for all API requests.

## Common Operations

The RingCentral connector supports the following operations through the AI coder:

### Call Logs

Retrieve call log records for your account:

```typescript theme={null}
const result = await myRingCentralClient.invoke(
  "GET",
  "/restapi/v1.0/account/~/call-log",
  "get-call-log",
);
```

Get details for a specific call record:

```typescript theme={null}
const result = await myRingCentralClient.invoke(
  "GET",
  "/restapi/v1.0/account/~/call-log/{callLogId}",
  "get-call-record",
);
```

### Messages

List messages from your RingCentral account:

```typescript theme={null}
const result = await myRingCentralClient.invoke(
  "GET",
  "/restapi/v1.0/account/~/extension/~/message-store",
  "list-messages",
);
```

### SMS

Send an SMS message:

```typescript theme={null}
const result = await myRingCentralClient.invoke(
  "POST",
  "/restapi/v1.0/account/~/extension/~/sms",
  "send-sms",
  {
    body: {
      type: "json",
      value: {
        to: [{ phoneNumber: "+1234567890" }],
        text: "Your message here",
      },
    },
  }
);
```

### Extensions

List extensions in your account:

```typescript theme={null}
const result = await myRingCentralClient.invoke(
  "GET",
  "/restapi/v1.0/account/~/extension",
  "list-extensions",
);
```

Get details for a specific extension:

```typescript theme={null}
const result = await myRingCentralClient.invoke(
  "GET",
  "/restapi/v1.0/account/~/extension/{extensionId}",
  "get-extension",
);
```

## Inputs

The `invoke` method accepts the following arguments:

<ParamField path="method" type="string" required>
  The HTTP method to use: `"GET"`, `"POST"`, `"PUT"`, `"PATCH"`, or `"DELETE"`.
</ParamField>

<ParamField path="path" type="string" required>
  The RingCentral API path (e.g., `/restapi/v1.0/account/~/call-log`).
</ParamField>

<ParamField path="invocationKey" type="string" required>
  A unique identifier for this operation.
</ParamField>

<ParamField path="options" type="object">
  Optional configuration object.

  <Expandable title="properties">
    <ParamField path="query" type="Record<string, string | string[]>">
      Query parameters.
    </ParamField>

    <ParamField path="body" type="object">
      The request body. Only JSON is supported.

      <Expandable title="properties">
        <ParamField path="type" type="&#x22;json&#x22;" required />

        <ParamField path="value" type="unknown" required>
          The JSON payload.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="timeoutMs" type="number">
      Timeout in milliseconds (default: 30000).
    </ParamField>
  </Expandable>
</ParamField>

## Outputs

The output format is the same as the [Custom API](/connectors/custom-api#outputs) client.

<ResponseField name="kind" type="&#x22;api&#x22;">
  Discriminator for the response type.
</ResponseField>

<ResponseField name="status" type="number">
  The HTTP status code.
</ResponseField>

<ResponseField name="body" type="ResponseBody">
  The response body (typically JSON).
</ResponseField>
