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

# List routers

> GET /routers — paginated list of account routers

## Endpoint

```http theme={null}
GET https://api.routera.io/routers
```

**Route:** `/routers`\
**Authentication:** Bearer JWT

## Query parameters

| Parameter  | Type    | Default | Description                               |
| ---------- | ------- | ------- | ----------------------------------------- |
| `archived` | boolean | `false` | Set to `true` to include archived routers |
| `limit`    | integer | `10`    | Maximum number of results (10–100)        |
| `offset`   | integer | `0`     | Pagination offset                         |

## Response fields

Each item in `data` includes:

| Property                   | Description                                           |
| -------------------------- | ----------------------------------------------------- |
| `id`                       | Router ID                                             |
| `name`                     | Router display name                                   |
| `object_type`              | Target object type internal name (e.g. `contacts`)    |
| `has_integration`          | Whether the router uses a CRM integration             |
| `is_published`             | Whether the router is published                       |
| `settings`                 | Flattened configuration (primitives except `trigger`) |
| `users`                    | Rotation users (`email` only)                         |
| `teams`                    | Rotation teams (`name` only)                          |
| `archived`                 | `false` or ISO timestamp when archived                |
| `created_at`, `updated_at` | Router timestamps (ISO 8601 UTC)                      |

## Response

**200** — Paginated list

```json theme={null}
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Contact Router",
      "object_type": "contacts",
      "has_integration": true,
      "is_published": true,
      "archived": false,
      "created_at": "2026-05-01T10:00:00.000Z",
      "updated_at": "2026-05-28T12:00:00.000Z",
      "settings": {
        "overwrite": true,
        "owner_field": "contact_owner",
        "distribution_model": "round robin",
        "default_user": "developer@test.com",
        "disable_default_assignment": false,
        "ignore_working_hours": true,
        "account_matching": true,
        "trigger": {
          "groups": [
            {
              "conditions": []
            }
          ]
        }
      },
      "users": [
        {
          "email": "user@example.com"
        }
      ],
      "teams": [
        {
          "name": "Sales Team"
        }
      ]
    }
  ],
  "pagination": {
    "limit": 10,
    "offset": 0,
    "count": 1
  }
}
```

## Errors

| Status | When                                                      |
| ------ | --------------------------------------------------------- |
| `400`  | Invalid list path (e.g. `/routers/{id}` on list endpoint) |
| `401`  | Missing or invalid account context in JWT                 |
| `500`  | Internal server error                                     |


## OpenAPI

````yaml GET /routers
openapi: 3.0.1
info:
  title: Routera API
  description: >-
    Routera v2 REST API. Objects CRUD for contacts, companies, deals, and
    tickets, routers read API, plus router dispatch.
  version: 1.0.0
servers:
  - url: https://api.routera.io
    description: >-
      API Gateway base URL (override with ROUTERA_API_BASE_URL when generating
      docs)
security: []
tags:
  - name: Authentication
    description: Access token issuance
  - name: Contacts
    description: Contact records
  - name: Companies
    description: Company records
  - name: Deals
    description: Deal records
  - name: Tickets
    description: Ticket records
  - name: Routers
    description: Router configuration
  - name: Dispatch
    description: Router assignment
paths:
  /routers:
    get:
      tags:
        - Routers
      summary: List routers
      operationId: listRouters
      parameters:
        - name: archived
          in: query
          description: Include archived routers when true
          schema:
            type: boolean
        - name: limit
          in: query
          description: Maximum results (default 10, max 100)
          schema:
            type: integer
            default: 10
            minimum: 1
            maximum: 100
        - name: offset
          in: query
          description: Pagination offset (default 0)
          schema:
            type: integer
            default: 0
            minimum: 0
      responses:
        '200':
          description: Paginated list
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ListResponse'
                  - properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/Router'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - bearerAuth: []
components:
  schemas:
    ListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
        pagination:
          $ref: '#/components/schemas/Pagination'
    Router:
      type: object
      description: >-
        Router configuration with flattened settings. Only trigger may be a JSON
        object.
      properties:
        id:
          type: string
        name:
          type: string
        object_type:
          type: string
        has_integration:
          type: boolean
        is_published:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        archived:
          description: false when active, or ISO timestamp when archived
          oneOf:
            - type: boolean
            - type: string
              format: date-time
        archived_by:
          type: string
          description: Present when archived
        settings:
          type: object
          additionalProperties: true
          description: >-
            Flattened settings keyed by setting_id (overwrite, owner_field,
            distribution_model, etc.)
        users:
          type: array
          items:
            type: object
            properties:
              email:
                type: string
        teams:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
      example:
        id: 550e8400-e29b-41d4-a716-446655440000
        name: Contact Router
        object_type: contacts
        has_integration: true
        is_published: true
        archived: false
        created_at: '2026-05-01T10:00:00.000Z'
        updated_at: '2026-05-28T12:00:00.000Z'
        settings:
          overwrite: true
          owner_field: contact_owner
          distribution_model: round robin
          default_user: developer@test.com
          disable_default_assignment: false
          ignore_working_hours: true
          account_matching: true
          trigger:
            groups:
              - conditions: []
        users:
          - email: user@example.com
        teams:
          - name: Sales Team
    ApiError:
      type: object
      required:
        - message
        - error
      properties:
        message:
          type: string
        error:
          type: boolean
          enum:
            - true
        field:
          type: string
          description: Field that caused a conflict (409 duplicate responses)
    Pagination:
      type: object
      properties:
        limit:
          type: integer
        offset:
          type: integer
        count:
          type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer JWT with valid account context.

````