Pavoot Photographers API

The Photographers API from Pavoot — 5 operation(s) for photographers.

Operations 5

POST /photographers/revokeAccess Revoke Photographer Access Endpoint #
POST /photographers/restoreAccess Restore Photographer Access Endpoint #
DELETE /photographers Delete Photographer Completely Endpoint #
POST /photographers/merge/preview Preview Photographer Merge Endpoint #
POST /photographers/merge Merge Photographers Endpoint #

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/pavoot-photographers-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 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

pavoot-photographers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fast Photographers API
  version: 0.1.0
tags:
- name: Photographers
paths:
  /photographers/revokeAccess:
    post:
      summary: Revoke Photographer Access Endpoint
      description: 'Stop a photographer signing in, while keeping every image credited to them.


        Deliberately NOT a delete: images.photographer_id points at this row, so removing it would

        orphan their work or force reassigning it to someone else. See

        auxiliary/user_operations.revoke_photographer_access.'
      operationId: revoke_photographer_access_endpoint_photographers_revokeAccess_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhotographerAccessRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Photographers
  /photographers/restoreAccess:
    post:
      summary: Restore Photographer Access Endpoint
      description: 'Clear the revoked flag so the normal Invite flow can issue them a fresh login.


        The old Clerk account is gone for good; this only makes the row invitable again.'
      operationId: restore_photographer_access_endpoint_photographers_restoreAccess_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhotographerAccessRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Photographers
  /photographers:
    delete:
      summary: Delete Photographer Completely Endpoint
      description: 'Delete a photographer from the database and Clerk. Refused if they own any images.


        409 with an explanation when they have images, pointing at revokeAccess (keeps attribution)

        or merge (moves it deliberately) instead.'
      operationId: delete_photographer_completely_endpoint_photographers_delete
      parameters:
      - name: photographerId
        in: query
        required: true
        schema:
          type: string
          title: Photographerid
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Photographers
  /photographers/merge/preview:
    post:
      summary: Preview Photographer Merge Endpoint
      description: 'Dry run: what a merge would move, so the UI can state it before the user commits.'
      operationId: preview_photographer_merge_endpoint_photographers_merge_preview_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergePhotographersRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Photographers
  /photographers/merge:
    post:
      summary: Merge Photographers Endpoint
      description: 'Fold duplicate photographer records into one.


        The same person routinely appears twice — imported by a migration as a name-only record

        that owns their historical images, then again as a real account once they sign in. The

        records look identical but share nothing, so locking one leaves the other''s images

        shareable. See auxiliary/user_operations.merge_photographers.'
      operationId: merge_photographers_endpoint_photographers_merge_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergePhotographersRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Photographers
components:
  schemas:
    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
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    MergePhotographersRequest:
      properties:
        targetId:
          type: string
          title: Targetid
        sourceIds:
          items:
            type: string
          type: array
          title: Sourceids
        keepEmail:
          anyOf:
          - type: string
          - type: 'null'
          title: Keepemail
      type: object
      required:
      - targetId
      - sourceIds
      title: MergePhotographersRequest
    PhotographerAccessRequest:
      properties:
        photographerId:
          type: string
          title: Photographerid
      type: object
      required:
      - photographerId
      title: PhotographerAccessRequest