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

# Update a user

> Changes your correlation id or their connection allowance. The email
address is not editable — it is the credential they sign in with.



## OpenAPI

````yaml /openapi/managed.json put /users/{userId}
openapi: 3.1.0
info:
  title: Synci
  version: '1.0'
  description: >-
    Register and manage the end users your Managed app pays for. Authenticate
    with HTTP Basic using your app's client id and client secret. See the
    Managed apps guide for the full flow.
servers:
  - url: https://api.synci.io/managed/v1
security:
  - basicAuth: []
tags:
  - name: Managed Users
  - name: Managed Connections
  - name: Managed Webhooks
paths:
  /users/{userId}:
    put:
      tags:
        - Managed Users
      summary: Update a user
      description: |-
        Changes your correlation id or their connection allowance. The email
        address is not editable — it is the credential they sign in with.
      operationId: managed.users.update
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateManagedUserRequest'
      responses:
        '200':
          description: '`ManagedUserResource`'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ManagedUserResource'
                required:
                  - data
        '422':
          $ref: '#/components/responses/ValidationException'
components:
  schemas:
    UpdateManagedUserRequest:
      type: object
      properties:
        external_user_id:
          type:
            - string
            - 'null'
          description: Your own identifier for this user. Unique within your app.
          maxLength: 255
        connection_limit:
          type:
            - integer
            - 'null'
          description: |-
            How many financial connections this user may create: bank,
            brokerage and crypto-exchange alike. Null resets to your
            app's default.
          minimum: 0
          maximum: 20
      title: UpdateManagedUserRequest
    ManagedUserResource:
      type: object
      properties:
        user_id:
          type: string
        external_user_id:
          type: string
        email:
          type: string
        email_verified:
          type: boolean
          description: |-
            Whether this person has proven they control the address, by
            redeeming a sign-in code Synci emailed there. Arriving through a
            portal link you minted does not set it. While false, Synci cannot
            tell a working address from a mistyped one, so its connection
            emails (expiry, failure, disablement) may not reach them.
        onboarded_at:
          type: string
          description: First time they reached the portal, by either route.
        limits:
          type: object
          properties:
            financial_connections:
              type: string
              description: |-
                Every connection type the user may hold, brokerage and
                crypto included, not just bank. Named to match the plan-limit
                feature key of the same name.
          required:
            - financial_connections
        connections_count:
          type: integer
        created_at:
          type: string
      required:
        - user_id
        - external_user_id
        - email
        - email_verified
        - onboarded_at
        - limits
        - created_at
      title: ManagedUserResource
  responses:
    ValidationException:
      description: Validation error
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                description: Errors overview.
              errors:
                type: object
                description: A detailed description of each field that failed validation.
                additionalProperties:
                  type: array
                  items:
                    type: string
            required:
              - message
              - errors
  securitySchemes:
    basicAuth:
      type: http
      description: |-
        **Username = your client id. Password = your client secret.**

        So the base64-encoded `username:password` described below is
        `client_id:client_secret`:

        ```
        Authorization: Basic base64(YOUR_CLIENT_ID:YOUR_CLIENT_SECRET)
        ```

        Most HTTP clients build that header for you:

        ```bash
        curl -u "YOUR_CLIENT_ID:YOUR_CLIENT_SECRET" \
             https://api.synci.io/managed/v1/users
        ```

        Both values come from **Developers → Apps → your app**. The
        secret is shown once at creation and is prefixed `oac_`.
      scheme: basic

````

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