JobsPipe · Schema

AgenticSearchResponse

CompanyJobDataHiring

Properties

Name Type Description
metadata object What the call cost and how the page was produced. total_results and next_cursor are always null: the page is the answer, not a window on a larger set.
data array The best-matching postings, highest relevance first. Postings scored below 0.3 are never returned, so data can be shorter than limit, or empty.
View JSON Schema on GitHub

JSON Schema

jobspipe-agentic-search-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/jobspipe/main/json-schema/jobspipe-agentic-search-response-schema.json",
  "title": "AgenticSearchResponse",
  "x-generated": "2026-10-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/jobspipe-openapi.json#/components/schemas/AgenticSearchResponse",
  "type": "object",
  "required": [
    "metadata",
    "data"
  ],
  "properties": {
    "metadata": {
      "type": "object",
      "description": "What the call cost and how the page was produced. total_results and next_cursor are always null: the page is the answer, not a window on a larger set.",
      "properties": {
        "total_results": {
          "type": [
            "integer",
            "null"
          ]
        },
        "truncated_results": {
          "type": "integer"
        },
        "next_cursor": {
          "type": [
            "string",
            "null"
          ]
        },
        "credits_charged": {
          "type": "integer",
          "description": "Credits this call cost: the jobs in data that the account had not already paid for this calendar month (UTC)."
        },
        "jobs_already_paid": {
          "type": "integer"
        },
        "credits_remaining": {
          "type": "integer",
          "description": "Credits the account can still spend after this call: what is left of the monthly allowance plus extra credits, or on Free what is left of the one-time grant. Absent for callers that are not metered."
        },
        "credits_allowance": {
          "type": "integer",
          "description": "What credits_remaining is measured against: the monthly allowance on a paid package, the one-time grant on Free. Absent for callers that are not metered."
        },
        "agentic": {
          "type": "object",
          "description": "The plan and its execution, for transparency and debugging.",
          "properties": {
            "intent": {
              "type": "string",
              "description": "The request restated in one sentence."
            },
            "role_intent": {
              "type": "string",
              "description": "The role, level and field alone; what the relevance score judges."
            },
            "rounds": {
              "type": "integer",
              "description": "Planning rounds run, 1 to 3."
            },
            "stop": {
              "type": "string",
              "description": "Why the loop stopped, e.g. \"enough candidates passed\"."
            },
            "candidates": {
              "type": "integer",
              "description": "Distinct postings considered."
            },
            "dropped": {
              "type": "integer",
              "description": "Candidates removed by the hard-constraint checks."
            },
            "passed": {
              "type": "integer",
              "description": "Candidates whose relevance cleared the bar."
            },
            "fallback_used": {
              "type": "boolean",
              "description": "True when the planner was unavailable and the request words were searched as a title instead."
            },
            "lanes": {
              "type": "array",
              "description": "Each structured search that ran, with its filters and what it returned.",
              "items": {
                "type": "object",
                "properties": {
                  "round": {
                    "type": "integer"
                  },
                  "name": {
                    "type": "string"
                  },
                  "filters": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "returned": {
                    "type": "integer"
                  },
                  "relevant": {
                    "type": "integer"
                  },
                  "ms": {
                    "type": "integer"
                  },
                  "error": {
                    "type": "string"
                  }
                }
              }
            },
            "judge": {
              "type": "array",
              "description": "Conditions read from each posting's text, e.g. whether the employer sponsors visas.",
              "items": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "question": {
                    "type": "string"
                  },
                  "want": {
                    "type": "string",
                    "enum": [
                      "yes",
                      "no"
                    ],
                    "description": "The answer the request wants: no for an exclusion such as \"not hospitals\"."
                  },
                  "hard": {
                    "type": "boolean"
                  }
                }
              }
            },
            "verify": {
              "type": "object",
              "additionalProperties": true,
              "description": "Hard rules checked on the stored record."
            },
            "jev_calls": {
              "type": "integer"
            },
            "jev_failed_batches": {
              "type": "integer"
            },
            "recheck": {
              "type": "object",
              "description": "The second look at the shortlist: a stricter judgment of exact role and level against the request's own words.",
              "properties": {
                "ran": {
                  "type": "boolean"
                },
                "candidates": {
                  "type": "integer"
                },
                "failed": {
                  "type": "boolean"
                },
                "ms": {
                  "type": "number"
                }
              }
            },
            "timings": {
              "type": "object",
              "properties": {
                "planner_ms": {
                  "type": "number"
                },
                "search_ms": {
                  "type": "number"
                },
                "jev_ms": {
                  "type": "number"
                },
                "total_ms": {
                  "type": "number"
                }
              }
            }
          }
        }
      }
    },
    "data": {
      "type": "array",
      "description": "The best-matching postings, highest relevance first. Postings scored below 0.3 are never returned, so data can be shorter than limit, or empty.",
      "items": {
        "allOf": [
          {
            "$ref": "#/$defs/Job"
          },
          {
            "type": "object",
            "properties": {
              "relevance": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "0-1: how well the posting matches the role asked for, scaled by any text conditions in the request. null when scoring was unavailable and the page is newest-first."
              },
              "judgments": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "The raw judgments behind relevance: role relevance and, per condition, the probabilities that the text states yes, states no, or says nothing.",
                "properties": {
                  "relevance": {
                    "type": "number"
                  },
                  "injection": {
                    "type": "number",
                    "description": "Probability that the posting text tries to instruct the system reading it. At 0.7 or above the posting is never returned."
                  },
                  "recheck": {
                    "type": "number",
                    "description": "The shortlist re-check: probability that the requester would apply, judged on exact role and level."
                  },
                  "constraints": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object",
                      "properties": {
                        "yes": {
                          "type": "number"
                        },
                        "no": {
                          "type": "number"
                        },
                        "not_stated": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              },
              "uncertain": {
                "type": "boolean",
                "description": "judgments.relevance is between 0.3 and 0.7, where the role judgment is least stable; worth a human look."
              },
              "lanes": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Which planned searches returned this posting."
              }
            }
          }
        ]
      }
    }
  },
  "$defs": {
    "CompanyObject": {
      "type": "object",
      "description": "Structured details about the hiring company. Every field is independently optional.",
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "domain": {
          "type": [
            "string",
            "null"
          ],
          "description": "Bare website host, e.g. stripe.com."
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Company website."
        },
        "logo": {
          "type": [
            "string",
            "null"
          ]
        },
        "employee_count": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Headcount from the company's public profile or, failing that, from the employer's business record, which may be an estimate."
        },
        "employee_count_min": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Lower bound on headcount, when only a size band is known (e.g. 10000 for a \"10,000+\" company). Present for many companies that have no exact count."
        },
        "linkedin_url": {
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "location": {
          "type": [
            "object",
            "null"
          ],
          "description": "Company headquarters.",
          "properties": {
            "street": {
              "type": [
                "string",
                "null"
              ]
            },
            "city": {
              "type": [
                "string",
                "null"
              ]
            },
            "region": {
              "type": [
                "string",
                "null"
              ]
            },
            "postal_code": {
              "type": [
                "string",
                "null"
              ]
            },
            "country": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "founded": {
          "type": [
            "string",
            "null"
          ],
          "description": "Year the company was founded, where known."
        },
        "intelligence": {
          "type": [
            "object",
            "null"
          ],
          "description": "Revenue, legal identity and entity type of the employer, resolved for the posting's company in the posting's country. Null when no record exists or the record holds no finding, and always null on GET /v1/companies/{key}, which has no posting country to resolve against. Every field inside is independently null when it is not known.",
          "properties": {
            "revenue_usd": {
              "type": [
                "number",
                "null"
              ],
              "description": "Most recent known annual revenue, converted to US dollars. Null when no figure is known."
            },
            "revenue_year": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Fiscal year the revenue figure refers to."
            },
            "revenue_source": {
              "type": [
                "string",
                "null"
              ],
              "description": "Short identifier of where the revenue figure came from, such as a business register, a securities filing or a company directory."
            },
            "revenue_confidence": {
              "type": [
                "string",
                "null"
              ],
              "enum": [
                "filed",
                "reported",
                "band",
                "derived",
                "extracted",
                null
              ],
              "description": "How the revenue figure was obtained, strongest first: filed = taken from the company's statutory accounts; reported = stated by the company itself; band = only an estimated range is known; revenue_usd is a representative figure within it; derived = estimated from funding or valuation; extracted = read from public text about the company."
            },
            "entity_kind": {
              "type": [
                "string",
                "null"
              ],
              "description": "What kind of organisation the employer is: company, branch, public_sector or staffing_agency."
            },
            "founded_year": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Year the legal entity was founded or registered."
            },
            "headcount": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Employee count as filed, registered or listed in a company directory. Can differ from employee_count, which comes from the company's public profile."
            },
            "industry": {
              "type": [
                "string",
                "null"
              ],
              "description": "Industry as recorded for the legal entity or, where no record exists, the industry a company directory lists."
            },
            "hq_region": {
              "type": [
                "string",
                "null"
              ],
              "description": "Region or state of the employer's headquarters, as written by the source (for example California), when known."
            },
            "hq_city": {
              "type": [
                "string",
                "null"
              ],
              "description": "City of the employer's headquarters, when known."
            },
            "revenue_low_usd": {
              "type": [
                "number",
                "null"
              ],
              "description": "Lower bound of the revenue, in US dollars: the range behind the figure when the source gave one; null otherwise."
            },
            "revenue_high_usd": {
              "type": [
                "number",
                "null"
              ],
              "description": "Upper bound of the revenue, in US dollars: the range behind the figure when the source gave one; null otherwise."
            },
            "headcount_low": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Lower bound of the headcount: the range behind the figure when the source gave one; null otherwise."
            },
            "headcount_high": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Upper bound of the headcount: the range behind the figure when the source gave one; null otherwise."
            },
            "lei": {
              "type": [
                "string",
                "null"
              ],
              "description": "Legal Entity Identifier (ISO 17442), 20 characters."
            }
          }
        }
      }
    },
    "Job": {
      "type": "object",
      "description": "A normalized job posting.",
      "properties": {
        "id": {
          "type": [
            "string",
            "number"
          ],
          "description": "JobsPipe ID for this posting. Stable for the same posting over time, but not shared across boards: the same role listed on two sources is two postings with two IDs."
        },
        "job_title": {
          "type": "string"
        },
        "normalized_title": {
          "type": [
            "string",
            "null"
          ],
          "description": "Canonical form of the title, assigned by the same title classifier that fills occupation_code. Null until the title has been classified."
        },
        "company": {
          "type": "string"
        },
        "company_domain": {
          "type": [
            "string",
            "null"
          ],
          "description": "Hiring company's website domain, for CRM and account matching. Resolved from the company name where a source did not supply one."
        },
        "company_object": {
          "anyOf": [
            {
              "$ref": "#/$defs/CompanyObject"
            },
            {
              "type": "null"
            }
          ],
          "description": "Structured company details, or null when nothing beyond the name is known. Fields are independently optional: coverage depends on which source resolved the company."
        },
        "employer_type": {
          "type": "string",
          "description": "Who posted the job: \"employer\" (hires for itself), \"agency\" (staffing or recruitment firm posting for a client) or \"broker\" (job board republishing another company's listing). Defaults to \"employer\" where the company has not been classified."
        },
        "location": {
          "type": [
            "string",
            "null"
          ]
        },
        "short_location": {
          "type": [
            "string",
            "null"
          ],
          "description": "The same raw location string as location. TheirStack distinguishes a short and a long form; JobsPipe publishes one normalized string in all three."
        },
        "long_location": {
          "type": [
            "string",
            "null"
          ],
          "description": "The same raw location string as location, under the same rules as short_location."
        },
        "country_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "country": {
          "type": [
            "string",
            "null"
          ],
          "description": "Country name for country_code, e.g. United States. Derived from the code, which sources publish far more often than the name."
        },
        "countries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "country as a single-element array, empty when the country is unknown. An array for TheirStack compatibility, where a posting could span several."
        },
        "country_codes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "country_code as a single-element array, empty when the country is unknown. An array for TheirStack compatibility, where a posting could span several."
        },
        "continents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Continent for country_code as a single-element array, e.g. [\"Europe\"]. Empty when the country is unknown."
        },
        "latitude": {
          "type": [
            "number",
            "null"
          ],
          "description": "Latitude of the job's location: the posting's own coordinates when the job board published them. City-centre coordinates are being switched on, and as they are, a posting whose city is known is filled from the centre of that city instead. Read coordinates_source to tell the two apart. Null when there are none."
        },
        "longitude": {
          "type": [
            "number",
            "null"
          ],
          "description": "Longitude of the job's location, under the same rules as latitude."
        },
        "coordinates_source": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "source",
            "city_centroid",
            null
          ],
          "description": "Where latitude and longitude come from. \"source\": the job board published them for this posting. \"city_centroid\": the centre of the posting's city, not the employer's address, so do not treat it as a precise location. Null when there are no coordinates."
        },
        "postal_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "Postal code of the job's location, when the source published one. Distinct from company_object.location.postal_code, which is the employer's headquarters."
        },
        "state_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "Region or state of the job's location, as the source published it (e.g. WA, or a spelled-out region). Not guaranteed to be a two-letter code."
        },
        "cities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The job's city as a single-element array, empty when the source published no city."
        },
        "remote": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "hybrid": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "True when work_arrangement is hybrid, false when it is remote or onsite, null when the arrangement is unknown. Never false on a guess."
        },
        "seniority": {
          "type": [
            "string",
            "null"
          ]
        },
        "employment_statuses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The job's employment type as a single-element array: full_time, part_time, contract, temporary or internship. Empty when the posting does not state one. Note the underscored spelling; the employment_type_or filter takes the hyphenated form."
        },
        "date_posted": {
          "type": [
            "string",
            "null"
          ]
        },
        "discovered_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "When JobsPipe first saw the posting. Poll with the discovered_at_gte filter to fetch only what is new since your last run."
        },
        "status": {
          "type": "string",
          "description": "Lifecycle state: active or closed. Postings no status recheck has reached yet report active."
        },
        "closed_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "When the posting was closed, as YYYY-MM-DD HH:MM:SS in UTC (a space separator, not the RFC 3339 T). Null while the job is active."
        },
        "closed_reason": {
          "type": [
            "string",
            "null"
          ],
          "description": "Why the posting closed: closed (the source said so), gone (the posting disappeared) or stale (unseen long enough to be treated as closed). Null while the job is active."
        },
        "has_blurred_data": {
          "type": "boolean",
          "description": "DEPRECATED. Always false: preview mode has been removed and every record is returned unmasked."
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Link to the posting."
        },
        "source_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "The posting's URL on the first entry of sources, falling back to url. See sources for every board it was seen on."
        },
        "final_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Always null: JobsPipe does not resolve apply-link redirects. Kept for TheirStack compatibility."
        },
        "salary_string": {
          "type": [
            "string",
            "null"
          ],
          "description": "The pay as written in the posting, e.g. \"$120K - $150K a year\" or \"$45 an hour\". Present only when the posting states pay; null otherwise. Roughly a quarter of postings disclose pay."
        },
        "salary_currency": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO 4217 currency code of the salary, e.g. USD, GBP, EUR."
        },
        "min_annual_salary": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Minimum pay annualized to a yearly figure in the original currency. Hourly, daily, weekly and monthly rates are scaled to a year; salary_string preserves the original."
        },
        "max_annual_salary": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Maximum pay annualized to a yearly figure in the original currency."
        },
        "min_annual_salary_usd": {
          "type": [
            "integer",
            "null"
          ],
          "description": "min_annual_salary converted to USD. Non-USD pay is converted through a pinned ECB exchange-rate snapshot rather than a live rate, so the same posting always converts to the same figure. Null when the posting discloses no pay or no rate exists for its currency."
        },
        "max_annual_salary_usd": {
          "type": [
            "integer",
            "null"
          ],
          "description": "max_annual_salary converted to USD, under the same rules as min_annual_salary_usd."
        },
        "avg_annual_salary_usd": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Midpoint of min_annual_salary_usd and max_annual_salary_usd, rounded. When only one of the two is known, that value; null when neither is."
        },
        "keyword_slugs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Skill slugs extracted from the title and description against a curated lexicon, e.g. python, kubernetes, financial-modeling."
        },
        "technology_slugs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The older, ungraded technology list, kept for compatibility; prefer technologies. Named technologies: languages, frameworks, products, tools and platforms, plus named standards and certifications (e.g. python, snowflake, soc2). Broader skills and concepts such as ci/cd or machine-learning appear only in keyword_slugs."
        },
        "technologies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/JobTechnology"
          },
          "description": "Beta. Technologies the posting names, graded by strength and confidence. Present only when the request set include_technologies, and then on every job; empty until the posting has been extracted or while the feature is off. Costs 1 extra credit per job that names at least one, once per job per calendar month. Sorted required, preferred, mentioned; then confidence high to low; then name."
        },
        "occupation_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISCO-08 unit group of the role (4-digit), e.g. 2512 = Software Developers."
        },
        "occupation_label": {
          "type": [
            "string",
            "null"
          ],
          "description": "Human-readable ISCO-08 unit group label."
        },
        "isic_division": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISIC Rev.4 industry division of the employer (2-digit), e.g. 62 = Computer programming and consultancy."
        },
        "isic_division_label": {
          "type": [
            "string",
            "null"
          ],
          "description": "Human-readable ISIC Rev.4 division label."
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "Full text of the posting as published by the source."
        },
        "easy_apply": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Always null: JobsPipe does not detect one-click apply. Kept for TheirStack compatibility."
        },
        "hiring_team": {
          "type": "array",
          "items": {},
          "description": "Always empty: JobsPipe does not publish named recruiter contacts. Kept for TheirStack compatibility."
        },
        "reposted": {
          "type": "boolean",
          "description": "Always false: JobsPipe does not track reposts. Kept for TheirStack compatibility."
        },
        "date_reposted": {
          "type": [
            "string",
            "null"
          ],
          "description": "Always null, under the same rules as reposted."
        },
        "matching_phrases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Always empty. Kept for TheirStack compatibility, where it echoes the searched phrases a posting matched."
        },
        "matching_words": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Always empty, under the same rules as matching_phrases."
        },
        "work_arrangement": {
          "type": [
            "string",
            "null"
          ],
          "description": "How the role is worked: remote, hybrid or onsite. Null when the posting does not say. Finer than remote, which answers false for hybrid and onsite alike; filter on it with work_arrangement_or."
        },
        "is_manager": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether the role manages people. seniority maps our lead bucket to \"director\" for TheirStack parity, which files staff and principal individual contributors under a title that reads as people management; this field tells them apart. Null until the title has been classified."
        },
        "job_function": {
          "type": [
            "string",
            "null"
          ],
          "description": "Coarse function of the role, from a closed vocabulary: Engineering, Data & Analytics, Product, Design, IT & Security, Sales, Marketing, Customer Support, Operations, Finance & Accounting, Legal, Human Resources, Healthcare, Education, Science & Research, Manufacturing, Logistics & Supply Chain, Construction & Trades, Hospitality & Food, Retail, Transport, Security & Protective, Administration, Executive. Null until the title has been classified."
        },
        "last_seen_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "When the posting was last confirmed still live by a status recheck, as YYYY-MM-DD HH:MM:SS in UTC (a space separator, not the RFC 3339 T). Null until a recheck has reached it."
        },
        "verified_at": {
          "type": [
            "string",
            "null"
          ],
          "description": "When JobsPipe last checked the posting, whether or not anything changed, as YYYY-MM-DD HH:MM:SS in UTC (a space separator, not the RFC 3339 T). Null until a recheck has reached it."
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/JobSource"
          },
        

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/jobspipe/refs/heads/main/json-schema/jobspipe-agentic-search-response-schema.json

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/jobspipe-agentic-search-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.