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

# Create a service

> Creates one sellable API capability for a seller.



## OpenAPI

````yaml https://api.zeroclick.io/openapi.json post /v1/services/
openapi: 3.0.0
info:
  title: ZeroClick API
  description: >-
    REST API for managing ZeroClick sellers, services, pricing, usage, and
    analytics. Authenticate with an API key from the ZeroClick dashboard.
  version: 1.0.0
servers:
  - url: https://api.zeroclick.io
security:
  - bearerAuth: []
tags:
  - name: API keys
  - name: Sellers
  - name: Services
  - name: Meters
  - name: Plans
  - name: Plan meter prices
  - name: Usage
  - name: Analytics
  - name: Stripe Connect
  - name: Sandbox
  - name: Organizations
  - name: Users
paths:
  /v1/services/:
    post:
      tags:
        - Services
      summary: Create a service
      description: Creates one sellable API capability for a seller.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                sellerId:
                  type: string
                  minLength: 1
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                  pattern: ^[^<>\p{Cc}]*$
                slug:
                  type: string
                  minLength: 1
                  maxLength: 80
                  pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
                description:
                  type: string
                  maxLength: 2000
                icon:
                  nullable: true
                  type: string
                  maxLength: 500
                  pattern: ^(?:[a-z0-9-]+|https:\/\/\S+)$
              required:
                - sellerId
                - name
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  service:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      slug:
                        type: string
                      description:
                        nullable: true
                        type: string
                      icon:
                        nullable: true
                        type: string
                    required:
                      - id
                      - name
                      - slug
                      - description
                      - icon
                    additionalProperties: false
                required:
                  - service
                additionalProperties: false
        '403':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                      - organization_required
                      - organization_permission_required
                      - seller_not_found
                      - service_not_found
                      - meter_not_found
                      - plan_not_found
                      - plan_meter_price_not_found
                      - duplicate_slug
                      - duplicate_key
                      - duplicate_plan_meter_price
                      - signing_secret_not_found
                      - insufficient_scope
                      - payg_price_not_whole_cents
                      - custom_domain_skip_unavailable
                      - active_stateful_accounts_exist
                required:
                  - error
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                      - organization_required
                      - organization_permission_required
                      - seller_not_found
                      - service_not_found
                      - meter_not_found
                      - plan_not_found
                      - plan_meter_price_not_found
                      - duplicate_slug
                      - duplicate_key
                      - duplicate_plan_meter_price
                      - signing_secret_not_found
                      - insufficient_scope
                      - payg_price_not_whole_cents
                      - custom_domain_skip_unavailable
                      - active_stateful_accounts_exist
                required:
                  - error
                additionalProperties: false
        '409':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                      - organization_required
                      - organization_permission_required
                      - seller_not_found
                      - service_not_found
                      - meter_not_found
                      - plan_not_found
                      - plan_meter_price_not_found
                      - duplicate_slug
                      - duplicate_key
                      - duplicate_plan_meter_price
                      - signing_secret_not_found
                      - insufficient_scope
                      - payg_price_not_whole_cents
                      - custom_domain_skip_unavailable
                      - active_stateful_accounts_exist
                required:
                  - error
                additionalProperties: false
        '422':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                      - organization_required
                      - organization_permission_required
                      - seller_not_found
                      - service_not_found
                      - meter_not_found
                      - plan_not_found
                      - plan_meter_price_not_found
                      - duplicate_slug
                      - duplicate_key
                      - duplicate_plan_meter_price
                      - signing_secret_not_found
                      - insufficient_scope
                      - payg_price_not_whole_cents
                      - custom_domain_skip_unavailable
                      - active_stateful_accounts_exist
                required:
                  - error
                additionalProperties: false
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key created in the ZeroClick dashboard under Settings → API keys.
        Keys start with `zc_`. Send them as `Authorization: Bearer zc_...`.

````