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

# List articles in a portal

> The portal's articles, newest update first — or in position order when you filter by `category_slug`. The counts in `meta` are deliberately computed before `status` and `author_id` are applied, so they stay stable as you move between the draft, published and mine views.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/accounts/{account_id}/portals/{id}/articles
openapi: 3.0.4
info:
  title: Tied API
  description: >-
    The Tied REST API. Three families of endpoint, each with its own credential:
    **Application** for everything inside an account, **Platform** for
    provisioning accounts and users, and **Client** for acting as a contact from
    your own surface.
  version: 1.1.0
  termsOfService: https://tied.com/legal
  contact:
    email: hello@tied.com
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://app.tied.com
    description: Tied cloud
security: []
tags:
  - name: Account AgentBots
    description: Account-specific Agent Bots
  - name: Agents
    description: Agent management APIs
  - name: Canned Responses
    description: Pre-defined responses for common queries
  - name: Contacts
    description: Contact management APIs
  - name: Contact Labels
    description: Manage contact labels
  - name: Conversation Assignments
    description: Manage conversation assignments
  - name: Conversation Labels
    description: Manage conversation labels
  - name: Conversations
    description: Conversation management APIs
  - name: Custom Attributes
    description: Custom fields for contacts and conversations
  - name: Custom Filters
    description: Saved filters for conversations
  - name: Inboxes
    description: Communication channels setup
  - name: Integrations
    description: Third-party integrations
  - name: Messages
    description: Message management APIs
  - name: Profile
    description: User profile APIs
  - name: Reports
    description: Analytics and reporting APIs
  - name: Teams
    description: Team management APIs
  - name: Webhooks
    description: Event notification webhooks
  - name: Automation Rule
    description: Workflow automation rules
  - name: Help Center
    description: Knowledge base management
  - name: Contacts API
    description: Public contact APIs
  - name: Conversations API
    description: Public conversation APIs
  - name: Messages API
    description: Public message APIs
  - name: CSAT Survey Page
    description: Customer satisfaction survey
  - name: Account
    description: >-
      The authenticated user's own account — read and update account settings.
      Distinct from the Platform family's **Accounts**, which provisions
      accounts across an installation.
  - name: Audit Logs
    description: Read the account's audit trail
  - name: Inbox API
    description: Public inbox lookup by channel identifier
  - name: Labels
    description: >-
      Create and manage the account's labels. Applying one to a conversation or
      contact is a separate endpoint under those resources.
  - name: Macros
    description: >-
      Saved multi-step actions an agent — or an integration — can run against
      one or more conversations.
  - name: Campaigns
    description: Ongoing website campaigns and one-off SMS and WhatsApp sends.
  - name: Contact Notes
    description: Internal notes on a contact. Never visible to the contact.
  - name: Help Center Categories
    description: Categories group a portal's articles, one tree per allowed locale.
  - name: Help Center Articles
    description: The articles a portal publishes, and their draft and archived states.
  - name: Summary Reports
    description: Per-agent, per-team, per-inbox and per-label totals for a period, as JSON.
  - name: Live Reports
    description: Right-now queue counts. No date range — these describe the present.
  - name: CSAT
    description: >-
      The satisfaction ratings contacts have submitted, and the metrics computed
      from them.
  - name: Notifications
    description: >-
      The per-user notification feed, its read and snooze state, and the
      settings that decide what lands in it.
  - name: Conversation Participants
    description: >-
      The agents watching a conversation. Participants get notified about it
      without being assigned to it.
  - name: Draft Messages
    description: >-
      The unsent reply held for a conversation. Stored in Redis, one per
      conversation.
  - name: Search
    description: >-
      One search service across conversations, contacts, messages and Help
      Center articles.
  - name: Dashboard Apps
    description: Embedded pages that appear as a tab beside a conversation.
  - name: Assignment Policies
    description: How conversations are handed out, and which inbox uses which policy.
  - name: Files
    description: Storing a file so another endpoint can attach it.
  - name: Bot Flows
    description: >-
      Scripted conversation flows, their versions, and the publish and rollback
      that move between them.
  - name: Billing
    description: >-
      Credit balance, usage, invoices, spend controls and the provider-hosted
      payment flows.
  - name: AMB Templates
    description: >-
      Saved Apple Messages primitive payloads an agent can reuse from the
      composer.
  - name: AMB Onboarding
    description: The in-flight Apple Messages for Business registration for an account.
  - name: Widget Session
    description: Starting a widget session and reading the visitor it belongs to.
  - name: Widget Conversation
    description: The visitor's conversation and its messages.
  - name: Widget Context
    description: Campaigns, agents, labels, events and uploads for a widget session.
  - name: CSAT Survey
    description: The public, unauthenticated survey a contact answers from a link.
  - name: Workspace
    description: Scheduling and cancelling deletion of the whole workspace.
paths:
  /api/v1/accounts/{account_id}/portals/{id}/articles:
    parameters:
      - $ref: '#/components/parameters/account_id'
      - $ref: '#/components/parameters/portal_id'
    get:
      tags:
        - Help Center Articles
      summary: List articles in a portal
      description: >-
        The portal's articles, newest update first — or in position order when
        you filter by `category_slug`. The counts in `meta` are deliberately
        computed before `status` and `author_id` are applied, so they stay
        stable as you move between the draft, published and mine views.
      operationId: list-articles
      parameters:
        - name: locale
          in: query
          required: false
          description: Return only articles in this locale.
          schema:
            type: string
        - name: query
          in: query
          required: false
          description: Free-text search across title and content.
          schema:
            type: string
        - name: category_slug
          in: query
          required: false
          description: >-
            Restrict to one category, and order by position rather than by last
            update.
          schema:
            type: string
        - name: status
          in: query
          required: false
          description: Filter by publication state.
          schema:
            type: string
            enum:
              - draft
              - published
              - archived
        - name: author_id
          in: query
          required: false
          description: Restrict to one author.
          schema:
            type: integer
        - name: page
          in: query
          required: false
          description: Page number.
          schema:
            type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/article_list_response'
              example:
                payload:
                  - id: 7
                    slug: understanding-your-invoice
                    title: Understanding your invoice
                    content: >-
                      Every invoice breaks down into three parts: your seat
                      count, your resolution usage for the period, and any
                      channel fees for numbers or messaging capacity you have
                      provisioned.


                      The resolution line itemizes by channel, so you can see
                      whethe…
                    description: >-
                      The three parts of every Tied invoice, and how to trace a
                      line back to a conversation.
                    status: published
                    position: 30
                    account_id: 1
                    updated_at: 1789851404
                    meta: {}
                    category:
                      id: 3
                      name: Billing
                      slug: billing
                      locale: en
                    views: null
                    author:
                      id: 1
                      account_id: 1
                      availability_status: offline
                      auto_offline: true
                      confirmed: true
                      email: you@example.com
                      provider: email
                      available_name: Alex Rivera
                      name: Alex Rivera
                      role: administrator
                      thumbnail: /dashboard/images/default-contact-avatars/031.svg
                      avatar_url: ''
                      illustration_avatar: true
                      accent_color: null
                      custom_role_id: null
                  - id: 6
                    slug: add-and-remove-seats
                    title: Add and remove seats
                    content: >-
                      Seats control how many agents can be assigned
                      conversations and log in to the dashboard; they are
                      separate from the resolution-based usage charges on your
                      account.


                      Adding a seat is prorated for the rest of the current
                      billing period, so y…
                    description: >-
                      How seats are priced and prorated, separate from
                      resolution-based usage.
                    status: published
                    position: 20
                    account_id: 1
                    updated_at: 1789851404
                    meta: {}
                    category:
                      id: 3
                      name: Billing
                      slug: billing
                      locale: en
                    views: null
                    author:
                      id: 1
                      account_id: 1
                      availability_status: offline
                      auto_offline: true
                      confirmed: true
                      email: you@example.com
                      provider: email
                      available_name: Alex Rivera
                      name: Alex Rivera
                      role: administrator
                      thumbnail: /dashboard/images/default-contact-avatars/031.svg
                      avatar_url: ''
                      illustration_avatar: true
                      accent_color: null
                      custom_role_id: null
                meta:
                  all_articles_count: 7
                  archived_articles_count: 0
                  articles_count: 7
                  current_page: 1
                  draft_articles_count: 0
                  mine_articles_count: 7
                  published_count: 7
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_message'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_message'
      security:
        - userApiKey: []
components:
  parameters:
    account_id:
      in: path
      name: id
      schema:
        type: integer
      required: true
      description: The numeric ID of the account
    portal_id:
      in: path
      name: id
      schema:
        type: string
      required: true
      description: The slug identifier of the portal
  schemas:
    article_list_response:
      type: object
      properties:
        payload:
          type: array
          items:
            $ref: '#/components/schemas/article'
          description: The articles matching the query.
        meta:
          type: object
          description: >-
            Counts for the whole portal, computed before `status` and
            `author_id` are applied — so they do not change as you filter.
          properties:
            current_page:
              type: integer
              description: The page this response represents.
            articles_count:
              type: integer
              description: >-
                Articles matching the query, ignoring the status and author
                filters.
            all_articles_count:
              type: integer
              description: Same as `articles_count`.
            mine_articles_count:
              type: integer
              description: How many of those were written by the calling user.
            published_count:
              type: integer
              description: How many are published.
            draft_articles_count:
              type: integer
              description: How many are drafts.
            archived_articles_count:
              type: integer
              description: How many are archived.
    error_message:
      type: object
      description: >-
        The shape returned by `render_unauthorized`, `render_not_found_error`
        and `render_could_not_create_error`.
      properties:
        error:
          type: string
          description: A single human-readable message.
          example: Resource could not be found
      required:
        - error
    article:
      type: object
      description: >-
        An article as the Help Center API renders it. Note that this is not the
        database row — `category` and `author` come back as nested objects
        rather than as `category_id` and `author_id`.
      properties:
        id:
          type: integer
          description: The numeric ID of the article.
        slug:
          type: string
          description: URL slug. Generated from the title when you do not supply one.
        title:
          type: string
          description: The article title.
        content:
          type: string
          description: The article body, in Markdown.
        description:
          type: string
          nullable: true
          description: Short summary shown in article lists and search results.
        status:
          type: string
          enum:
            - draft
            - published
            - archived
          description: >-
            Publication state. Only `published` articles appear on the public
            Help Center.
        position:
          type: integer
          nullable: true
          description: Sort position within the category. Set through the reorder endpoint.
        account_id:
          type: integer
          description: The account the article belongs to.
        updated_at:
          type: integer
          description: Last update time as a Unix epoch in seconds.
        views:
          type: integer
          nullable: true
          description: >-
            View count. Null until the article has been read on the public Help
            Center.
        meta:
          type: object
          description: SEO metadata — `title`, `description` and `tags`.
        category:
          type: object
          description: >-
            The category the article sits in. Every field is null when the
            article has no category.
          properties:
            id:
              type: integer
              nullable: true
              description: The numeric ID of the category.
            name:
              type: string
              nullable: true
              description: The category name.
            slug:
              type: string
              nullable: true
              description: The category slug.
            locale:
              type: string
              nullable: true
              description: The category locale.
        author:
          $ref: '#/components/schemas/agent'
    agent:
      type: object
      properties:
        id:
          type: integer
          description: The agent's numeric ID.
        account_id:
          type: integer
          description: The account the agent belongs to.
        availability_status:
          type: string
          enum:
            - available
            - busy
            - offline
          description: The availability status of the agent computed by Tied.
        auto_offline:
          type: boolean
          description: >-
            Whether the availability status of agent is configured to go offline
            automatically when away.
        confirmed:
          type: boolean
          description: Whether the agent has confirmed their email address.
        email:
          type: string
          description: The email of the agent
        available_name:
          type: string
          description: The available name of the agent
        name:
          type: string
          description: The name of the agent
        role:
          type: string
          enum:
            - agent
            - administrator
          description: The role of the agent
        thumbnail:
          type: string
          description: The thumbnail of the agent
        custom_role_id:
          type: integer
          description: The custom role id of the agent
          nullable: true
        provider:
          type: string
          description: How the agent signs in — `email` for a password login.
        avatar_url:
          type: string
          description: >-
            URL of an uploaded avatar. Empty when the agent has not uploaded
            one.
        illustration_avatar:
          type: boolean
          description: >-
            Whether `thumbnail` is one of the generated illustration avatars
            rather than an upload.
        accent_color:
          type: string
          nullable: true
          description: The agent's chosen dashboard accent colour.
  securitySchemes:
    userApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: >-
        This token can be obtained by visiting the profile page or via rails
        console. Provides access to  endpoints based on the user permissions
        levels. This token can be saved by an external system when user is
        created via API, to perform activities on behalf of the user.

````

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