Tableau Projects API

Create, update, delete, and query projects. Projects are containers for organizing workbooks, data sources, and other content on a site.

Operations 5

GET /sites/{site-id}/projects Tableau Query Projects #
POST /sites/{site-id}/projects Tableau Create Project #
PUT /sites/{site-id}/projects/{project-id} Tableau Update Project #
DELETE /sites/{site-id}/projects/{project-id} Tableau Delete Project #
GET /sites/{site-id}/projects/{project-id}/default-permissions/workbooks Tableau Query Default Permissions for Workbooks #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tableau-projects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tableau-projects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 3.24.0
  title: Tableau REST Authentication Projects API
  description: The Tableau REST API allows you to manage and change Tableau Server and Tableau Cloud resources programmatically using HTTP. You can use the REST API to manage sites, projects, workbooks, views, data sources, users, groups, permissions, schedules, subscriptions, and more.
  license:
    name: Proprietary
    url: https://www.tableau.com/legal
  termsOfService: https://www.tableau.com/legal
  contact:
    name: Tableau Developer Support
    url: https://www.tableau.com/support
servers:
- url: https://{server}/api/{api-version}
  description: Tableau Server or Tableau Cloud
  variables:
    server:
      default: 10ax.online.tableau.com
      description: The hostname of your Tableau Server or Tableau Cloud site. For Tableau Cloud, use the pod URL (e.g., 10ax.online.tableau.com). For Tableau Server, use your server hostname.
    api-version:
      default: '3.24'
      description: The version of the REST API to use. The API version corresponds to the version of Tableau Server or Tableau Cloud.
      enum:
      - '3.24'
      - '3.23'
      - '3.22'
      - '3.21'
      - '3.20'
      - '3.19'
security:
- TableauAuth: []
tags:
- name: Projects
  description: Create, update, delete, and query projects. Projects are containers for organizing workbooks, data sources, and other content on a site.
paths:
  /sites/{site-id}/projects:
    get:
      operationId: queryProjects
      summary: Tableau Query Projects
      description: Returns a list of projects on the specified site, with optional pagination. You can filter and sort the list of projects.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/SiteId'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Sort'
      responses:
        '200':
          description: A paginated list of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectListResponse'
              examples:
                Queryprojects200Example:
                  summary: Default queryProjects 200 response
                  x-microcks-default: true
                  value:
                    pagination:
                      pageNumber: 10
                      pageSize: 10
                      totalAvailable: 10
                    projects:
                      project:
                      - {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createProject
      summary: Tableau Create Project
      description: Creates a project on the specified site. You can also create project hierarchies by setting a parent project.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/SiteId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectRequest'
            examples:
              CreateprojectRequestExample:
                summary: Default createProject request
                x-microcks-default: true
                value:
                  project:
                    name: Example Title
                    description: A sample description.
                    parentProjectId: '500123'
                    contentPermissions: LockedToProject
      responses:
        '201':
          description: Project was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
              examples:
                Createproject201Example:
                  summary: Default createProject 201 response
                  x-microcks-default: true
                  value:
                    project:
                      id: abc123
                      name: Example Title
                      description: A sample description.
                      parentProjectId: '500123'
                      contentPermissions: LockedToProject
                      createdAt: '2026-01-15T10:30:00Z'
                      updatedAt: '2026-01-15T10:30:00Z'
                      owner:
                        id: abc123
                      topLevelProject: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /sites/{site-id}/projects/{project-id}:
    put:
      operationId: updateProject
      summary: Tableau Update Project
      description: Updates the name, description, or project hierarchy of the specified project.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/SiteId'
      - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectRequest'
            examples:
              UpdateprojectRequestExample:
                summary: Default updateProject request
                x-microcks-default: true
                value:
                  project:
                    name: Example Title
                    description: A sample description.
                    parentProjectId: '500123'
                    contentPermissions: LockedToProject
      responses:
        '200':
          description: Project was updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
              examples:
                Updateproject200Example:
                  summary: Default updateProject 200 response
                  x-microcks-default: true
                  value:
                    project:
                      id: abc123
                      name: Example Title
                      description: A sample description.
                      parentProjectId: '500123'
                      contentPermissions: LockedToProject
                      createdAt: '2026-01-15T10:30:00Z'
                      updatedAt: '2026-01-15T10:30:00Z'
                      owner:
                        id: abc123
                      topLevelProject: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteProject
      summary: Tableau Delete Project
      description: Deletes the specified project on a site. When you delete a project, all Tableau assets inside the project are also deleted.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/SiteId'
      - $ref: '#/components/parameters/ProjectId'
      responses:
        '204':
          description: Project was deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /sites/{site-id}/projects/{project-id}/default-permissions/workbooks:
    get:
      operationId: queryDefaultWorkbookPermissions
      summary: Tableau Query Default Permissions for Workbooks
      description: Returns the default permissions for workbooks in the specified project.
      tags:
      - Projects
      parameters:
      - $ref: '#/components/parameters/SiteId'
      - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: Default workbook permissions for the project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermissionListResponse'
              examples:
                Querydefaultworkbookpermissions200Example:
                  summary: Default queryDefaultWorkbookPermissions 200 response
                  x-microcks-default: true
                  value:
                    permissions:
                      granteeCapabilities:
                      - {}
                    parent:
                      project:
                        id: abc123
                        name: Example Title
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Project:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the project.
          example: abc123
        name:
          type: string
          description: The name of the project.
          example: Example Title
        description:
          type: string
          description: A description of the project.
          example: A sample description.
        parentProjectId:
          type:
          - string
          - 'null'
          description: The ID of the parent project. If null, this is a top-level project.
          example: '500123'
        contentPermissions:
          type: string
          enum:
          - LockedToProject
          - ManagedByOwner
          - LockedToProjectWithoutNested
          description: The permissions model for the project.
          example: LockedToProject
        createdAt:
          type: string
          format: date-time
          description: The date and time the project was created.
          example: '2026-01-15T10:30:00Z'
        updatedAt:
          type: string
          format: date-time
          description: The date and time the project was last updated.
          example: '2026-01-15T10:30:00Z'
        owner:
          type: object
          properties:
            id:
              type: string
              description: The ID of the project owner.
          example: example_value
        topLevelProject:
          type: boolean
          description: Whether this is a top-level project.
          example: true
    Permission:
      type: object
      properties:
        granteeCapabilities:
          type: array
          items:
            type: object
            properties:
              user:
                type: object
                properties:
                  id:
                    type: string
              group:
                type: object
                properties:
                  id:
                    type: string
              capabilities:
                type: object
                properties:
                  capability:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: The name of the capability (e.g., Read, Write, ChangePermissions, Delete, Filter, ViewComments, AddComment, ExportData, ExportImage, ShareView, ViewUnderlyingData, WebAuthoring, RunExplainData).
                        mode:
                          type: string
                          enum:
                          - Allow
                          - Deny
                          description: Whether the capability is allowed or denied.
          example: []
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            summary:
              type: string
              description: A short summary of the error.
            detail:
              type: string
              description: A detailed description of the error.
            code:
              type: string
              description: A numeric error code.
          example: example_value
    Pagination:
      type: object
      properties:
        pageNumber:
          type: integer
          description: The current page number.
          example: 10
        pageSize:
          type: integer
          description: The number of items per page.
          example: 10
        totalAvailable:
          type: integer
          description: The total number of items available.
          example: 10
    UpdateProjectRequest:
      type: object
      properties:
        project:
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            parentProjectId:
              type: string
            contentPermissions:
              type: string
              enum:
              - LockedToProject
              - ManagedByOwner
              - LockedToProjectWithoutNested
          example: example_value
    PermissionListResponse:
      type: object
      properties:
        permissions:
          $ref: '#/components/schemas/Permission'
        parent:
          type: object
          properties:
            project:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
          example: example_value
    ProjectListResponse:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        projects:
          type: object
          properties:
            project:
              type: array
              items:
                $ref: '#/components/schemas/Project'
          example: example_value
    ProjectResponse:
      type: object
      properties:
        project:
          $ref: '#/components/schemas/Project'
    CreateProjectRequest:
      type: object
      properties:
        project:
          type: object
          required:
          - name
          properties:
            name:
              type: string
              description: The name for the project.
            description:
              type: string
              description: A description for the project.
            parentProjectId:
              type: string
              description: The ID of the parent project. Omit for a top-level project.
            contentPermissions:
              type: string
              enum:
              - LockedToProject
              - ManagedByOwner
              - LockedToProjectWithoutNested
          example: example_value
  parameters:
    Filter:
      name: filter
      in: query
      schema:
        type: string
      description: An expression that lets you specify a subset of items to return. Use the format filter=field:operator:value. Operators include eq, gt, gte, lt, lte, has, and in.
    ProjectId:
      name: project-id
      in: path
      required: true
      schema:
        type: string
      description: The ID of the project.
    SiteId:
      name: site-id
      in: path
      required: true
      schema:
        type: string
      description: The ID of the site. You can get the site ID from the response to the Sign In method.
    Sort:
      name: sort
      in: query
      schema:
        type: string
      description: An expression that lets you specify the order in which items are returned. Use the format sort=field:direction where direction is asc or desc.
    PageNumber:
      name: pageNumber
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
      description: The page number of the set of items to return. The default is 1.
    PageSize:
      name: pageSize
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 1000
        default: 100
      description: The number of items to return in one response. The minimum is 1 and the maximum is 1000.
  responses:
    BadRequest:
      description: The request was malformed or contained invalid parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Conflict:
      description: A resource with the same name or identifier already exists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: The caller does not have permission to perform the requested action.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: The authentication credentials were missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    TableauAuth:
      type: apiKey
      in: header
      name: X-Tableau-Auth
      description: The authentication token obtained from the Sign In method. Include this token in the X-Tableau-Auth header of all subsequent requests.
externalDocs:
  description: Tableau REST API Reference
  url: https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref.htm