> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# serviceUserCreate

> Create a service account. Add credentials to it afterward.

**Required scopes:** [`user_write`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-user_write)

## Arguments

**input** `[ServiceUserCreateInput!](/docs/api-reference/v3/reference/service-users/service-user-create-input)` *required*

**fields**

**name** `String!` *required*

A label that helps recognize the service account.

**scopes** `[\[ApiScope!\]!](/docs/api-reference/v3/reference/service-users/api-scope)` *required*

What its credentials may access. Each must be a scope the caller has.

## Returns

**serviceUserCreate** `[ServiceUser!](/docs/api-reference/v3/reference/service-users/service-user)` *required*

A non-human principal that calls the Redo API with its own scopes. It authenticates with any number of credentials, each granting its scopes.

**fields**

**apiKeys** `[\[ServiceUserApiKey!\]!](/docs/api-reference/v3/reference/service-users/service-user-api-key)` *required*

Its API keys, newest first.

**fields**

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the credential was created.

**id** `ID!` *required*

The id of this credential.

**lastUsedAt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the credential last authenticated, or null if it never has.

**name** `String!` *required*

A label that helps recognize the credential.

**suffix** `String!` *required*

The key's last four characters, to tell keys apart.

**clientId** `String!` *required*

The OAuth client ID its public keys sign assertions with, as `iss` and `sub`.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When it was created.

**createdBy** `[TeamMember](/docs/api-reference/v3/reference/common/team-member)`

The team member who created it. Null when a partner or another service account created it, or the user no longer exists.

**Requires:** [`user_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-user_read)

**fields**

**email** `String`

Email address. Null when the user has none.

**id** `ID!` *required*

m\_us\_… id, the same id the app and MCP tools use.

**name** `String`

Display name. Null when the user hasn't set one.

**supportShiftStatus** `[SupportShiftStatus!](/docs/api-reference/v3/reference/support/support-shift-status)` *required*

The agent's live shift status, worked out when the request runs.

**Requires:** [`support_config_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-support_config_read)

**fields**

**manualOverride** `[SupportShiftOverride](/docs/api-reference/v3/reference/support/support-shift-override)`

The agent's manual on/off toggle. Null when they follow their schedule.

**nextChange** `[SupportShiftChange!](/docs/api-reference/v3/reference/support/support-shift-change)` *required*

The next time the schedule alone flips onShift. Ignores any manual override. Always in the future, or the next local midnight when nothing changes within 14 days.

**onShift** `Boolean!` *required*

True when auto-assignment can give the agent tickets now.

**reason** `[SupportShiftStatusReason!](/docs/api-reference/v3/reference/support/support-shift-status-reason)` *required*

Which layer decided onShift.

**supportWorkSchedule** `[SupportWorkSchedule!](/docs/api-reference/v3/reference/support/support-work-schedule)` *required*

The agent's support working hours. An agent with no saved schedule returns enabled false.

**Requires:** [`team_members_manage`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-team_members_manage)

**fields**

**assignableChannels** `[\[SupportChannel!\]](/docs/api-reference/v3/reference/support/support-channel)`

Channels the agent takes auto-assigned tickets on. Null means every channel.

**dateOverrides** `[\[SupportWorkScheduleDateOverride!\]!](/docs/api-reference/v3/reference/support/support-work-schedule-date-override)` *required*

Dates whose hours replace that day's weekly hours, earliest first.

**enabled** `Boolean!` *required*

Whether the schedule is on. When false, the agent counts as on shift at all times.

**timeZone** `String!` *required*

IANA time zone the hours are in, such as America/New\_York. The store's time zone when the agent has never saved a schedule.

**weeklyHours** `[\[SupportWorkScheduleDay!\]!](/docs/api-reference/v3/reference/support/support-work-schedule-day)` *required*

Recurring hours. Always seven entries, Monday through Sunday.

**federatedPolicies** `[\[ServiceUserFederatedPolicy!\]!](/docs/api-reference/v3/reference/service-users/service-user-federated-policy)` *required*

Its federated policies, newest first.

**fields**

**conditions** `[\[ServiceUserClaimCondition!\]!](/docs/api-reference/v3/reference/service-users/service-user-claim-condition)` *required*

Conditions on the token's claims. Every one must match.

**fields**

**claim** `String!` *required*

A JSON Pointer into the token's claims, such as "/sub".

**pattern** `String!` *required*

The value the claim must match. `*` matches any characters.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the credential was created.

**id** `ID!` *required*

The id of this credential.

**issuer** `String!` *required*

The issuer whose tokens the policy trusts.

**lastUsedAt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the credential last authenticated, or null if it never has.

**name** `String!` *required*

A label that helps recognize the credential.

**id** `ID!` *required*

The id of this service account.

**managedBy** `[ServiceUserManager!](/docs/api-reference/v3/reference/service-users/service-user-manager)` *required*

Who manages it.

**name** `String!` *required*

A label that helps recognize the service account.

**publicKeys** `[\[ServiceUserPublicKey!\]!](/docs/api-reference/v3/reference/service-users/service-user-public-key)` *required*

Its public keys, newest first.

**fields**

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the credential was created.

**fingerprint** `String!` *required*

The key's RFC 7638 SHA-256 JWK thumbprint, which an assertion names as its `kid`.

**id** `ID!` *required*

The id of this credential.

**lastUsedAt** `[DateTime](/docs/api-reference/v3/reference/common/date-time)`

When the credential last authenticated, or null if it never has.

**name** `String!` *required*

A label that helps recognize the credential.

**scopes** `[\[ApiScope!\]!](/docs/api-reference/v3/reference/service-users/api-scope)` *required*

What its credentials may access.

**status** `[ServiceUserStatus!](/docs/api-reference/v3/reference/service-users/service-user-status)` *required*

Whether its credentials authenticate.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When it was last updated.

## Example

```graphql theme={null}
mutation {
  serviceUserCreate(input: { ... }) {
    clientId
    createdAt
    id
    managedBy
    name
    scopes
    status
    updatedAt
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.