CHNLSYNC Customer Bills API

The customer-bills API from CHNLSYNC — 7 operation(s) for customer-bills.

GitHub OpenAPI

Operations 9

GET /api/v1/customer/bills Get Bills #
POST /api/v1/customer/bills Post Bill #
POST /api/v1/customer/bills/from-artifact Post Bill From Artifact #
GET /api/v1/customer/bills/{bill_id} Get Bill #
PATCH /api/v1/customer/bills/{bill_id} Patch Bill #
PATCH /api/v1/customer/bills/{bill_id}/lines/{line_id} Patch Bill Line #
POST /api/v1/customer/bills/{bill_id}/confirm Confirm Bill #
POST /api/v1/customer/bills/findings/{finding_id}/dismiss Dismiss Finding #
POST /api/v1/customer/bills/findings/{finding_id}/dispute Dispute Finding #

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/chnlsync-com:chnlsync-com-customer-bills-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

chnlsync-com-customer-bills-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chnlsync Com Customer Bills API
  version: 0.1.0
  x-refined-note:
  - x-source differs across the merged source definitions and was not carried
  description: 'Operations tagged customer-bills across 2 of this provider''s published API definitions: chnlsync-com-openapi.json, chnlsync-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.chnlsync.dev
  description: CHNLSYNC API host advertised in https://chnlsync.com/llms.txt (servers[] absent in the served spec; added here)
tags:
- name: customer-bills
paths:
  /api/v1/customer/bills:
    get:
      tags:
      - customer-bills
      summary: Get Bills
      description: The caller's bills with open-finding counts.
      operationId: get_bills_api_v1_customer_bills_get
      security:
      - APIKeyHeader: []
      parameters:
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillListRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - customer-bills
      summary: Post Bill
      description: Add a typed bill; it is checked right away.
      operationId: post_bill_api_v1_customer_bills_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/customer/bills/from-artifact:
    post:
      tags:
      - customer-bills
      summary: Post Bill From Artifact
      description: Read a draft bill from one of the caller's own documents.
      operationId: post_bill_from_artifact_api_v1_customer_bills_from_artifact_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillFromArtifact'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/customer/bills/{bill_id}:
    get:
      tags:
      - customer-bills
      summary: Get Bill
      description: One bill with its lines and findings.
      operationId: get_bill_api_v1_customer_bills__bill_id__get
      security:
      - APIKeyHeader: []
      parameters:
      - name: bill_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Bill Id
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - customer-bills
      summary: Patch Bill
      description: Correct the header or link the service; a confirmed bill is checked again.
      operationId: patch_bill_api_v1_customer_bills__bill_id__patch
      security:
      - APIKeyHeader: []
      parameters:
      - name: bill_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Bill Id
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/customer/bills/{bill_id}/lines/{line_id}:
    patch:
      tags:
      - customer-bills
      summary: Patch Bill Line
      description: Fix one line; a confirmed bill is checked again.
      operationId: patch_bill_line_api_v1_customer_bills__bill_id__lines__line_id__patch
      security:
      - APIKeyHeader: []
      parameters:
      - name: bill_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Bill Id
      - name: line_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Line Id
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillLineUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/customer/bills/{bill_id}/confirm:
    post:
      tags:
      - customer-bills
      summary: Confirm Bill
      description: Confirm a draft read from a document, then check it.
      operationId: confirm_bill_api_v1_customer_bills__bill_id__confirm_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: bill_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Bill Id
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/customer/bills/findings/{finding_id}/dismiss:
    post:
      tags:
      - customer-bills
      summary: Dismiss Finding
      description: Mark a finding as fine.
      operationId: dismiss_finding_api_v1_customer_bills_findings__finding_id__dismiss_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: finding_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Finding Id
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillRead'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/customer/bills/findings/{finding_id}/dispute:
    post:
      tags:
      - customer-bills
      summary: Dispute Finding
      description: 'Ask CHNLSYNC to dispute a finding with the provider (opens a billing request).


        Operators are paged only when this call opened the ticket; a repeat returns

        the existing one without paging again.'
      operationId: dispute_finding_api_v1_customer_bills_findings__finding_id__dispute_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: finding_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Finding Id
      - name: X-Sync2-Member
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member
      - name: X-Sync2-Member-Email
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Member-Email
      - name: X-Sync2-Company
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Sync2-Company
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisputeResult'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    BillSummaryRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        provider:
          type: string
          title: Provider
        invoice_date:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Invoice Date
        total:
          anyOf:
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          - type: 'null'
          title: Total
        status:
          type: string
          enum:
          - draft
          - confirmed
          title: Status
        open_findings:
          type: integer
          title: Open Findings
        high_findings:
          type: integer
          title: High Findings
      type: object
      required:
      - id
      - provider
      - invoice_date
      - total
      - status
      - open_findings
      - high_findings
      title: BillSummaryRead
      description: A bill row in the list.
    BillUpdate:
      properties:
        provider:
          anyOf:
          - type: string
            maxLength: 120
            minLength: 1
          - type: 'null'
          title: Provider
        account_number:
          anyOf:
          - type: string
            maxLength: 80
          - type: 'null'
          title: Account Number
        invoice_date:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Invoice Date
        period_start:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Period Start
        period_end:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Period End
        total:
          anyOf:
          - type: number
            maximum: 100000000.0
            minimum: 0.0
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          - type: 'null'
          title: Total
        service_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Service Line Id
          description: The inventory line this bill is for; unlinked lines follow.
      additionalProperties: false
      type: object
      title: BillUpdate
      description: Correct only the header fields sent; linking a service also names the provider.
    BillLineInput:
      properties:
        label:
          type: string
          maxLength: 160
          minLength: 1
          title: Label
        kind:
          type: string
          enum:
          - recurring
          - one_time
          - usage
          - tax_fee
          - credit
          - other
          title: Kind
          default: recurring
        amount:
          anyOf:
          - type: number
            maximum: 10000000.0
            minimum: -10000000.0
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          title: Amount
        quantity:
          anyOf:
          - type: integer
            maximum: 100000.0
            minimum: 1.0
          - type: 'null'
          title: Quantity
        service_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Service Line Id
        page_ref:
          anyOf:
          - type: integer
            maximum: 500.0
            minimum: 1.0
          - type: 'null'
          title: Page Ref
      additionalProperties: false
      type: object
      required:
      - label
      - amount
      title: BillLineInput
      description: One charge on a bill.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    BillFromArtifact:
      properties:
        artifact_id:
          type: string
          format: uuid
          title: Artifact Id
        service_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Service Line Id
      additionalProperties: false
      type: object
      required:
      - artifact_id
      title: BillFromArtifact
      description: Read a bill from one of the buyer's own uploaded documents (as a draft).
    DisputeResult:
      properties:
        finding:
          $ref: '#/components/schemas/BillFindingRead'
        ticket_id:
          type: string
          format: uuid
          title: Ticket Id
        created:
          type: boolean
          title: Created
          description: True only when this call opened the ticket.
      type: object
      required:
      - finding
      - ticket_id
      - created
      title: DisputeResult
      description: A finding turned into a billing request CHNLSYNC works.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    BillLineRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        label:
          type: string
          title: Label
        kind:
          type: string
          enum:
          - recurring
          - one_time
          - usage
          - tax_fee
          - credit
          - other
          title: Kind
        amount:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
        quantity:
          anyOf:
          - type: integer
          - type: 'null'
          title: Quantity
        service_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Service Line Id
        service_provider:
          anyOf:
          - type: string
          - type: 'null'
          title: Service Provider
        page_ref:
          anyOf:
          - type: integer
          - type: 'null'
          title: Page Ref
        confidence:
          anyOf:
          - type: number
          - type: 'null'
          title: Confidence
      type: object
      required:
      - id
      - label
      - kind
      - amount
      - quantity
      - service_line_id
      - service_provider
      - page_ref
      - confidence
      title: BillLineRead
      description: One charge as the buyer sees it.
    BillFindingRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          type: string
          enum:
          - above_contract
          - after_disconnect
          - closed_site
          - out_of_contract
          - duplicate_line
          - fee_jump
          - total_jump
          - copper_line
          title: Kind
        label:
          type: string
          title: Label
        severity:
          type: string
          enum:
          - info
          - warn
          - high
          title: Severity
        status:
          type: string
          enum:
          - open
          - dismissed
          - disputed
          title: Status
        amount:
          anyOf:
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          - type: 'null'
          title: Amount
        detail:
          type: string
          title: Detail
        bill_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Bill Line Id
        line_label:
          anyOf:
          - type: string
          - type: 'null'
          title: Line Label
        ticket_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Ticket Id
      type: object
      required:
      - id
      - kind
      - label
      - severity
      - status
      - amount
      - detail
      - bill_line_id
      - line_label
      - ticket_id
      title: BillFindingRead
      description: One finding, citing the line it is about.
    BillListRead:
      properties:
        open_findings:
          type: integer
          title: Open Findings
        bills:
          items:
            $ref: '#/components/schemas/BillSummaryRead'
          type: array
          title: Bills
      type: object
      required:
      - open_findings
      - bills
      title: BillListRead
      description: The buyer's bills, newest first.
    BillInput:
      properties:
        provider:
          type: string
          maxLength: 120
          minLength: 1
          title: Provider
        account_number:
          anyOf:
          - type: string
            maxLength: 80
          - type: 'null'
          title: Account Number
        invoice_date:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Invoice Date
        period_start:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Period Start
        period_end:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Period End
        total:
          anyOf:
          - type: number
            maximum: 100000000.0
            minimum: 0.0
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          - type: 'null'
          title: Total
        service_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Service Line Id
          description: Default inventory line for lines that don't name one.
        lines:
          items:
            $ref: '#/components/schemas/BillLineInput'
          type: array
          maxItems: 200
          title: Lines
      additionalProperties: false
      type: object
      required:
      - provider
      title: BillInput
      description: A bill the buyer types in (counts as confirmed by them).
    BillRead:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        provider:
          type: string
          title: Provider
        account_number:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Number
        invoice_date:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Invoice Date
        period_start:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Period Start
        period_end:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          title: Period End
        total:
          anyOf:
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          - type: 'null'
          title: Total
        lines_total:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Lines Total
        currency:
          type: string
          title: Currency
        status:
          type: string
          enum:
          - draft
          - confirmed
          title: Status
        source:
          type: string
          enum:
          - manual
          - buyer_document
          - operator
          title: Source
        source_artifact_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Source Artifact Id
        service_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Service Line Id
        confirmed_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Confirmed At
        checked_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Checked At
        created_at:
          type: string
          format: date-time
          title: Created At
        lines:
          items:
            $ref: '#/components/schemas/BillLineRead'
          type: array
          title: Lines
        findings:
          items:
            $ref: '#/components/schemas/BillFindingRead'
          type: array
          title: Findings
      type: object
      required:
      - id
      - provider
      - account_number
      - invoice_date
      - period_start
      - period_end
      - total
      - lines_total
      - currency
      - status
      - source
      - source_artifact_id
      - service_line_id
      - confirmed_at
      - checked_at
      - created_at
      - lines
      - findings
      title: BillRead
      description: A bill with its lines and findings.
    BillLineUpdate:
      properties:
        label:
          anyOf:
          - type: string
            maxLength: 160
            minLength: 1
          - type: 'null'
          title: Label
        kind:
          anyOf:
          - type: string
            enum:
            - recurring
            - one_time
            - usage
            - tax_fee
            - credit
            - other
          - type: 'null'
          title: Kind
        amount:
          anyOf:
          - type: number
            maximum: 10000000.0
            minimum: -10000000.0
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
          - type: 'null'
          title: Amount
        quantity:
          anyOf:
          - type: integer
            maximum: 100000.0
            minimum: 1.0
          - type: 'null'
          title: Quantity
        service_line_id:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Service Line Id
      additionalProperties: false
      type: object
      title: BillLineUpdate
      description: Change only the fields sent on one bill line.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-Agent-API-Key
x-refined-from:
- chnlsync-com-openapi.json
- chnlsync-com-openapi.yml