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

# Start connecting a Google Calendar

> Returns a URL to open in a browser. Google has no credential a request body can carry, so connecting one is two steps: ask for this URL, let the customer consent, and Roark finishes the rest server-side (it exchanges the code, verifies that both calendar permissions were granted, reads the account’s own timezone when none was given, and stores the connection). Nothing is created until the customer consents, and a link that is not used expires. Read the result with `GET /v1/integrations/calendar?provider=GOOGLE`.



## OpenAPI

````yaml /api-reference/openapi.documented.json post /v1/integrations/calendar/google/authorize-url
openapi: 3.1.0
info:
  title: Roark Analytics API
  description: >-
    The Roark Analytics API gives you access to the same API that powers the
    award winning Roark Analytics platform.
  version: 1.0.0
servers:
  - description: Production
    url: https://api.roark.ai
security:
  - Bearer: []
tags:
  - name: Agent
  - name: Customer
  - name: Agent Endpoint
  - name: Tool
  - name: Phone Number
  - name: Call
  - name: Chat
  - name: Conversation
  - name: Metric
  - name: Metric Policy
  - name: Metric Collection Job
  - name: Customer Flow
  - name: Customer Flow Edge Case
  - name: Simulation
  - name: Simulation Persona
  - name: Simulation Environment
  - name: Simulation Scenario
  - name: Simulation Run Plan
  - name: Simulation Template
  - name: Simulation Audio Clip
  - name: Simulation Run Plan Job
  - name: Simulation Job
  - name: HTTP Request Definition
  - name: Webhook
  - name: Issue
  - name: Autoimprove
  - name: Agent Config
  - name: Knowledge Base
  - name: Calendar Integration
  - name: MCP Server Integration
  - name: Config
  - name: Organization Project
  - name: Organization Project Member
  - name: Organization Project API Key
  - name: Organization Config
  - name: CLI Auth
  - name: Me
  - name: Project
  - name: Usage
  - name: Analytics
  - name: Dashboard
  - name: Live Report
  - name: Benchmark
  - name: Health
  - name: Campaign Credit
paths:
  /v1/integrations/calendar/google/authorize-url:
    post:
      tags:
        - Calendar Integration
      summary: Start connecting a Google Calendar
      description: >-
        Returns a URL to open in a browser. Google has no credential a request
        body can carry, so connecting one is two steps: ask for this URL, let
        the customer consent, and Roark finishes the rest server-side (it
        exchanges the code, verifies that both calendar permissions were
        granted, reads the account’s own timezone when none was given, and
        stores the connection). Nothing is created until the customer consents,
        and a link that is not used expires. Read the result with `GET
        /v1/integrations/calendar?provider=GOOGLE`.
      operationId: postV1IntegrationsCalendarGoogleAuthorize-url
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  minLength: 1
                  maxLength: 120
                  description: >-
                    Customer-facing name for the connection, unique within the
                    project. Decided now because the consent screen has nowhere
                    to carry it.
                timezone:
                  type:
                    - string
                    - 'null'
                  minLength: 1
                  description: >-
                    The named IANA timezone to offer slots in, for example
                    `America/Los_Angeles`. Omit to adopt the Google account’s
                    own. A fixed offset such as `-08:00` is rejected: it does
                    not observe DST.
                loginHint:
                  type:
                    - string
                    - 'null'
                  format: email
                  description: >-
                    The Google account to preselect on the consent screen. A
                    hint only: it is ignored if the user is signed into another
                    account, and nothing is authorized by it.
              required:
                - label
              title: StartCalendarOauthInput
              description: Input for starting a Google Calendar connection.
      responses:
        '200':
          description: A URL to open, and when it stops working.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      authorizeUrl:
                        type: string
                        description: >-
                          Open this in a browser. After the customer consents,
                          Google returns to Roark, which exchanges the code,
                          verifies the credential and stores the connection.
                          Read the result with `GET
                          /v1/integrations/calendar?provider=GOOGLE`.
                      state:
                        type: string
                        description: >-
                          The opaque single-use value this flow is identified
                          by, echoed so a caller can correlate its own UI. Not a
                          credential and not accepted anywhere as one.
                      expiresAt:
                        type: string
                        description: >-
                          When the link stops working, ISO 8601. Start again
                          after that.
                    required:
                      - authorizeUrl
                      - state
                      - expiresAt
                    title: CalendarOauthStart
                required:
                  - data
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Validation error
              example:
                type: validation
                code: invalid_parameter
                message: The request was invalid
                param: email
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Authentication error
              example:
                type: authentication
                code: unauthorized
                message: Authentication required
          description: Unauthorized
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
                description: Server error
              example:
                type: internal
                code: internal_error
                message: Internal server error
          description: Internal Server Error
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        type:
          type: string
          enum:
            - validation
            - authentication
            - forbidden
            - not_found
            - conflict
            - payment_required
            - rate_limit
            - internal
          description: The error type category
          examples:
            - validation
            - authentication
        code:
          type: string
          description: Machine-readable error code identifier
          examples:
            - invalid_parameter
            - missing_required_field
            - unauthorized
        message:
          type: string
          description: Human-readable error message
          examples:
            - The request was invalid
            - Authentication required
        param:
          type: string
          description: The parameter that caused the error (if applicable)
          examples:
            - email
            - user_id
        details:
          description: Additional error context information
      required:
        - type
        - code
        - message
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

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