Creavily Inquiries API

The Inquiries API from Creavily — 3 operation(s) for inquiries.

Operations 3

POST /v1/public/contact-requests Send a For teams inquiry from the public contact page #
GET /v1/platform/contact-requests Team inquiries, newest first #
POST /v1/platform/contact-requests/{requestId}/handled Mark a team inquiry handled, or open again #

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/creavily:creavily-inquiries-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

creavily-inquiries-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Creavily Public Inquiries API
  version: 0.1.0
  description: Public API surface for tenant-scoped brand discovery, asset reads, channel account discovery, analytics, publishing automation, OAuth token exchange, and automation source/run management.
servers:
- url: https://creavily-api.ecomwith.com
  description: Creavily Public API
tags:
- name: Inquiries
paths:
  /v1/public/contact-requests:
    post:
      tags:
      - Inquiries
      operationId: createContactRequest
      summary: Send a For teams inquiry from the public contact page
      description: No authentication. Rate-limited per IP. The request is stored, then emailed to support@creavily.com with Reply-To set to the sender when CREAVILY_ALLOW_EMAIL_SEND=true; with the gate off it is stored and still accepted. Only an id is returned. A filled `website` honeypot is accepted and dropped.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 120
                email:
                  type: string
                  maxLength: 254
                  format: email
                  pattern: ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                company:
                  type: string
                  minLength: 1
                  maxLength: 160
                teamSize:
                  type: string
                  enum:
                  - 1-5
                  - 6-20
                  - 21-50
                  - 51-200
                  - 201-plus
                monthlyPosts:
                  type: string
                  enum:
                  - under-1000
                  - 1000-5000
                  - 5000-20000
                  - 20000-plus
                  - not-sure
                message:
                  type: string
                  minLength: 1
                  maxLength: 4000
                locale:
                  default: en
                  type: string
                  enum:
                  - en
                  - zh
                website:
                  type: string
                  maxLength: 500
              required:
              - name
              - email
              - company
              - teamSize
              - monthlyPosts
              - message
              additionalProperties: false
      responses:
        '202':
          description: The inquiry was received.
          content:
            application/json:
              schema:
                type: object
                properties:
                  received:
                    type: boolean
                    const: true
                  requestId:
                    type: string
                    format: uuid
                    pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                required:
                - received
                - requestId
                additionalProperties: false
        '400':
          $ref: '#/components/responses/BadRequest'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /v1/platform/contact-requests:
    get:
      tags:
      - Inquiries
      operationId: listPlatformContactRequests
      summary: Team inquiries, newest first
      description: Platform admin console. Requires an admin of the internal Creavily workspace (CREAVILY_INTERNAL_ORGANIZATION_SLUG).
      security:
      - dashboardSessionCookie: []
      - dashboardSession: []
      parameters:
      - name: status
        in: query
        required: false
        schema:
          default: open
          type: string
          enum:
          - open
          - handled
          - all
      - name: limit
        in: query
        required: false
        schema:
          default: 25
          type: integer
          minimum: 1
          maximum: 100
      - name: offset
        in: query
        required: false
        schema:
          default: 0
          type: integer
          minimum: 0
          maximum: 100000
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  openTotal:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  limit:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  offset:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  requests:
                    type: array
                    items:
                      type: object
                      properties:
                        requestId:
                          type: string
                          format: uuid
                          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        name:
                          type: string
                        email:
                          type: string
                        company:
                          type: string
                        teamSize:
                          type: string
                          enum:
                          - 1-5
                          - 6-20
                          - 21-50
                          - 51-200
                          - 201-plus
                        monthlyPosts:
                          type: string
                          enum:
                          - under-1000
                          - 1000-5000
                          - 5000-20000
                          - 20000-plus
                          - not-sure
                        message:
                          type: string
                        locale:
                          type: string
                          enum:
                          - en
                          - zh
                        emailStatus:
                          type: string
                          enum:
                          - pending
                          - sent
                          - skipped
                          - failed
                        emailErrorCode:
                          type:
                          - string
                          - 'null'
                        emailedAt:
                          type:
                          - string
                          - 'null'
                        handledAt:
                          type:
                          - string
                          - 'null'
                        handledByUserId:
                          anyOf:
                          - type: string
                            format: uuid
                            pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                          - type: 'null'
                        createdAt:
                          type: string
                      required:
                      - requestId
                      - name
                      - email
                      - company
                      - teamSize
                      - monthlyPosts
                      - message
                      - locale
                      - emailStatus
                      - emailErrorCode
                      - emailedAt
                      - handledAt
                      - handledByUserId
                      - createdAt
                      additionalProperties: false
                required:
                - total
                - openTotal
                - limit
                - offset
                - requests
                additionalProperties: false
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v1/platform/contact-requests/{requestId}/handled:
    post:
      tags:
      - Inquiries
      operationId: setPlatformContactRequestHandled
      summary: Mark a team inquiry handled, or open again
      description: Platform admin console. Requires an admin of the internal Creavily workspace (CREAVILY_INTERNAL_ORGANIZATION_SLUG).
      security:
      - dashboardSessionCookie: []
      - dashboardSession: []
      parameters:
      - name: requestId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                handled:
                  type: boolean
              required:
              - handled
              additionalProperties: false
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request:
                    type: object
                    properties:
                      requestId:
                        type: string
                        format: uuid
                        pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                      name:
                        type: string
                      email:
                        type: string
                      company:
                        type: string
                      teamSize:
                        type: string
                        enum:
                        - 1-5
                        - 6-20
                        - 21-50
                        - 51-200
                        - 201-plus
                      monthlyPosts:
                        type: string
                        enum:
                        - under-1000
                        - 1000-5000
                        - 5000-20000
                        - 20000-plus
                        - not-sure
                      message:
                        type: string
                      locale:
                        type: string
                        enum:
                        - en
                        - zh
                      emailStatus:
                        type: string
                        enum:
                        - pending
                        - sent
                        - skipped
                        - failed
                      emailErrorCode:
                        type:
                        - string
                        - 'null'
                      emailedAt:
                        type:
                        - string
                        - 'null'
                      handledAt:
                        type:
                        - string
                        - 'null'
                      handledByUserId:
                        anyOf:
                        - type: string
                          format: uuid
                          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        - type: 'null'
                      createdAt:
                        type: string
                    required:
                    - requestId
                    - name
                    - email
                    - company
                    - teamSize
                    - monthlyPosts
                    - message
                    - locale
                    - emailStatus
                    - emailErrorCode
                    - emailedAt
                    - handledAt
                    - handledByUserId
                    - createdAt
                    additionalProperties: false
                required:
                - request
                additionalProperties: false
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    BadRequest:
      description: Invalid request or missing runtime configuration.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid bearer credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Public API rate limit exceeded.
      headers:
        RateLimit-Limit:
          description: Configured request limit for the current window.
          schema:
            type: integer
        RateLimit-Remaining:
          description: Requests remaining in the current window.
          schema:
            type: integer
        RateLimit-Reset:
          description: Seconds until the current window resets.
          schema:
            type: integer
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Requested public API resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Feature gate disabled or token missing required scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          minLength: 1
        message:
          type: string
          minLength: 1
        fields:
          type: array
          items:
            type: object
            properties:
              path:
                type: array
                items:
                  type: string
              source:
                type: string
                enum:
                - body
                - query
                - params
            required:
            - path
            additionalProperties: false
        requestId:
          type: string
          minLength: 1
      required:
      - error
      - message
      additionalProperties: {}
  securitySchemes:
    publicBearer:
      type: http
      scheme: bearer
      description: Use a Creavily API key or OAuth access token. Public endpoints are scoped to the authenticated principal organization.
    dashboardSession:
      type: http
      scheme: bearer
      description: Temporary legacy Dashboard session Bearer compatibility. New first-party browser clients use the HttpOnly dashboardSessionCookie and must never send a Dashboard bearer through a URL.
    dashboardSessionCookie:
      type: apiKey
      in: cookie
      name: creavily_dashboard_session
      description: Host-only HttpOnly Dashboard session cookie issued after the one-time browser-session exchange. Browser clients rely on credentialed requests and an approved Origin; JavaScript does not read this value.
    internalServiceToken:
      type: apiKey
      in: header
      name: x-creavily-internal-token
      description: Internal service credential for non-public operational routes. It is never exposed to browser or third-party clients.
    servicePrincipalToken:
      type: apiKey
      in: header
      name: x-creavily-service-principal-token
      description: Server-side service-principal credential accepted by policy-gated admin routes. It is never exposed to browser or third-party clients.
    browserSessionExchangeCookie:
      type: apiKey
      in: cookie
      name: creavily_browser_session_exchange
      description: Short-lived HttpOnly temporary cookie used only with POST /v1/auth/browser-session/exchange. It is cleared after a successful exchange or logout.
x-creavily-error-catalog:
  version: '2026-07-26'
  errors:
  - code: public_api_disabled
    status: 403
    category: feature_gate
    summary: Public API access is disabled by environment configuration.
  - code: request_origin_not_allowed
    status: 421
    category: authorization
    summary: The effective request origin is not permitted by the configured public API origin.
  - code: public_api_token_required
    status: 401
    category: authentication
    summary: A bearer token is required for the protected public route.
  - code: public_api_token_forbidden
    status: 401
    category: authentication
    summary: The supplied bearer credential is not authorized for the protected route.
  - code: public_api_rate_limited
    status: 429
    category: rate_limit
    summary: The public API or public OAuth token exchange rate limit was exceeded.
  - code: invalid_public_api_rate_limit_store
    status: 400
    category: configuration
    summary: The configured public API rate-limit store is unsupported.
  - code: database_url_required
    status: 400
    category: configuration
    summary: The route needs DATABASE_URL but it is not configured.
  - code: redis_url_required
    status: 400
    category: configuration
    summary: The route needs REDIS_URL but it is not configured.
  - code: invalid_request
    status: 400
    category: validation
    summary: A request did not satisfy the route validation contract.
  - code: internal_server_error
    status: 500
    category: server
    summary: The server could not process the request.
  - code: invalid_oauth_token_request
    status: 400
    category: validation
    summary: The OAuth token exchange request body is invalid.
  - code: invalid_public_oauth_authorize_request
    status: 400
    category: validation
    summary: The OAuth authorization request is invalid.
  - code: public_oauth_disabled
    status: 403
    category: feature_gate
    summary: Public OAuth authorize/token exchange is disabled.
  - code: invalid_client
    status: 401
    category: authentication
    summary: OAuth client credentials are invalid.
  - code: oauth_client_secret_unavailable
    status: 400
    category: configuration
    summary: The configured OAuth client secret reference cannot be resolved.
  - code: oauth_app_not_found
    status: 404
    category: not_found
    summary: The OAuth app was not found for the requested client or organization.
  - code: oauth_redirect_uri_not_registered
    status: 400
    category: validation
    summary: The OAuth redirect URI is not registered for the app.
  - code: oauth_authorization_write_failed
    status: 500
    category: server
    summary: The server could not persist an OAuth authorization grant.
  - code: oauth_authorization_code_write_failed
    status: 500
    category: server
    summary: The server could not persist an OAuth authorization code.
  - code: oauth_authorization_code_invalid
    status: 400
    category: validation
    summary: The OAuth authorization code is invalid, expired, consumed, or not valid for the client.
  - code: oauth_authorization_code_consumed
    status: 400
    category: conflict
    summary: The OAuth authorization code was already consumed.
  - code: oauth_refresh_token_invalid
    status: 400
    category: validation
    summary: The OAuth refresh token is invalid, expired, consumed, or not valid for the client.
  - code: oauth_refresh_token_consumed
    status: 400
    category: conflict
    summary: The OAuth refresh token was already consumed.
  - code: oauth_access_token_write_failed
    status: 500
    category: server
    summary: The server could not persist a newly issued OAuth access token.
  - code: oauth_refresh_token_write_failed
    status: 500
    category: server
    summary: The server could not persist a newly issued OAuth refresh token.
  - code: invalid_public_publish_plan_request
    status: 400
    category: validation
    summary: The public publish-plan preview request body is invalid.
  - code: invalid_public_publish_job_request
    status: 400
    category: validation
    summary: The public publish-job creation request body is invalid.
  - code: invalid_public_publish_job_query
    status: 400
    category: validation
    summary: The public publish-job query parameters are invalid.
  - code: public_publish_job_not_found
    status: 404
    category: not_found
    summary: The publish job was not found in the principal organization.
  - code: publish_plan_validation_failed
    status: 422
    category: validation
    summary: The publish plan has blocking platform validation issues.
  - code: publish_job_write_disabled
    status: 403
    category: feature_gate
    summary: Publish job persistence is disabled.
  - code: invalid_public_publish_enqueue_request
    status: 400
    category: validation
    summary: The public publish enqueue request is invalid.
  - code: invalid_public_analytics_snapshot_query
    status: 400
    category: validation
    summary: The public analytics snapshot query parameters are invalid.
  - code: invalid_public_brand_query
    status: 400
    category: validation
    summary: The public brand query parameters are invalid.
  - code: invalid_public_channel_account_query
    status: 400
    category: validation
    summary: The public channel account query parameters are invalid.
  - code: invalid_public_channel_connect_url_request
    status: 400
    category: validation
    summary: The public channel OAuth connect URL request is invalid.
  - code: channel_oauth_config_missing
    status: 400
    category: configuration
    summary: The server-side OAuth configuration for the platform is missing.
  - code: channel_oauth_redirect_uri_forbidden
    status: 400
    category: validation
    summary: The requested redirect URI does not match server configuration.
  - code: channel_oauth_config_invalid
    status: 400
    category: configuration
    summary: The server-side OAuth URL configuration is invalid.
  - code: invalid_public_media_upload_request
    status: 400
    category: validation
    summary: The public media upload request body or multipart fields are invalid.
  - code: invalid_multipart_media_upload
    status: 400
    category: validation
    summary: The media upload request is not multipart/form-data.
  - code: multipart_media_file_required
    status: 400
    category: validation
    summary: The multipart media upload did not include a non-empty file.
  - code: media_file_too_large
    status: 400
    category: validation
    summary: The uploaded media exceeds the configured maximum size.
  - code: media_upload_write_disabled
    status: 403
    category: feature_gate
    summary: Media upload persistence is disabled.
  - code: publish_enqueue_disabled
    status: 403
    category: feature_gate
    summary: Publish queue enqueueing is disabled.
  - code: invalid_public_publish_slot_query
    status: 400
    category: validation
    summary: The public publish slot query parameters are invalid.
  - code: invalid_public_publish_schedule_request
    status: 400
    category: validation
    summary: The public publish schedule request is invalid.
  - code: publish_schedule_write_disabled
    status: 403
    category: feature_gate
    summary: Publish schedule writes are disabled.
  - code: invalid_public_publish_cancel_request
    status: 400
    category: validation
    summary: The public publish cancel request is invalid.
  - code: publish_cancel_write_disabled
    status: 403
    category: feature_gate
    summary: Publish cancellation is disabled.
  - code: invalid_public_publish_url_reconciliation_request
    status: 400
    category: validation
    summary: The public publish URL reconciliation request is invalid.
  - code: invalid_public_comment_reply_draft_request
    status: 400
    category: validation
    summary: The public social comment reply draft request is invalid.
  - code: invalid_public_social_comment_reply_request
    status: 400
    category: validation
    summary: The public social comment reply request is invalid.
  - code: invalid_public_social_comment_reply_query
    status: 400
    category: validation
    summary: The public social comment reply query parameters are invalid.
  - code: provider_comment_reply_disabled
    status: 403
    category: feature_gate
    summary: Live provider comment replies are disabled.
  - code: social_comment_write_disabled
    status: 403
    category: feature_gate
    summary: Social comment persistence or external writes are disabled.
  - code: social_comment_not_found
    status: 404
    category: not_found
    summary: The social comment was not found in the principal organization.
  - code: provider_comment_reply_unsupported
    status: 422
    category: validation
    summary: The provider does not support replying to this social comment.
  - code: publish_url_reconciliation_disabled
    status: 403
    category: feature_gate
    summary: Live publish URL reconciliation writes are disabled.
  - code: invalid_public_webhook_endpoint_query
    status: 400
    category: validation
    summary: The public webhook endpoint query parameters are invalid.
  - code: invalid_public_webhook_endpoint_create_request
    status: 400
    category: validation
    summary: The public webhook endpoint creation request body is invalid.
  - code: invalid_public_webhook_endpoint_update_request
    status: 400
    category: validation
    summary: The public webhook endpoint update request body is invalid.
  - code: invalid_public_webhook_endpoint_delete_request
    status: 400
    category: validation
    summary: The public webhook endpoint delete request is invalid.
  - code: webhook_url_invalid
    status: 400
    category: validation
    summary: The webhook endpoint URL is not safe for outbound delivery.
  - code: webhook_write_disabled
    status: 403
    category: feature_gate
    summary: Webhook endpoint persistence is disabled.
  - code: webhook_endpoint_not_found
    status: 404
    category: not_found
    summary: The webhook endpoint was not found in the principal organization.
  - code: webhook_endpoint_create_failed
    status: 500
    category: server
    summary: The server could not persist a created webhook endpoint.
  - code: invalid_public_automation_source_query
    status: 400
    category: validation
    summary: The public automation source query parameters are invalid.
  - code: invalid_public_automation_source_create_request
    status: 400
    category: validation
    summary: The public automation source creation request body is invalid.
  - code: invalid_public_automation_source_update_request
    status: 400
    category: validation
    summary: The public automation source update request is invalid.
  - code: invalid_public_automation_source_delete_request
    status: 400
    category: validation
    summary: The public automation source delete request is invalid.
  - code: automation_write_disabled
    status: 403
    category: feature_gate
    summary: Automation write operations are disabled.
  - code: automation_source_create_failed
    status: 500
    category: server
    summary: The server could not persist a created automation source.
  - code: automation_source_not_found
    status: 404
    category: not_found
    summary: The automation source was not found in the principal organization.
  - code: invalid_public_automation_run_query
    status: 400
    category: validation
    summary: The public automation run query parameters are invalid.
  - code: invalid_public_automation_run_create_request
    status: 400
    category: validation
    summary: The public automation run creation request is invalid.
  - code: invalid_public_automation_run_record_request
    status: 400
    category: validation
    summary: The public automation run status update request is invalid.
  - code: automation_source_not_runnable
    status: 404
    category: not_found
    summary: The automation source was not found, disabled, or deleted in the principal organization.
  - code: automation_run_not_found
    status: 404
    category: not_found
    summary: The automation run was not found in the principal organization.
  - code: automation_run_invalid_transition
    status: 409
    category: conflict
    summary: The automation run cannot move from its current state to the requested state.
x-creavily-dashboard-permission-policies:
- id: workspace.brands.initialize
  label: Initialize the first workspace brand
  description: Create the first brand in an authorized workspace without changing existing brands or enabling provider actions.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: workspace.brands.create
  label: Create workspace brands
  description: Create additional brand context in a workspace without changing existing brands or enabling provider actions.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: publishing.drafts.manage
  label: Manage private Create drafts
  description: Read, save, and delete the signed-in member's private brand-scoped Create draft.
  minimumRole: member
  servicePrincipalAllowed: false
- id: billing.subscription.read
  label: Read workspace billing
  description: Read the workspace plan, subscription status, plan limits, and current usage.
  minimumRole: member
  servicePrincipalAllowed: false
- id: billing.subscription.manage
  label: Manage workspace billing
  description: Start Stripe Checkout for a plan, open the Stripe Customer Portal and redeem a plan code for the workspace.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: developer.api_keys.manage
  label: Manage developer API keys
  description: Create, list, and revoke organization-scoped public API keys.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: developer.oauth_apps.manage
  label: Manage OAuth apps
  description: Create, list, update, and revoke organization-scoped OAuth developer apps.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: developer.oauth_grants.manage
  label: Manage OAuth grants
  description: Create, list, exchange, and revoke organization-scoped OAuth authorization grants.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: developer.oauth_tokens.exchange
  label: Exchange developer OAuth tokens
  description: Use the dashboard-only OAuth token exchange helper for development and support.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: publishing.jobs.read
  label: Read publish jobs
  description: List organization-scoped publish jobs, queue status, and target status for the dashboard queue view.
  minimumRole: member
  servicePrincipalAllowed: false
- id: publishing.attention.manage
  label: Clear publishing attention
  description: Clear publish jobs from Needs attention with an optional reason, and restore them. Changes no publish state.
  minimumRole: member
  servicePrincipalAllowed: false
- id: publishing.batches.manage
  label: Manage publish batches
  description: Preview and apply product-diversified batch rebalance operations for dashboard scheduling.
  minimumRole: admin
  servicePrincipalAllowed: false
- id: publishing.queue.reconcile
  label: Reconcile publish queue
  description: Inspect and optionally remove non-active queued publish jobs for an organization.
  minimumRole: admin
  servicePrincipalAllowed: false


# --- truncated at 32 KB (38 KB total) ---
# Full source: https://artifacts.apis.io/creavily/openapi/creavily-inquiries-api-openapi.yml