Coppica Clients API

Client records the key can access.

GitHub OpenAPI

Operations 4

GET /clients List accessible clients #
POST /clients Create a client #
GET /clients/{clientId} Client detail + intake summary #
PATCH /clients/{clientId} Update intake fields #

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/coppica-com:coppica-com-clients-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

coppica-com-clients-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Coppica Com Clients API
  version: v1-alpha
  description: 'Operations tagged Clients across 2 of this provider''s published API definitions: coppica-com-openapi.json, coppica-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://coppica.com/api/v1
security:
- bearerAuth: []
tags:
- name: Clients
  description: Client records the key can access.
paths:
  /clients:
    get:
      tags:
      - Clients
      summary: List accessible clients
      responses:
        '200':
          description: Clients the key can access.
          content:
            application/json:
              schema:
                type: object
                properties:
                  clients:
                    type: array
                    items:
                      $ref: '#/components/schemas/Client'
                required:
                - clients
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: getClients
      x-operation-id-source: derived
    post:
      tags:
      - Clients
      summary: Create a client
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                business_name:
                  type: string
                contact_name:
                  type: string
                email:
                  type: string
                website:
                  type: string
              required:
              - business_name
      responses:
        '201':
          description: Created client.
          content:
            application/json:
              schema:
                type: object
                properties:
                  client:
                    $ref: '#/components/schemas/Client'
                required:
                - client
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: postClients
      x-operation-id-source: derived
    servers:
    - url: https://coppica.com/api/v1
  /clients/{clientId}:
    get:
      tags:
      - Clients
      summary: Client detail + intake summary
      parameters:
      - name: clientId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The client, with its permission level and intake.
          content:
            application/json:
              schema:
                type: object
                properties:
                  client:
                    $ref: '#/components/schemas/Client'
                required:
                - client
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: getClientsByClientId
      x-operation-id-source: derived
    patch:
      tags:
      - Clients
      summary: Update intake fields
      description: 'Updates an EXISTING intake form. Returns 404 if the client has not completed in-app intake. Body: { source, intake: { : } }.'
      parameters:
      - name: clientId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                source:
                  type: string
                intake:
                  type: object
                  additionalProperties: true
              required:
              - source
              - intake
      responses:
        '200':
          description: Updated client.
          content:
            application/json:
              schema:
                type: object
                properties:
                  client:
                    $ref: '#/components/schemas/Client'
                required:
                - client
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: patchClientsByClientId
      x-operation-id-source: derived
    servers:
    - url: https://coppica.com/api/v1
components:
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found (also returned when access is denied).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait before retrying.
        RateLimit-Limit:
          schema:
            type: integer
          description: Max requests in the window.
        RateLimit-Remaining:
          schema:
            type: integer
          description: Requests left in the window.
        RateLimit-Reset:
          schema:
            type: integer
          description: Seconds until the window resets.
      content:
        application/json:
          schema:
            type: object
            description: The 429 body carries code plus a message and retryAfterMs.
            properties:
              error:
                type: string
              code:
                type: string
                const: rate_limited
              message:
                type: string
              retryAfterMs:
                type: integer
            required:
            - error
            - code
    Forbidden:
      description: Wrong scope, client access denied, or spending cap exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      description: Standard error envelope. Branch on `code`, never the human `error` string.
      properties:
        error:
          type: string
          description: Human-readable, sanitized message.
        code:
          type: string
          description: Stable machine-readable code.
          examples:
          - invalid_request
          - invalid_client_id
          - missing_authorization
          - invalid_api_key
          - missing_scope
          - client_access_denied
          - spending_cap_exceeded
          - not_found
          - rate_limited
          - server_error
      required:
      - error
      - code
    Client:
      type: object
      description: A client record. Includes permission + intake on the detail endpoint.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        status:
          type: string
        permission:
          type: string
          description: Caller’s permission level (detail endpoint only).
        intake:
          type:
          - object
          - 'null'
          additionalProperties: true
      required:
      - id
      additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'A Coppica API key, e.g. `Authorization: Bearer cpk_...`. Keys carry read/write/execute scopes.'
x-refined-from:
- coppica-com-openapi.json
- coppica-com-openapi.yml