NeverBounce Jobs API

Bulk list verification jobs — create, parse, start, status, results, search, delete, download.

Operations 7

POST /jobs/create /create #
POST /jobs/parse /parse #
POST /jobs/start /start #
GET /jobs/status /status #
GET /jobs/results /results #
POST /jobs/delete /delete #

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/neverbounce-jobs-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

neverbounce-jobs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: NeverBounce Jobs API
  version: '4.2'
  description: Bulk list verification jobs. Part of the NeverBounce v4 email verification API. Harvested from the OpenAPI definition NeverBounce publishes behind its interactive API reference at developers.neverbounce.com (ReadMe API Designer definition `neverbounce-api.json`).
  contact:
    name: NeverBounce Support
    email: support@neverbounce.com
    url: https://developers.neverbounce.com/
servers:
- url: https://api.neverbounce.com/v4.2
security:
- sec0: []
tags:
- name: Jobs
  description: Bulk list verification jobs
paths:
  /jobs/search:
    get:
      summary: /search
      description: ''
      operationId: jobs-search
      parameters:
      - name: job_id
        in: query
        description: Filter jobs based on it's id
        schema:
          type: integer
          format: int32
      - name: filename
        in: query
        description: Filter jobs based on the filename (exact match)
        schema:
          type: string
      - name: job_status
        in: query
        description: Filter jobs by the job status
        schema:
          type: string
      - name: page
        in: query
        description: The page to grab the jobs from
        schema:
          type: integer
          format: int32
          default: 1
      - name: items_per_page
        in: query
        description: The number of jobs to display
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"success\",\n  \"total_results\": 1,\n  \"total_pages\": 1,\n  \"query\": {\n    \"page\": 1,\n    \"items_per_page\": 10,\n  },\n  \"results\": [\n    {\n      \"id\": 277461,\n      \"status\": \"complete\",\n      \"filename\": \"Created from Array.csv\",\n      \"created_at\": \"2017-07-25 16:25:19\",\n      \"started_at\": \"2017-07-25 16:25:30\",\n      \"finished_at\": \"2017-07-25 16:25:31\",\n      \"total\": {\n        \"records\": 2,\n        \"billable\": 2,\n        \"processed\": 2,\n        \"valid\": 0,\n        \"invalid\": 2,\n        \"catchall\": 0,\n        \"disposable\": 0,\n        \"unknown\": 0,\n        \"duplicates\": 0,\n        \"bad_syntax\": 0\n      },\n      \"bounce_estimate\": 0,\n      \"percent_complete\": 100\n    }\n  ],\n  \"execution_time\": 388\n}"
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl --request GET\\\n  --url 'https://api.neverbounce.com/v4.2/jobs/search?key={api_key}'"
        - language: php
          code: '<?php


            // Set API key

            \NeverBounce\Auth::setApiKey($api_key);


            $query = [

            //    ''job_id'' => 10000, // Filter jobs based on id

            //    ''filename'' => ''Book1.csv'', // Filter jobs based on filename

            //    ''job_status'' => ''complete'', // Show completed jobs only

            //    ''page'' => 1, // Page to start from

            //    ''items_per_page'' => 10, // Number of items per page

            ];


            // Search for jobs in your account

            $job = \NeverBounce\Jobs::search($query);'
        - language: javascript
          code: "// Initialize NeverBounce client\nconst client = new NeverBounce({apiKey: myApiKey});\n\n// Search jobs\nclient.jobs.search({\n//    'job_id': 10000, // Filter jobs based on id\n//    'filename': 'Book1.csv', // Filter jobs based on filename\n//    'job_status': 'complete', // Show completed jobs only\n//    'page': 1, // Page to start from\n//    'items_per_page': 10, // Number of items per page\n}).then(\n    resp => // Handle successful response,\n    err => // Handle error response\n););"
          name: NodeJs
        - language: python
          code: "import neverbounce_sdk\n\n# Create sdk client\nclient = neverbounce_sdk.client(api_key='api_key)\n\n# Get jobs\njobs = client.jobs_search(\n    # job_id=10000,  # Filter jobs based on id\n    # filename='Book1.csv',  # Filter jobs based on filename\n    # job_status='complete',  # Show completed jobs only\n    # page=1,  # Page to start from\n    # items_per_page=10,  # Number of items per page\n)\n\n# iterate through jobs\nfor job in jobs:\n    print(job)"
        - language: go
          code: "// Instantiate wrapper\nclient := neverbounce.New(\"api_key\")\n\n// Search for jobs\nsearchResults, err := client.Jobs.Search(&nbModels.JobsSearchRequestModel{\n  //JobFilename: \"MyListName.csv\",\n  //JobID: 289010,\n  //JobStatus: \"complete\",\n  //ItemsPerPage: 10,\n  //Page: 1,\n})"
        - language: ruby
          code: '# Instantiate API client

            client = NeverBounce::API::Client.new(api_key: "api_key")


            # Search for jobs

            resp = client.jobs_search(page: 1, per_page: 10)


            # Process items:

            resp.results.each do |item|'
        - language: csharp
          code: '// Create SDK object

            var sdk = new NeverBounceSdk("api_key");


            // Create search model

            var model = new JobSearchRequestModel();

            //model.job_id = 288025;

            //model.job_status = "complete";

            //model.filename = "MyFile.csv";

            //model.items_per_page = 10;

            //model.page = 1;


            // Get jobs

            JobSearchResponseModel resp = await sdk.Jobs.Search(model);'
          name: .NET
        - language: java
          code: "// Instantiate Client\nNeverbounceClient neverbounceClient = NeverbounceClientFactory.create(apiKey);\n\n// Search for jobs\nJobsSearchResponse jobsSearchResponse = neverbounceClient\n        .prepareJobsSearchRequest()\n        .withJobId(jobId)\n        .build()\n        .execute();"
        samples-languages:
        - curl
        - php
        - javascript
        - python
        - go
        - ruby
        - csharp
        - java
      tags:
      - Jobs
  /jobs/create:
    post:
      summary: /create
      description: ''
      operationId: jobs-create
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - input_location
              - input
              properties:
                input_location:
                  type: string
                  description: The type of input being supplied. Accepted values are "remote_url" and "supplied".
                input:
                  type: string
                  description: The input to be verified
                  format: json
                auto_parse:
                  type: boolean
                  description: 'Should we begin parsing the job immediately? (default: false)'
                  default: false
                auto_start:
                  type: boolean
                  description: 'Should we run the job immediately after being parsed? (default: false)'
                  default: false
                run_sample:
                  type: boolean
                  description: 'Should this job be run as a sample? (default: false)'
                  default: false
                filename:
                  type: string
                  description: This will be what's displayed in the dashboard when viewing this job
                request_meta_data:
                  type: object
                  description: Miscellanious request meta data
                  properties:
                    leverage_historical_data:
                      type: boolean
                      description: Control historical data usage, set to false to use real-time only verification
                      default: true
                allow_manual_review:
                  type: boolean
                  description: Denotes whether or not the job should be allowed to fall into manual review
                  default: false
                callback_url:
                  type: string
                  description: An optional URL that we should send events to during the lifecycle of the job
                callback_headers:
                  type: string
                  description: An optional array of headers that should be included when sending events to the callback_url
                  format: json
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"success\",\n  \"job_id\": 150970,\n  \"execution_time\": 712\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  job_id:
                    type: integer
                    example: 150970
                    default: 0
                  execution_time:
                    type: integer
                    example: 712
                    default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "# x-www-form-urlencoded request w/ remote_url input\ncurl --request POST\\\n  --url https://api.neverbounce.com/v4.2/jobs/create\\\n  --data key={api_key}\\\n  --data input_location='remote_url'\\\n  --data filename='SampleNeverBounceAPI.csv'\\\n  --data auto_parse=true\\\n  --data auto_start=true\\\n  --data allow_manual_review=false\\\n  --data input='https://mydomain.com/my_file.csv'\\\n  --data callback_url='https://mydomain.com/callbacks/neverbounce'\\\n  --data 'callback_headers[X-My-Token]=123abc'"
          name: cURL Remote URL
        - language: curl
          code: "# x-www-form-urlencoded request w/ supplied data\ncurl --request POST\\\n  --url https://api.neverbounce.com/v4.2/jobs/create\\\n  --data key={api_key}\\\n  --data input_location='supplied'\\\n  --data filename='SampleNeverBounceAPI.csv'\\\n  --data auto_parse=true\\\n  --data auto_start=true\\\n  --data allow_manual_review=false\\\n  --data 'input[0][0]=support%40neverbounce.com'\\\n  --data 'input[0][1]=Fred%20McValid'\\\n  --data 'input[1][0]=invalid%40neverbounce.com'\\\n  --data 'input[1][1]=Bob%20McInvalid'\n  --data callback_url='https://mydomain.com/callbacks/neverbounce'\\\n  --data 'callback_headers[X-My-Token]=123abc'\n  \n# JSON encoded request w/ supplied data\ncurl --request POST\\\n  --header \"Content-Type: application/json\"\\\n  --url https://api.neverbounce.com/v4.2/jobs/create\\\n  --data '{\n    \"key\": {api_key},\n    \"input_location\": \"supplied\",\n    \"filename\": \"SampleNeverBounceAPI.csv\",\n    \"auto_start\": true,\n    \"auto_parse\": true,\n    \"allow_manual_review\": false,\n    \"input\": [\n        [\n            \"support@neverbounce.com\",\n            \"Fred McValid\"\n        ],\n        [\n            \"invalid@neverbounce.com\",\n            \"Bob McInvalid\"\n        ]\n    ],\n    \"callback_url\": \"https://mydomain.com/callbacks/neverbounce\",\n    \"callback_headers\": {\n    \t\"X-My-Token\": \"123abc\"\n    }\n}'"
          name: cURL Supplied Data
        - language: php
          code: "<?php\n\n// Set API key\n\\NeverBounce\\Auth::setApiKey($api_key);\n\n// Build json\n$arr = [\n    [\n        'support@neverbounce.com',\n        'Fred McValid'\n    ],\n    [\n        'invalid@neverbounce.com',\n        'Bob McInvalid'\n    ]\n];\n\n// Make a new job with the supplied data\n$job = \\NeverBounce\\Jobs::create(\n  $arr, // input\n  \\NeverBounce\\Jobs::SUPPLIED_INPUT, // Either `supplied` or `remote_url`\n  'SampleNeverBounceAPI.csv', // Friendly name that can be used to identify job\n  false, // Run as sample\n  true, // Auto parse\n  true, // Auto start,\n  false, // Allow manual review\n  null, // Callback URL\n  null // Callback Headers\n);\n"
        - language: javascript
          code: "// Initialize NeverBounce client\nconst client = new NeverBounce({apiKey: myApiKey});\n\n// Verify a list of emails\nclient.jobs.create(\n    [\n        {\n            'id': '12345',\n            'email': 'support@neverbounce.com',\n            'name': 'Fred McValid'\n        },\n        {\n            'id': '12346',\n            'email': 'invalid@neverbounce.com',\n            'name': 'Bob McInvalid'\n        }\n    ],\n    'supplied', // Either `supplied` or `remote_url`\n    'Created from Array.csv', // Friendly name that can be used to identify job\n  \tfalse, // Run sample\n  \ttrue, // Auto parse\n    true // Auto run,\n    false, // Allow manual review\n    null, // Callback URL\n    null // Callback Headers\n).then(\n    resp => // Handle success response\n    err => // Handle error response\n);"
          name: NodeJs
        - language: python
          code: "import neverbounce_sdk\n\n# Create sdk client\nclient = neverbounce_sdk.client(api_key='api_key')\n\n# Create array of data\ninputData = [\n  {\n    'id': '12345',\n    'email': 'support@neverbounce.com',\n    'name': 'Fred McValid'\n  },\n  {\n    'id': '12346',\n    'email': 'invalid@neverbounce.com',\n    'name': 'Bob McInvalid'\n  }\n]\n\n# Create Job\nresp = client.jobs_create(\n  input=inputData,\n  filename=\"Created from Python Wrapper.csv\",\n  # auto_parse=True,\n  # auto_start=True,\n  # as_sample=False,\n  # from_url=False,\n  # allow_manual_review=None,\n  # callback_url=None\n  # callback_headers=None\n)"
        - language: go
          code: "// Instantiate wrapper\nclient := neverbounce.New(\"api_key\")\n\n// Build data map\ncreateData := map[int]interface{}{}\ncreateData[0] = map[string]interface{}{\n  \"id\":    12345,\n  \"email\": \"support@neverbounce.com\",\n  \"name\":  \"Bob McValid\",\n}\ncreateData[1] = map[string]interface{}{\n  \"id\":    12346,\n  \"email\": \"invalid@neverbounce.com\",\n  \"name\":  \"Fred McInvalid\",\n}\n\n// Create a job from supplied data\njobInfo, err := client.Jobs.CreateFromSuppliedData(&nbModels.JobsCreateSuppliedDataRequestModel{\n  SuppliedData: createData,\n  AutoParse:    false,\n  AutoRun:      false,\n  RunSample:    false,\n  FileName:     \"Created from Golang.csv\",\n  AllowManualReview: false,\n  // CallbackURL: string\n  // CallbackHeaders: map[string]interface{}\n})\nif err != nil {\n  panic(err)\n}\n\n// Create a job from a remote URL\njobInfo, err := client.Jobs.CreateFromRemoteURL(&nbModels.JobsCreateRemoteURLRequestModel{\n  RemoteURL: \"https://example.com/file.csv\",\n  AutoParse: true,\n  AutoRun:   false,\n  RunSample: false,\n  FileName:  \"Created from Golang.csv\",\n  AllowManualReview: false,\n  // CallbackURL: string\n  // CallbackHeaders: map[string]interface{}\n})\nif err != nil {\n  panic(err)\n}"
        - language: ruby
          code: "# Instantiate API client\nclient = NeverBounce::API::Client.new(api_key: \"api_key\")\n\n# Create job with supplied input\nresp = client.jobs_create(\n  supplied_input: [\n    [\"alice@isp.com\", \"Alice Roberts\"], \n    [\"bob.smith@gmail.com\", \"Bob Smith\"]\n  ]\n)\n\n# Create job with remote file\nresp = client.jobs_create(remote_input: \"http://example.com/emails.csv\", filename: \"emails.csv\")"
        - language: csharp
          code: "// Create SDK object\nvar sdk = new NeverBounceSdk(\"api_key\");\n\n/**\n * Create a job using supplied data\n */\n\n// Create supplied data model\nvar model = new JobCreateSuppliedDataRequestModel();\nmodel.filename = \"Created From dotNET.csv\";\nmodel.auto_parse = true;\nmodel.auto_start = false;\nmodel.input = new List<object>();\nmodel.input.Add(new {id = \"3\", email = \"support@neverbounce.com\", name = \"Fred McValid\"});\nmodel.input.Add(new {id = \"4\", email = \"invalid@neverbounce.com\", name = \"Bob McInvalid\"});\nmodel.allow_manual_review = false;\n//model.callback_url = \"https://example.com/callback/neverbounce\";\n//model.callback_headers = Dictionary<string, string>\n\n// Create job from supplied data\nJobCreateResponseModel resp = await sdk.Jobs.CreateFromSuppliedData(model);\n\n/**\n * Create a job using a remote url\n */\n\n// Create remote url model\nvar model2 = new JobCreateRemoteUrlRequestModel();\nmodel.filename = \"Created From dotNET.csv\";\nmodel.auto_parse = true;\nmodel.auto_start = false;\nmodel.input = \"https://example.com/file.csv\";\nmodel.allow_manual_review = false;\n//model.callback_url = \"https://example.com/callback/neverbounce\";\n//model.callback_headers = Dictionary<string, string>\n\n// Create job from remote url\nJobCreateResponseModel resp2 = await sdk.Jobs.CreateFromRemoteUrl(model);"
          name: .NET
        samples-languages:
        - curl
        - php
        - javascript
        - python
        - go
        - ruby
        - csharp
      tags:
      - Jobs
  /jobs/parse:
    post:
      summary: /parse
      description: ''
      operationId: jobs-parse
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - job_id
              properties:
                job_id:
                  type: integer
                  description: The id of the job to parse
                  format: int32
                auto_start:
                  type: boolean
                  description: 'Should the job start processing immediately after it''s parsed? (default: false)'
                  default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"success\",\n  \"queue_id\": \"NB-PQ-59246392E9E5D\",\n  \"execution_time\": 712\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  queue_id:
                    type: string
                    example: NB-PQ-59246392E9E5D
                  execution_time:
                    type: integer
                    example: 712
                    default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl --request POST\\\n  --url https://api.neverbounce.com/v4.2/jobs/parse\\\n  --data key={api_key}\\\n  --data job_id={job_id}"
          name: cURL
        - language: php
          code: "<?php\n\n// Set API key\n\\NeverBounce\\Auth::setApiKey($api_key);\n\n// Make a new job with the supplied data\n$job = \\NeverBounce\\Jobs::parse(\n  $job_id,\n  //false // Auto start\n);"
        - language: javascript
          code: "// Initialize NeverBounce client\nconst client = new NeverBounce({apiKey: myApiKey});\n\n// Parse a job\nclient.jobs.parse(\n  jobId,\n  //false // Auto start\n).then(\n    resp => // Handle success response\n    err => // Handle error response\n);"
          name: NodeJs
        - language: python
          code: "import neverbounce_sdk\n\n# Create sdk client\nclient = neverbounce_sdk.client(api_key='api_key')\n\n# Parse job\nresp = client.jobs_parse(\n  job_id=289022,\n  #auto_start=False\n)"
        - language: go
          code: "// Instantiate wrapper\nclient := neverbounce.New(\"api_key\")\n\n// Parse a job\nparseInfo, err := client.Jobs.Parse(&nbModels.JobsParseRequestModel{\n  JobID: 296050,\n//  AutoStart: false,\n})"
        - language: ruby
          code: '# Instantiate API client

            client = NeverBounce::API::Client.new(api_key: "api_key")


            # Parse job

            resp = client.jobs_parse(job_id: 123)'
        - language: csharp
          code: '// Create SDK object

            var sdk = new NeverBounceSdk("api_key");


            // Create parse job model

            var model = new JobParseRequestModel();

            model.job_id = 290561;

            //model.auto_start = false;


            // Parse job

            JobParseResponseModel resp = await sdk.Jobs.Parse(model);'
          name: .NET
        samples-languages:
        - curl
        - php
        - javascript
        - python
        - go
        - ruby
        - csharp
      tags:
      - Jobs
  /jobs/start:
    post:
      summary: /start
      description: ''
      operationId: jobs-start
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - job_id
              properties:
                job_id:
                  type: integer
                  description: The id of the job to start
                  format: int32
                run_sample:
                  type: boolean
                  description: 'Should this job be run as a sample? (default: false)'
                  default: false
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"success\",\n  \"queue_id\": \"NB-PQ-59246392E9E5D\",\n  \"execution_time\": 712\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  queue_id:
                    type: string
                    example: NB-PQ-59246392E9E5D
                  execution_time:
                    type: integer
                    example: 712
                    default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl --request POST\\\n  --url https://api.neverbounce.com/v4.2/jobs/start\\\n  --data key={api_key}\\\n  --data job_id={job_id}\n  --data allow_manual_review=false"
          name: cURL
        - language: php
          code: '<?php


            // Set API key

            \NeverBounce\Auth::setApiKey($api_key);


            // Start a job that has been parsed

            $job = \NeverBounce\Jobs::start($job_id);'
        - language: javascript
          code: "// Initialize NeverBounce client\nconst client = new NeverBounce({apiKey: myApiKey});\n\n// Start a job\nclient.jobs.start(jobId).then(\n    resp => // Handle successful response\n    err => // Handle error response\n);"
          name: NodeJs
        - language: python
          code: 'import neverbounce_sdk


            # Create sdk client

            client = neverbounce_sdk.client(api_key=''api_key'')


            # Start job

            resp = client.jobs_start(job_id=289022)'
        - language: go
          code: "// Instantiate wrapper\nclient = neverbounce.New(\"api_key\")\n\n// Start a job\nstartInfo, err := client.Jobs.Start(&nbModels.JobsStartRequestModel{\n  JobID: 296050,\n//  RunSample: false,\n})"
        - language: ruby
          code: '# Instantiate API client

            client = NeverBounce::API::Client.new(api_key: "api_key")


            # Start a job

            resp = client.client.jobs_start(job_id: 123)'
        - language: csharp
          code: '// Create SDK object

            var sdk = new NeverBounceSdk("api_key");


            // Create start job model

            var model = new JobStartRequestModel();

            model.job_id = 290561;

            //model.run_sample = true;


            // Start job

            JobStartResponseModel resp = await sdk.Jobs.Start(model);'
          name: .NET
        samples-languages:
        - curl
        - php
        - javascript
        - python
        - go
        - ruby
        - csharp
      tags:
      - Jobs
  /jobs/status:
    get:
      summary: /status
      description: ''
      operationId: jobs-status
      parameters:
      - name: job_id
        in: query
        description: The id of the job to check
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"success\",\n  \"id\": 277461,\n  \"filename\": \"Created from Array.csv\",\n  \"created_at\": \"2017-07-25 14:52:27\",\n  \"started_at\": \"2017-07-25 14:52:40\",\n  \"finished_at\": \"2017-07-25 14:53:06\",\n  \"failure_reason\": null,\n  \"total\": {\n    \"records\": 2,\n    \"billable\": 2,\n    \"processed\": 2,\n    \"valid\": 0,\n    \"invalid\": 2,\n    \"catchall\": 0,\n    \"disposable\": 0,\n    \"unknown\": 0,\n    \"duplicates\": 0,\n    \"bad_syntax\": 0\n  },\n  \"bounce_estimate\": 0,\n  \"percent_complete\": 100,\n  \"job_status\": \"complete\",\n  \"execution_time\": 322\n}"
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  id:
                    type: integer
                    example: 277461
                    default: 0
                  filename:
                    type: string
                    example: Created from Array.csv
                  created_at:
                    type: string
                    example: '2017-07-25 14:52:27'
                  started_at:
                    type: string
                    example: '2017-07-25 14:52:40'
                  finished_at:
                    type: string
                    example: '2017-07-25 14:53:06'
                  failure_reason: {}
                  total:
                    type: object
                    properties:
                      records:
                        type: integer
                        example: 2
                        default: 0
                      billable:
                        type: integer
                        example: 2
                        default: 0
                      processed:
                        type: integer
                        example: 2
                        default: 0
                      valid:
                        type: integer
                        example: 0
                        default: 0
                      invalid:
                        type: integer
                        example: 2
                        default: 0
                      catchall:
                        type: integer
                        example: 0
                        default: 0
                      disposable:
                        type: integer
                        example: 0
                        default: 0
                      unknown:
                        type: integer
                        example: 0
                        default: 0
                      duplicates:
                        type: integer
                        example: 0
                        default: 0
                      bad_syntax:
                        type: integer
                        example: 0
                        default: 0
                  bounce_estimate:
                    type: integer
                    example: 0
                    default: 0
                  percent_complete:
                    type: integer
                    example: 100
                    default: 0
                  job_status:
                    type: string
                    example: complete
                  execution_time:
                    type: integer
                    example: 322
                    default: 0
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: '{}'
              schema:
                type: object
                properties: {}
      deprecated: false
      x-readme:
        code-samples:
        - language: curl
          code: "curl --request GET\\\n  --url 'https://api.neverbounce.com/v4.2/jobs/status?key={api_key}&job_id={job_id}'"
        - language: php
          code: '<?php


            // Set API key

            \NeverBounce\Auth::setApiKey($api_key);


            // Get the details about the job

            $job = \NeverBounce\Jobs::status($job_id);'
        - language: javascript
          code: "// Initialize NeverBounce client\nconst client = new NeverBounce({apiKey: myApiKey});\n\n// Get the job status\nclient.jobs.status(jobId).then(\n    resp => // Handle successful response,\n    err => // Handle error response\n);"
          name: NodeJs
        - language: python
          code: 'import neverbounce_sdk


            # Create sdk client

            client = neverbounce_sdk.client(api_key=''api_key'')


            # Get job status

            resp = client.jobs_status(job_id=289022)'
        - language: go
          code: "// Instantiate wrapper\nclient := neverbounce.New(\"api_key\")\n\n// Query a job's status\nstatusInfo, err := client.Jobs.Status(&nbModels.JobsStatusRequestModel{\n  JobID: 296050,\n})"
        - language: ruby
          code: '# Instantiate API client

            client = NeverBounce::API::Client.new(api_key: "api_key")


            # Parse job

            resp = client.jobs_status(job_id: 123)'
        - language: csharp
          code: '// Create SDK object

            var sdk = new NeverBounceSdk("api_key");


            // Create job status model

            var model = new JobStatusRequestModel();

            model.job_id = 290561;


            // Query job status

            JobStatusResponseModel resp = await sdk.Jobs.Status(model);'
          name: .NET
        samples-languages:
        - curl
        - php
        - javascript
        - python
        - go
        - ruby
        - csharp
      tags:
      - Jobs
  /jobs/results:
    get:
      summary: /results
      description: ''
      operationId: jobs-results
      parameters:
      - name: job_id
        in: query
        description: The id of the job to retrieve results for
        required: true
        schema:
          type: integer
          format: int32
      - name: page
        in: query
        description: The page to return the results from
        schema:
          type: integer
          format: int32
          default: 1
      - name: items_per_page
        in: query
        description: The number of results to be returned, between 1 and 1000
        schema:
          type: integer
          format: int32
          default: 10
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"status\": \"success\",\n  \"total_results\": 3,\n  \"total_pages\": 1,\n  \"query\": {\n    \"job_id\": 251319,\n    \"valids\": 1,\n    \"invalids\": 1,\n    \"disposables\": 1,\n    \"catchalls\": 1,\n    \"unknowns\": 1,\n    \"page\": 0,\n    \"items_per_page\": 10\n  },\n  \"results\": [\n    {\n      \"data\": {\n        \"email\": \"email\",\n        \"id\": \"id\",\n        \"name\": \"name\"\n      },\n      \"verification\": {\n        \"result\": \"invalid\",\n        \"flags\": [],\n        \"suggested_correction\": \"\",\n        \"address_info\": {\n          \"original_email\": \"email\",\n          \"normalized_email\": \"\",\n          \"addr\": \"\",\n          \"alias\": \"\",\n          \"host\": \"\",\n          \"fqdn\": \"\",\n          \"domain\": \"\",\n          \"subdomain\": \"\",\n          \"tld\": \"\"\n        }\n      }\n    },\n    {\n      \"data\": {\n        \"email\": \"support@neverbounce.com\",\n        \"id\": \"12345\",\n        \"name\": \"Fred McValid\"\n      },\n      \"verification\": {\n        \"result\": \"valid\",\n   

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/neverbounce/refs/heads/main/openapi/neverbounce-jobs-api-openapi.yml