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

# Create CSV Enrichment Job

> Submit companies for enrichment. Each company must include at least one identifier: company name, website URL/domain, or LinkedIn URL. The endpoint costs 1 credit per accepted job. Add wait=true for small lists to return completed results inline when processing finishes within timeout seconds.



## OpenAPI

````yaml POST /csv-enrichment
openapi: 3.1.0
info:
  title: CSV Enrichment API
  description: >-
    Submit company lists for enrichment with funding, acquisition, hiring, job
    change, and investor intelligence. Create an asynchronous job, optionally
    wait for small jobs, then retrieve status and paginated results.
  license:
    name: MIT
  version: 2.1.0
servers:
  - url: https://www.trysignalbase.com/api/v2
security:
  - bearerAuth: []
paths:
  /csv-enrichment:
    post:
      summary: Create CSV Enrichment Job
      description: >-
        Submit companies for enrichment. Each company must include at least one
        identifier: company name, website URL/domain, or LinkedIn URL. The
        endpoint costs 1 credit per accepted job. Add wait=true for small lists
        to return completed results inline when processing finishes within
        timeout seconds.
      operationId: createCSVEnrichmentJob
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CSVEnrichmentRequest'
            example:
              fileName: target-accounts.csv
              wait: true
              timeout: 30
              companies:
                - company_name: Mollie
                  website_url: mollie.com
                  external_id: acct_123
      responses:
        '200':
          description: >-
            Enrichment job accepted. If wait=true and processing completed, data
            also includes status, summary, and results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CSVEnrichmentCreateResponse'
              examples:
                accepted:
                  summary: Asynchronous job accepted
                  value:
                    success: true
                    data:
                      jobId: 7f4b7a34-8d65-4cc3-8ab0-3477f8a967a6
                      detectedMapping:
                        companyName: company_name
                        websiteUrl: website_url
                        linkedinUrl: linkedin_url
                    meta:
                      endpoint: csv.enrichment
                      creditsUsed: 1
                      creditsRemaining: 999
                waitCompleted:
                  summary: wait=true completed within timeout
                  value:
                    success: true
                    data:
                      jobId: 7f4b7a34-8d65-4cc3-8ab0-3477f8a967a6
                      detectedMapping:
                        companyName: company_name
                        websiteUrl: website_url
                        linkedinUrl: null
                      status: completed
                      progress:
                        processed: 1
                        total: 1
                      submittedAt: '2026-05-12T07:25:42.000Z'
                      completedAt: '2026-05-12T07:26:01.000Z'
                      summary:
                        totalInputs: 1
                        matched: 1
                        unmatched: 0
                        withFundingSignals: 0
                        withAcquisitionSignals: 0
                        withHiringSignals: 1
                        withJobChangeSignals: 0
                      results:
                        - input:
                            company_name: Mollie
                            website_url: mollie.com
                          matched: true
                          companyId: c5ff2e53-0c99-4b6a-964e-63c2fc7e2a8e
                          company:
                            name: Mollie
                            domain: mollie.com
                            industry: Financial Services
                            country: NL
                            employeeCount: 850
                          signals:
                            funding: []
                            acquisition: []
                            hiring: []
                            job_change: []
                            investors: []
                      nextCursor: null
                    meta:
                      endpoint: csv.enrichment
                      creditsUsed: 1
                      creditsRemaining: 999
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/InsufficientCredits'
        '403':
          $ref: '#/components/responses/SubscriptionExpired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    CSVEnrichmentRequest:
      type: object
      required:
        - companies
      properties:
        fileName:
          type: string
          description: >-
            Optional label stored on the enrichment job. Defaults to
            api-companies.json.
          maxLength: 500
          example: target-accounts.csv
        wait:
          type: boolean
          description: >-
            If true, wait up to timeout seconds and return completed results
            inline when available.
          default: false
        timeout:
          type: integer
          description: Maximum wait time in seconds when wait=true.
          minimum: 1
          maximum: 30
          default: 30
        companies:
          type: array
          description: Companies to enrich. Maximum 1,000 companies per request.
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/CompanyEnrichmentInput'
    CSVEnrichmentCreateResponse:
      type: object
      required:
        - success
        - data
        - meta
      properties:
        success:
          type: boolean
          const: true
        data:
          oneOf:
            - $ref: '#/components/schemas/CSVEnrichmentCreatedJob'
            - $ref: '#/components/schemas/CSVEnrichmentJobWithMapping'
        meta:
          $ref: '#/components/schemas/CreateMeta'
    CompanyEnrichmentInput:
      type: object
      description: >-
        Company input. Include at least one of company_name, website_url, or
        linkedin_url. Additional fields are preserved on the enrichment row.
      additionalProperties: true
      properties:
        company_name:
          type: string
          description: Company name
          example: Mollie
        companyName:
          type: string
          description: Alias for company_name
        name:
          type: string
          description: Alias for company_name
        website_url:
          type: string
          description: Company website URL or domain
          example: mollie.com
        websiteUrl:
          type: string
          description: Alias for website_url
        website:
          type: string
          description: Alias for website_url
        domain:
          type: string
          description: Alias for website_url
        linkedin_url:
          type: string
          description: Company LinkedIn URL
        linkedinUrl:
          type: string
          description: Alias for linkedin_url
        linkedin:
          type: string
          description: Alias for linkedin_url
        company_linkedin_url:
          type: string
          description: Alias for linkedin_url
    CSVEnrichmentCreatedJob:
      type: object
      required:
        - jobId
        - detectedMapping
      properties:
        jobId:
          type: string
          format: uuid
        detectedMapping:
          $ref: '#/components/schemas/DetectedMapping'
    CSVEnrichmentJobWithMapping:
      allOf:
        - $ref: '#/components/schemas/CSVEnrichmentJob'
        - type: object
          required:
            - detectedMapping
          properties:
            detectedMapping:
              $ref: '#/components/schemas/DetectedMapping'
    CreateMeta:
      type: object
      required:
        - endpoint
        - creditsUsed
      properties:
        endpoint:
          type: string
          const: csv.enrichment
        creditsUsed:
          type: integer
          const: 1
        creditsRemaining:
          type: integer
          minimum: 0
    ErrorResponse:
      type: object
      required:
        - success
        - error
        - code
      properties:
        success:
          type: boolean
          const: false
        error:
          type: string
        code:
          type: string
          enum:
            - invalid_company_payload
            - invalid_api_key
            - subscription_expired
            - insufficient_credits
            - rate_limited
            - job_not_found
            - job_expired
            - match_engine_unavailable
        retryAfter:
          type: integer
          description: Seconds until retry is recommended, present on rate limit responses.
    DetectedMapping:
      type: object
      required:
        - companyName
        - websiteUrl
        - linkedinUrl
      properties:
        companyName:
          type:
            - string
            - 'null'
        websiteUrl:
          type:
            - string
            - 'null'
        linkedinUrl:
          type:
            - string
            - 'null'
    CSVEnrichmentJob:
      type: object
      required:
        - jobId
        - status
        - progress
        - submittedAt
        - completedAt
        - summary
        - results
        - nextCursor
      properties:
        jobId:
          type: string
          format: uuid
        status:
          $ref: '#/components/schemas/CSVEnrichmentStatus'
        progress:
          $ref: '#/components/schemas/Progress'
        submittedAt:
          type: string
          format: date-time
        completedAt:
          type:
            - string
            - 'null'
          format: date-time
        summary:
          $ref: '#/components/schemas/Summary'
        results:
          type: array
          items:
            $ref: '#/components/schemas/EnrichmentResult'
        nextCursor:
          type:
            - string
            - 'null'
        error:
          $ref: '#/components/schemas/JobError'
    CSVEnrichmentStatus:
      type: string
      enum:
        - pending
        - running
        - completed
        - failed
    Progress:
      type: object
      required:
        - processed
        - total
      properties:
        processed:
          type: integer
          minimum: 0
        total:
          type: integer
          minimum: 0
    Summary:
      type: object
      required:
        - totalInputs
        - matched
        - unmatched
        - withFundingSignals
        - withAcquisitionSignals
        - withHiringSignals
        - withJobChangeSignals
      properties:
        totalInputs:
          type: integer
          minimum: 0
        matched:
          type: integer
          minimum: 0
        unmatched:
          type: integer
          minimum: 0
        withFundingSignals:
          type: integer
          minimum: 0
        withAcquisitionSignals:
          type: integer
          minimum: 0
        withHiringSignals:
          type: integer
          minimum: 0
        withJobChangeSignals:
          type: integer
          minimum: 0
    EnrichmentResult:
      type: object
      required:
        - input
        - matched
        - companyId
        - company
        - signals
      properties:
        input:
          type: object
          additionalProperties:
            type: string
        matched:
          type: boolean
        companyId:
          type:
            - string
            - 'null'
          format: uuid
        company:
          type:
            - object
            - 'null'
          properties:
            name:
              type: string
            domain:
              type:
                - string
                - 'null'
            industry:
              type:
                - string
                - 'null'
            country:
              type:
                - string
                - 'null'
            employeeCount:
              type:
                - integer
                - 'null'
        signals:
          $ref: '#/components/schemas/Signals'
    JobError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - match_engine_unavailable
        message:
          type: string
    Signals:
      type: object
      required:
        - funding
        - acquisition
        - hiring
        - job_change
        - investors
      properties:
        funding:
          type: array
          items:
            type: object
            additionalProperties: true
        acquisition:
          type: array
          items:
            type: object
            additionalProperties: true
        hiring:
          type: array
          items:
            type: object
            additionalProperties: true
        job_change:
          type: array
          items:
            type: object
            additionalProperties: true
        investors:
          type: array
          items:
            type: object
            additionalProperties: true
  responses:
    BadRequest:
      description: Invalid request body, cursor, or company identifiers
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: >-
              Each company must include company_name, website_url, or
              linkedin_url.
            code: invalid_company_payload
    Unauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Invalid API key. No key found.
            code: invalid_api_key
    InsufficientCredits:
      description: Insufficient API credits
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: out of credits, please contact support to increase your usage
            code: insufficient_credits
    SubscriptionExpired:
      description: The API key belongs to a team without an active subscription
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: >-
              Subscription expired. Please upgrade your subscription:
              https://www.trysignalbase.com/#pricing
            code: subscription_expired
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Too many requests. Please upgrade your plan or slow down.
            code: rate_limited
            retryAfter: 60
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: An unknown error occurred
            code: match_engine_unavailable
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: Signalbase API key. Include as Bearer token in the Authorization header.

````