Permit.io Projects API

Projects let you manage permissions for different business objectives from a single Permit account. For example, you can create one project called "Billing App" and another project called "Web App". Every project is a separate silo, and has its own unique set of environments and policies.

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/permit-io-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

permit-io-projects-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Permit.io Access Requests (EAP) Access Requests (EAP) Projects API
  description: '

    Authorization as a service

    '
  version: 2.0.0
tags:
- name: Projects
  description: '

    Projects let you manage permissions for different business objectives from a single Permit account.


    For example, you can create one project called "Billing App" and another project called "Web App".

    Every project is a separate silo, and has its own unique set of environments and policies.

    '
paths:
  /v2/projects:
    get:
      tags:
      - Projects
      summary: List Projects
      description: Lists all the projects under the active organization.
      operationId: list_projects
      parameters:
      - description: Page number of the results to fetch, starting at 1.
        required: false
        schema:
          type: integer
          minimum: 1.0
          title: Page
          description: Page number of the results to fetch, starting at 1.
          default: 1
        name: page
        in: query
      - description: The number of results per page (max 100).
        required: false
        schema:
          type: integer
          maximum: 100.0
          minimum: 1.0
          title: Per Page
          description: The number of results per page (max 100).
          default: 30
        name: per_page
        in: query
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ProjectRead'
                type: array
                title: Response List Projects V2 Projects Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
    post:
      tags:
      - Projects
      summary: Create Project
      description: Creates a new project under the active organization.
      operationId: create_project
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreate'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /v2/projects/{proj_id}:
    get:
      tags:
      - Projects
      summary: Get Project
      description: Gets a single project matching the given proj_id, if such project exists.
      operationId: get_project
      parameters:
      - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").'
        required: true
        schema:
          type: string
          title: Proj Id
          description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").'
        example: my_project
        name: proj_id
        in: path
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
    delete:
      tags:
      - Projects
      summary: Delete Project
      description: Deletes the project and all its related data.
      operationId: delete_project
      parameters:
      - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").'
        required: true
        schema:
          type: string
          title: Proj Id
          description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").'
        example: my_project
        name: proj_id
        in: path
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
    patch:
      tags:
      - Projects
      summary: Update Project
      description: Updates the project.
      operationId: update_project
      parameters:
      - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").'
        required: true
        schema:
          type: string
          title: Proj Id
          description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").'
        example: my_project
        name: proj_id
        in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdate'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    EnvironmentCreate:
      properties:
        key:
          type: string
          pattern: ^[A-Za-z0-9\-_]+$
          title: Key
          description: 'A URL-friendly name of the environment (i.e: slug). You will be able to query later using this key instead of the id (UUID) of the environment.'
        name:
          type: string
          title: Name
          description: The name of the environment
        description:
          type: string
          title: Description
          description: an optional longer description of the environment
        custom_branch_name:
          type: string
          title: Custom Branch Name
          description: when using gitops feature, an optional branch name for the environment
        jwks:
          allOf:
          - $ref: '#/components/schemas/JwksConfig'
          title: Jwks
          description: jwks for element frontend only login
        settings:
          type: object
          title: Settings
          description: the settings for this environment
      additionalProperties: false
      type: object
      required:
      - key
      - name
      title: EnvironmentCreate
    JwksConfig:
      properties:
        ttl:
          type: integer
          title: Ttl
          description: JWKS cache TTL (in seconds)
          default: 600
        url:
          type: string
          pattern: ^https://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$
          title: Url
          description: '...'
        jwks:
          allOf:
          - $ref: '#/components/schemas/JwksObj'
          title: Jwks
          description: '...'
      additionalProperties: false
      type: object
      title: JwksConfig
    ProjectUpdate:
      properties:
        name:
          type: string
          title: Name
          description: The name of the project
        description:
          type: string
          title: Description
          description: a longer description outlining the project objectives
        settings:
          type: object
          title: Settings
          description: the settings for this project
        active_policy_repo_id:
          type: string
          format: uuid
          title: Active Policy Repo Id
          description: the id of the policy repo to use for this project
      additionalProperties: false
      type: object
      title: ProjectUpdate
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ProjectCreate:
      properties:
        key:
          type: string
          pattern: ^[A-Za-z0-9\-_]+$
          title: Key
          description: 'A URL-friendly name of the project (i.e: slug). You will be able to query later using this key instead of the id (UUID) of the project.'
        urn_namespace:
          type: string
          pattern: '[a-z0-9-]{2,}'
          title: Urn Namespace
          description: Optional namespace for URNs. If empty, URNs will be generated from project key.
        name:
          type: string
          title: Name
          description: The name of the project
        description:
          type: string
          title: Description
          description: a longer description outlining the project objectives
        settings:
          type: object
          title: Settings
          description: the settings for this project
        active_policy_repo_id:
          type: string
          format: uuid
          title: Active Policy Repo Id
          description: the id of the policy repo to use for this project
        initial_environments:
          items:
            $ref: '#/components/schemas/EnvironmentCreate'
          type: array
          title: Initial Environments
          description: The initial environments to create for this project. By default, 'Development' and 'Production' are created, specify [] (empty list) to skip that.
          default:
          - key: dev
            name: Development
          - key: production
            name: Production
      additionalProperties: false
      type: object
      required:
      - key
      - name
      title: ProjectCreate
    JwksObj:
      properties:
        keys:
          items:
            type: object
          type: array
          title: Keys
          description: The keys to match against the request headers
      additionalProperties: false
      type: object
      required:
      - keys
      title: JwksObj
    ProjectRead:
      properties:
        key:
          type: string
          title: Key
          description: 'A URL-friendly name of the project (i.e: slug). You will be able to query later using this key instead of the id (UUID) of the project.'
        urn_namespace:
          type: string
          pattern: '[a-z0-9-]{2,}'
          title: Urn Namespace
          description: Optional namespace for URNs. If empty, URNs will be generated from project key.
        id:
          type: string
          format: uuid
          title: Id
          description: Unique id of the project
        organization_id:
          type: string
          format: uuid
          title: Organization Id
          description: Unique id of the organization that the project belongs to.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Date and time when the project was created (ISO_8601 format).
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: Date and time when the project was last updated/modified (ISO_8601 format).
        name:
          type: string
          title: Name
          description: The name of the project
        description:
          type: string
          title: Description
          description: a longer description outlining the project objectives
        settings:
          type: object
          title: Settings
          description: the settings for this project
        active_policy_repo_id:
          type: string
          format: uuid
          title: Active Policy Repo Id
          description: the id of the policy repo to use for this project
      additionalProperties: false
      type: object
      required:
      - key
      - id
      - organization_id
      - created_at
      - updated_at
      - name
      title: ProjectRead
  securitySchemes:
    HTTPBearer:
      type: http
      description: 'Authorization header, we support the bearer authentication scheme (see: RFC 6750)'
      scheme: bearer
      bearerFormat: JWT