Semaphore Projects API

Project management

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/semaphore-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 email required.

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

OpenAPI Specification

semaphore-projects-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Semaphore Public Dashboards Projects API
  description: 'The Semaphore Public API is a RESTful API that allows you to interact with Semaphore CI/CD.

    ## Authorization

    Authorization is done via bearer token. You can obtain a token by visiting your [account settings](https://me.semaphoreci.com/account).


    ## Pagination with link headers

    Each list request supports pagination. List responses include a [link header](https://datatracker.ietf.org/doc/html/rfc5988#section-5) with the pagination URLs.

    Link headers contain next, previous, first relative URLs.

    '
  version: v2
  contact:
    url: https://semaphore.io/contact
    email: support@semaphoreci.com
  termsOfService: https://semaphore.io/terms
  license:
    name: Proprietary
    url: https://semaphore.io/terms
servers:
- url: https://{org_name}.semaphoreci.com/api/v2
  variables:
    org_name:
      default: me
      description: Organization name
security:
- authorization: []
tags:
- name: Projects
  description: Project management
paths:
  /projects:
    post:
      operationId: Projects.Create
      description: Create a project. When creating a project description is ignored.
      tags:
      - Projects
      requestBody:
        content:
          application/json:
            schema:
              properties:
                apiVersion:
                  default: v2
                  description: "ApiVersion defines the versioned schema of this representation of an object.\n        Servers should convert recognized schemas to the latest internal value, and may reject\n        unrecognized values."
                  example: v2
                  readOnly: true
                  title: ApiVersion
                  type: string
                kind:
                  default: Project
                  description: "Kind is a string value representing the REST resource this object represents.\n        Servers may infer this from the endpoint the client submits requests to. Cannot be\n        updated. In CamelCase."
                  example: Project
                  readOnly: true
                  title: Kind
                  type: string
                metadata:
                  description: Metadata of the project, all fields are read only
                  properties:
                    connected:
                      description: Connection status between Semaphore and repository.
                      type: boolean
                    created_at:
                      description: Timestamp in ISO 8601 format
                      format: date-time
                      title: Timestamp
                      type: string
                    created_by:
                      properties:
                        id:
                          description: ID of a User
                          example: 18b40eaf-ce10-49c3-93f2-e4fe72d5160b
                          format: uuid
                          title: User.ID
                          type: string
                      title: User
                      type: object
                    description:
                      description: Description of the project
                      type: string
                    id:
                      description: ID of a Project
                      example: ed12ab59-9224-45c8-82d6-79bf158aaae6
                      format: uuid
                      title: Project.ID
                      type: string
                    name:
                      description: Secret name must match the regex
                      example: my-secret
                      minLength: 1
                      pattern: '^[@: -._a-zA-Z0-9]+$'
                      title: Secret.Name
                      type: string
                    org_id:
                      description: ID of a Organization
                      example: ff19729a-a8d5-4a62-8c5c-9bdbabf6607e
                      format: uuid
                      title: Organization.ID
                      type: string
                  readOnly: true
                  required:
                  - id
                  - name
                  type: object
                spec:
                  description: Specification of the project
                  properties:
                    description:
                      description: Description of the project
                      type: string
                    name:
                      description: Project name must match the regex
                      example: my-project
                      minLength: 1
                      pattern: \A[\w\-\.]+\z
                      title: Project.Name
                      type: string
                    repository:
                      description: Repository settings for the project
                      properties:
                        forked_pull_requests:
                          description: Whether to include forked pull requests in the project, read more [here](https://docs.semaphoreci.com/essentials/project-workflow-trigger-options/#exposing-secrets-in-forked-pull-requests).
                          properties:
                            allowed_contributors:
                              description: List of contributors that can create workflows from forked PRs. Empty list means that everyone can.
                              example: []
                              items:
                                description: Contributor handle
                                title: Contributor
                                type: string
                              type: array
                            allowed_secrets:
                              description: The allowed_secrets property specifies the array of secrets names that are allowed to be exported into jobs triggered by forked-pull-requests. If the array is empty, no secrets will be exported.
                              items:
                                description: Secret name must match the regex
                                example: my-secret
                                minLength: 1
                                pattern: '^[@: -._a-zA-Z0-9]+$'
                                title: Secret.Name
                                type: string
                              type: array
                          type: object
                        integration_type:
                          description: Provider of the repository and authentication method
                          enum:
                          - GITHUB_APP
                          - GITHUB_OAUTH_TOKEN
                          - BITBUCKET
                          type: string
                        pipeline_file:
                          default: .semaphore/semaphore.yml
                          description: Path to the pipeline file to run the projec pipelines with
                          type: string
                        run_on:
                          description: Which event will trigger the pipelines for this project. In most cases it is useful set to ["BRANCHES"]
                          items:
                            enum:
                            - BRANCHES
                            - TAGS
                            - PULL_REQUESTS
                            - FORKED_PULL_REQUESTS
                            title: Projects.RunType
                            type: string
                          type: array
                        status:
                          description: "The status property is used to specify which Semaphore pipeline(s) will submit a status check on GitHub pull requests.\n                A pipeline can create a single status check as a result of a whole pipeline. Or each block in a pipeline can create its own status check.\n                For most of the projects `path: \".semaphore/semaphore.yml\", level: \"PIPELINE\"` will be suitable. **If left empty default value assumed.** "
                          properties:
                            pipeline_files:
                              default:
                              - level: PIPELINE
                                path: .semaphore/semaphore.yml
                              items:
                                description: List of pipeline files that will submit a status check on GitHub pull requests
                                properties:
                                  level:
                                    description: Level of the status check
                                    enum:
                                    - BLOCK
                                    - PIPELINE
                                    type: string
                                  path:
                                    default: .semaphore/semaphore.yml
                                    description: Path to the pipeline file
                                    type: string
                                required:
                                - path
                                - level
                                type: object
                              type: array
                          type: object
                        url:
                          description: URL of the repository
                          example: git@github.com:semaphoreci/toolbox.git
                          type: string
                        whitelist:
                          description: Whitelist of branches and tags that can be built using this project
                          properties:
                            branches:
                              description: List of branches that can be build. Regular expressions allowed. Empty list means that all branches can. Used only when RunType BRANCHES is included.
                              items:
                                type: string
                              type: array
                            tags:
                              description: List of tags that can be build. Regular expressions allowed. Empty list means that all tags can. Used only when RunType TAGS is included.
                              items:
                                type: string
                              type: array
                          type: object
                      required:
                      - url
                      - integration_type
                      - run_on
                      type: object
                    visibility:
                      description: Visibility of the project
                      enum:
                      - PUBLIC
                      - PRIVATE
                      type: string
                  required:
                  - repository
                  - name
                  type: object
              required:
              - apiVersion
              - kind
              - metadata
              - spec
              title: Projects.Project
              type: object
        description: Project to be created
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  apiVersion:
                    default: v2
                    description: "ApiVersion defines the versioned schema of this representation of an object.\n        Servers should convert recognized schemas to the latest internal value, and may reject\n        unrecognized values."
                    example: v2
                    readOnly: true
                    title: ApiVersion
                    type: string
                  kind:
                    default: Project
                    description: "Kind is a string value representing the REST resource this object represents.\n        Servers may infer this from the endpoint the client submits requests to. Cannot be\n        updated. In CamelCase."
                    example: Project
                    readOnly: true
                    title: Kind
                    type: string
                  metadata:
                    description: Metadata of the project, all fields are read only
                    properties:
                      connected:
                        description: Connection status between Semaphore and repository.
                        type: boolean
                      created_at:
                        description: Timestamp in ISO 8601 format
                        format: date-time
                        title: Timestamp
                        type: string
                      created_by:
                        properties:
                          id:
                            description: ID of a User
                            example: 18b40eaf-ce10-49c3-93f2-e4fe72d5160b
                            format: uuid
                            title: User.ID
                            type: string
                        title: User
                        type: object
                      description:
                        description: Description of the project
                        type: string
                      id:
                        description: ID of a Project
                        example: ed12ab59-9224-45c8-82d6-79bf158aaae6
                        format: uuid
                        title: Project.ID
                        type: string
                      name:
                        description: Secret name must match the regex
                        example: my-secret
                        minLength: 1
                        pattern: '^[@: -._a-zA-Z0-9]+$'
                        title: Secret.Name
                        type: string
                      org_id:
                        description: ID of a Organization
                        example: ff19729a-a8d5-4a62-8c5c-9bdbabf6607e
                        format: uuid
                        title: Organization.ID
                        type: string
                    readOnly: true
                    required:
                    - id
                    - name
                    type: object
                  spec:
                    description: Specification of the project
                    properties:
                      description:
                        description: Description of the project
                        type: string
                      name:
                        description: Project name must match the regex
                        example: my-project
                        minLength: 1
                        pattern: \A[\w\-\.]+\z
                        title: Project.Name
                        type: string
                      repository:
                        description: Repository settings for the project
                        properties:
                          forked_pull_requests:
                            description: Whether to include forked pull requests in the project, read more [here](https://docs.semaphoreci.com/essentials/project-workflow-trigger-options/#exposing-secrets-in-forked-pull-requests).
                            properties:
                              allowed_contributors:
                                description: List of contributors that can create workflows from forked PRs. Empty list means that everyone can.
                                example: []
                                items:
                                  description: Contributor handle
                                  title: Contributor
                                  type: string
                                type: array
                              allowed_secrets:
                                description: The allowed_secrets property specifies the array of secrets names that are allowed to be exported into jobs triggered by forked-pull-requests. If the array is empty, no secrets will be exported.
                                items:
                                  description: Secret name must match the regex
                                  example: my-secret
                                  minLength: 1
                                  pattern: '^[@: -._a-zA-Z0-9]+$'
                                  title: Secret.Name
                                  type: string
                                type: array
                            type: object
                          integration_type:
                            description: Provider of the repository and authentication method
                            enum:
                            - GITHUB_APP
                            - GITHUB_OAUTH_TOKEN
                            - BITBUCKET
                            type: string
                          pipeline_file:
                            default: .semaphore/semaphore.yml
                            description: Path to the pipeline file to run the projec pipelines with
                            type: string
                          run_on:
                            description: Which event will trigger the pipelines for this project. In most cases it is useful set to ["BRANCHES"]
                            items:
                              enum:
                              - BRANCHES
                              - TAGS
                              - PULL_REQUESTS
                              - FORKED_PULL_REQUESTS
                              title: Projects.RunType
                              type: string
                            type: array
                          status:
                            description: "The status property is used to specify which Semaphore pipeline(s) will submit a status check on GitHub pull requests.\n                A pipeline can create a single status check as a result of a whole pipeline. Or each block in a pipeline can create its own status check.\n                For most of the projects `path: \".semaphore/semaphore.yml\", level: \"PIPELINE\"` will be suitable. **If left empty default value assumed.** "
                            properties:
                              pipeline_files:
                                default:
                                - level: PIPELINE
                                  path: .semaphore/semaphore.yml
                                items:
                                  description: List of pipeline files that will submit a status check on GitHub pull requests
                                  properties:
                                    level:
                                      description: Level of the status check
                                      enum:
                                      - BLOCK
                                      - PIPELINE
                                      type: string
                                    path:
                                      default: .semaphore/semaphore.yml
                                      description: Path to the pipeline file
                                      type: string
                                  required:
                                  - path
                                  - level
                                  type: object
                                type: array
                            type: object
                          url:
                            description: URL of the repository
                            example: git@github.com:semaphoreci/toolbox.git
                            type: string
                          whitelist:
                            description: Whitelist of branches and tags that can be built using this project
                            properties:
                              branches:
                                description: List of branches that can be build. Regular expressions allowed. Empty list means that all branches can. Used only when RunType BRANCHES is included.
                                items:
                                  type: string
                                type: array
                              tags:
                                description: List of tags that can be build. Regular expressions allowed. Empty list means that all tags can. Used only when RunType TAGS is included.
                                items:
                                  type: string
                                type: array
                            type: object
                        required:
                        - url
                        - integration_type
                        - run_on
                        type: object
                      visibility:
                        description: Visibility of the project
                        enum:
                        - PUBLIC
                        - PRIVATE
                        type: string
                    required:
                    - repository
                    - name
                    type: object
                required:
                - apiVersion
                - kind
                - metadata
                - spec
                title: Projects.Project
                type: object
          description: Created project
        '400':
          content:
            application/json:
              schema:
                properties:
                  documentation_url:
                    example: https://docs.semaphoreci.com/api/error-codes/bad-request
                    format: uri
                    type: string
                  message:
                    type: string
                title: Error
                type: object
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                properties:
                  documentation_url:
                    example: https://docs.semaphoreci.com/api/error-codes/bad-request
                    format: uri
                    type: string
                  message:
                    type: string
                title: Error
                type: object
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                properties:
                  documentation_url:
                    example: https://docs.semaphoreci.com/api/error-codes/bad-request
                    format: uri
                    type: string
                  message:
                    type: string
                title: Error
                type: object
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                description: Resource validation failed
                properties:
                  documentation_url:
                    example: https://docs.semaphoreci.com/api/error-codes/bad-request
                    format: uri
                    type: string
                  errors:
                    items:
                      properties:
                        field:
                          type: string
                        message:
                          type: string
                      type: object
                    type: array
                  message:
                    type: string
                title: Error.Validation
                type: object
          description: Validation Failed
        '500':
          content:
            application/json:
              schema:
                properties:
                  documentation_url:
                    example: https://docs.semaphoreci.com/api/error-codes/bad-request
                    format: uri
                    type: string
                  message:
                    type: string
                title: Error
                type: object
          description: Internal Server Error
      security:
      - authorization: []
    get:
      operationId: Projects.List
      description: List projects in organization.
      tags:
      - Projects
      parameters:
      - description: UUID of the project owner
        example: 7d36df70-6eab-4768-83d8-090f44f47235
        in: query
        name: owner_uuid
        required: false
        schema:
          format: uuid
          type: string
      - description: URL of the repository the project is associated with
        example: git@github.com:semaphoreci/toolbox.git
        in: query
        name: repo_url
        required: false
        schema:
          type: string
      - description: "Direction of the pagination.\n            `NEXT` will fetch projects after the provided token, `PREVIOUS` will fetch projects before the provided token"
        in: query
        name: direction
        required: false
        schema:
          default: NEXT
          enum:
          - NEXT
          - PREVIOUS
          type: string
      - description: Starting point for listing, if you are fetching first page leave it empty
        in: query
        name: page_token
        required: false
        schema:
          default: ''
          type: string
      - description: Page size
        in: query
        name: page_size
        required: false
        schema:
          default: 20
          maximum: 100
          minimum: 1
          title: PageSize
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  properties:
                    apiVersion:
                      default: v2
                      description: "ApiVersion defines the versioned schema of this representation of an object.\n        Servers should convert recognized schemas to the latest internal value, and may reject\n        unrecognized values."
                      example: v2
                      readOnly: true
                      title: ApiVersion
                      type: string
                    kind:
                      default: Project
                      description: "Kind is a string value representing the REST resource this object represents.\n        Servers may infer this from the endpoint the client submits requests to. Cannot be\n        updated. In CamelCase."
                      example: Project
                      readOnly: true
                      title: Kind
                      type: string
                    metadata:
                      description: Metadata of the project, all fields are read only
                      properties:
                        connected:
                          description: Connection status between Semaphore and repository.
                          type: boolean
                        created_at:
                          description: Timestamp in ISO 8601 format
                          format: date-time
                          title: Timestamp
                          type: string
                        created_by:
                          properties:
                            id:
                              description: ID of a User
                              example: 18b40eaf-ce10-49c3-93f2-e4fe72d5160b
                              format: uuid
                              title: User.ID
                              type: string
                          title: User
                          type: object
                        description:
                          description: Description of the project
                          type: string
                        id:
                          description: ID of a Project
                          example: ed12ab59-9224-45c8-82d6-79bf158aaae6
                          format: uuid
                          title: Project.ID
                          type: string
                        name:
                          description: Secret name must match the regex
                          example: my-secret
                          minLength: 1
                          pattern: '^[@: -._a-zA-Z0-9]+$'
                          title: Secret.Name
                          type: string
                        org_id:
                          description: ID of a Organization
                          example: ff19729a-a8d5-4a62-8c5c-9bdbabf6607e
                          format: uuid
                          title: Organization.ID
                          type: string
                      readOnly: true
                      required:
                      - id
                      - name
                      type: object
                    spec:
                      description: Specification of the project
                      properties:
                        description:
                          description: Description of the project
                          type: string
                        name:
                          description: Project name must match the regex
                          example: my-project
                          minLength: 1
                          pattern: \A[\w\-\.]+\z
                          title: Project.Name
                          type: string
                        repository:
                          description: Repository settings for the project
                          properties:
                            forked_pull_requests:
                              description: Whether to include forked pull requests in the project, read more [here](https://docs.semaphoreci.com/essentials/project-workflow-trigger-options/#exposing-secrets-in-forked-pull-requests).
                              properties:
                                allowed_contributors:
                                  description: List of contributors that can create workflows from forked PRs. Empty list means that everyone can.
                                  example: []
                                  items:
                                    description: Contributor handle
                                    title: Contributor
                                    type: string
                                  type: array
                                allowed_secrets:
                                  description: The allowed_secrets property specifies the array of secrets names that are allowed to be exported into jobs triggered by forked-pull-requests. If the array is empty, no secrets will be exported.
                                  items:
                                    description: Secret name must match the regex
                                    example: my-secret
                                    minLength: 1
                                    pattern: '^[@: -._a-zA-Z0-9]+$'
                                    title: Secret.Name
                                    type: string
                                  type: array
                              type: object
                            integration_type:
                              description: Provider of the repository and authentication method
                              enum:
                              - GITHUB_APP
                              - GITHUB_OAUTH_TOKEN
                              - BITBUCKET
                              type: string
                            pipeline_file:
                              default: .semaphore/semaphore.yml
                              description: Path to the pipeline file to run the projec pipelines with
                              type: string
                            run_on:
                              description: Which event will trigger the pipelines for this project. In most cases it is useful set to ["BRANCHES"]
                              items:
                                enum:
                                - BRANCHES
                                - TAGS
                                - PULL_REQUESTS
                                - FORKED_PULL_REQUESTS
                                title: Projects.RunType
                                type: string
                              type: array
                            status:
                              description: "The status property is used to specify which Semaphore pipeline(s) will submit a status check on GitHub pull requests.\n                A pipeline can create a single status check as a result of a whole pipeline. Or each block in a pipeline can create its own status check.\n                For most of the projects `path: \".semaphore/semaphore.yml\", level: \"PIPELINE\"` will be suitable. **If left empty default value assumed.** "
                              properties:
                        

# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/semaphore/refs/heads/main/openapi/semaphore-projects-api-openapi.yml