Kadrin Docs Kadrin Batch

Objects

Every object the API takes or gives back, with its fields.

LonLat

A location as [longitude, latitude], in that order, in standard GPS coordinates (WGS84). Longitude comes first, so Boston is [-71.06, 42.36].

Type: array of any.

GeographyLevel

A kind of official area:

Type: string.

TopicId

A topic you can ask for:

Type: string.

Topic

A subject you can ask about, and the groups of measures in it.

FieldTypeWhat it is
id
required
TopicId

A topic you can ask for:

  • demographics: Demographics (population, age, households, education)
  • income: Income & poverty
  • housing: Housing (homes, vacancy, owners and renters, home values, rents)
  • labor: Labor market (jobs located in the area, hiring, unemployment and residents' work)
  • businesses: Businesses & amenities (places such as grocery stores, bank branches, workplaces, public facilities)
  • health: Health (health outcomes, insurance, Medicare, care facilities, shortage areas, food access)
  • environment: Environment & hazards (natural hazards, flood zones, regulated sites, drinking water, oil and gas wells)
  • incentives: Tax incentives (Opportunity Zones and other areas where tax incentives apply)
  • transportation: Transportation (traffic, transit, EV charging, commuting, fatal crashes)
  • spending: Consumer spending (what households spend a year, estimated from their incomes)
  • timeuse: Time use (how residents spend their week, and how many people are present at each hour)
  • education: Education (public schools and colleges)
  • broadband: Broadband (home and business internet service offered, its speeds and providers)
label
required
string

The topic's name in plain words.

descriptionstring

What the topic covers.

groups
required
array of string

The groups in this topic. You pay one credit per group per place.

available
required
boolean

False until this topic's data is in a published release.

PointGeometry

A single location. Its numbers come from the official area it falls in.

FieldTypeWhat it is
type
required
"Point"
coordinates
required
LonLat

A location as [longitude, latitude], in that order, in standard GPS coordinates (WGS84). Longitude comes first, so Boston is [-71.06, 42.36].

BufferGeometry

A radius, meaning everywhere within a set distance of a point, measured in a straight line.

FieldTypeWhat it is
type
required
"buffer"
center
required
LonLat

A location as [longitude, latitude], in that order, in standard GPS coordinates (WGS84). Longitude comes first, so Boston is [-71.06, 42.36].

radius
required
number

How far out to go. Up to 50 miles (80 km).

unitstring

mi (miles), km (kilometers) or m (meters). Default "mi".

IsochroneGeometry

A drive-time area (also called an isochrone), meaning everywhere you can reach from a point within a set number of minutes by car, on foot or by bike, without traffic delays. The point must be within 5 km (3 miles) of a road. Drawing one costs 2 credits.

FieldTypeWhat it is
type
required
"isochrone"
center
required
LonLat

A location as [longitude, latitude], in that order, in standard GPS coordinates (WGS84). Longitude comes first, so Boston is [-71.06, 42.36].

mode
required
string

How you travel: drive, walk or bike.

minutes
required
integer

Travel time, 1 to 60 minutes. Walking and biking go up to 30.

GeoJSONPolygon

Your own outline, written as GeoJSON (the standard format for map shapes). Use Polygon for one shape or MultiPolygon for a shape made of several separate pieces. Coordinates are [longitude, latitude]. Up to 10,000 corner points and 25,000 square kilometers.

FieldTypeWhat it is
type
required
string

Polygon (one shape) or MultiPolygon (several separate pieces).

coordinates
required
array of any

The corner points of the outline, as [longitude, latitude] pairs.

GeoidGeometry

An official area, given by its GEOID (the ID number the government gives each area). Find one with /geographies/lookup.

FieldTypeWhat it is
type
required
"geoid"
geoid
required
string

The area's official ID number.

Geometry

The place, in any one of these forms.

Type: PointGeometry or BufferGeometry or IsochroneGeometry or GeoJSONPolygon or GeoidGeometry.

Area

One place you want numbers for.

FieldTypeWhat it is
id
required
string

Your own name or ID for the place. We send it back with the results so you can match them up.

geometry
required
Geometry

The place, in any one of these forms.

EnrichOptions

Optional settings. The defaults suit most uses.

FieldTypeWhat it is
releasestring

Which data release to use (a frozen snapshot, such as 2026.11 or 2026.11.1). Name one to get the same answer every time; latest uses the newest. Default "latest".

base_geographystring

The official areas used as building blocks for your shape: block_group (smaller and more detailed, the default) or tract (larger, with smaller margins of error). Default "block_group".

apportionmentstring

How we split official areas that your shape only partly covers:

  • dasymetric (default): by where people actually live, using 2020 Census counts. The most accurate.
  • areal: by the share of land your shape covers. Simpler; mostly for comparison.
  • centroid: an area counts fully if its center point is inside your shape, and not at all if it isn't. Default "dasymetric".
benchmarksarray of string

Also return the same numbers for the county, state or whole country, for comparison, plus where your place ranks. The county and state are the ones holding most of your place's people. Rates and medians are ranked against the census tracts in that county, state or country; counts, such as population, aren't ranked, since they grow with the size of your shape. Free.

include_moeboolean

Include margins of error (how far the true number could reasonably be from our estimate). On by default. Default true.

include_geometryboolean

Send back the outline of each place, for example to draw it on a map. Default false.

repair_geometryboolean

Try to fix small problems in your outlines, such as an edge that crosses itself, instead of returning an error. Default false.

dry_runboolean

Show what the request would cost without running it. Free. Default false.

EnrichRequest

The places you want numbers for, and what to return. Ask for a preset, or at least one of topics, groups, variables or indices.

FieldTypeWhat it is
presetstring

A ready-made request by name (GET /presets lists them): its groups and comparisons are added to anything else you ask for. Its suggested area isn't applied for you; send that shape as the place.

areas
required
array of Area

The places, up to 100. For more, use /jobs.

topicsarray of TopicId

Whole topics, such as demographics. You pay one credit for each group in the topic, per place.

groupsarray of string

Groups of related measures, such as housing.costs. One credit per group per place.

variablesarray of string

Single measures, such as income.household.median. You pay for the group each one belongs to, once per group per place.

indicesarray of string

Indices (single scores that combine several measures), such as kadrin.economic_momentum. Three credits each per place.

optionsEnrichOptions

Optional settings. The defaults suit most uses.

Send at least one of preset, topics, groups, variables or indices.

Preset

A ready-made request.

FieldTypeWhat it is
id
required
string

Ask for it by this name, as preset.

label
required
string

Its name in plain words.

descriptionstring

What it's for.

groups
required
array of object

The groups it includes, which is what you pay for.

benchmarksarray of string

The comparisons it adds (free). One of county, state, us.

aroundobject

The area it suggests around each point, as /jobs' around takes it, such as a 10-minute drive.

credits_per_place
required
integer

What each place costs: one credit per group, plus 2 if the suggested area is a drive-time area.

Value

One number, with everything you need to judge how far to trust it.

FieldTypeWhat it is
value
required
number or null

The number. Empty when there isn't enough data; a warning explains why.

moenumber or null

Margin of error, meaning how far the true number could reasonably be from the estimate. The true value is very likely (90% of the time) between value minus moe and value plus moe.

ciarray of number or null

For modeled numbers (estimated by a statistical model rather than a survey), the range the true value very likely falls in, as [low, high].

unit
required
string

What the number counts or measures, such as people, dollars or percent.

aggregation
required
string

How the number was combined for your shape:

  • sum: added up
  • ratio: both parts of a rate or average added up first, then divided
  • interpolated_median: the middle value, estimated from the full spread of values
  • weighted_mean, population_weighted_mean: an average in which areas with more people count more
  • point_count: places, building permits, oil and gas wells or drilling permits counted inside your shape
  • point_sum: a figure of the places inside your shape, added up, such as the new homes of building permits, bank deposits or weekday transit departures
  • point_change: building or drilling permits inside your shape in the last 12 months, minus the 12 months before; or a figure of the schools inside it, minus the same figure some years before
  • point_percent_change: the same change as a percent of the earlier figure
  • point_ratio: two figures of the schools inside your shape, each added up, then divided
  • point_distance: how far your place's point is from the nearest one, in miles
  • block_sum: added up from the smallest census areas (jobs; people and homes near oil and gas wells)
  • block_ratio: two counts from the smallest census areas, each added up, then divided, such as the share of homes in a floodplain
  • block_share: the share of your place's homes inside a kind of area, such as an Opportunity Zone (by land where nobody has a home)
  • containing_unit: the value of the official area your point falls in
  • block_change: added up from the smallest census areas in two years, then the earlier year taken from the later (job growth); its vintage gives both years, such as 2018-2023
  • block_percent_change: the same change as a percent of the earlier year
  • binned_rate_sum, binned_rate_mean: regional or national rates applied to the households or people in your shape, as a total or as an average per household or person (a modeled number, not a count)
  • hourly_sum: people at each hour of an average day, worked out from who lives or works in your shape
  • hourly_point_sum: students at the schools in your shape at each hour of an average weekday
  • hourly_total: people at home, at work and at school in your shape, added up hour by hour
  • line_sum: a figure of the major roads in your shape, added up, each road by the share of it inside
  • line_mean: the average over the major roads in your shape
  • line_max: the highest single stretch of major road in your shape
  • line_nearest: the figure for the major road nearest your place's point
  • line_distance: how far your place's point is from the nearest major road, in feet
hoursarray of object

For people present by hour: the number at each hour of an average day, starting with midnight to 1 am. The value above is the day's average.

resolutionany

The smallest kind of area this number is published for. If that's bigger than your shape, a warning says so.

source
required
string

Where the number comes from, such as acs5 (the Census Bureau's American Community Survey, 5-year estimates).

vintage
required
string

The years the number describes, such as 2020-2024; for building and drilling permits the months, such as 2025-10 to 2026-09; for oil and gas wells the date the state's records describe, such as 2026-10-20, or the earliest and latest where your place reaches states with different dates (2025-07-22 to 2026-10-20).

coveragenumber

For numbers we have only for some cities or states, such as building permits, oil and gas wells and layoff notices: the share of your place's homes that are in the cities (or states) whose records we have for this measure (0.2 is 20%). Below 1, the number counts only that part and the warning partial_coverage says so; at 0 there's no number.

benchmarksobject

The same number for the county, state and country, for comparison.

percentilesobject of number

Where your place ranks against the census tracts (neighborhood-sized areas) in the county, state or whole country: 80 means higher than 80% of them. Only for rates and medians.

IndexValue

An index score for one place.

FieldTypeWhat it is
valuenumber or null

The score.

scalestring

The range the score can take.

versionstring

The version of the index recipe used.

percentilesobject of number

Where your place ranks against other areas.

Warning

Something to know before relying on a number.

FieldTypeWhat it is
code
required
string
  • high_cv: less reliable, because few households were surveyed here. Treat it as a rough guide.
  • coarser_resolution: only published for larger areas, such as counties, so it's worked out from them and is less precise for your shape.
  • partial_coverage: data is missing for part of your shape or for some years (for building permits and oil and gas wells, coverage says how much is there).
  • suppressed: the source withheld this number, usually to protect people's privacy.
  • approximate_moe: the margin of error comes from a standard shortcut formula, so treat it as close rather than exact.
  • top_coded: the middle value is above the highest amount the source reports separately, so the true median is this number or more (for example, $250,000 or more).
  • bottom_coded: the middle value is below the lowest amount the source reports separately, so the true median is this number or less.
  • method_disagreement: this number depends heavily on where people live inside the areas your shape cuts through, so treat it as approximate.
  • no_base: there were none at the start of the period (such as no jobs in 2018), so there's no percent change.
  • no_roads: there are no major roads in the area, so there's no number.
  • estimated_traffic: this road's traffic wasn't counted this year, or its state doesn't say when it was, so it's the state's estimate from an earlier count.
variablestring

The measure the warning is about.

message
required
string

The warning in plain words.

AreaResult

The result for one place.

FieldTypeWhat it is
id
required
string

The name or ID you gave the place.

areaobject

Facts about the shape itself.

valuesobject of Value

The numbers you asked for, keyed by measure ID, such as income.household.median.

indicesobject of IndexValue

The index scores you asked for, keyed by index ID.

apportionmentobject

How official areas that your shape only partly covers were split.

warningsarray of Warning

Anything to know before relying on these numbers.

errorany

If this place failed, what went wrong. Failed places aren't charged.

Source

Where numbers come from.

FieldTypeWhat it is
idstring

A short ID for the source, such as acs5.

namestring

Its full name, such as U.S. Census Bureau, American Community Survey 5-year estimates.

vintagestring

The years the data describes.

licensestring

The terms the source publishes its data under.

urlstring

Where to read more about the source.

EnrichResponse

The results for your places.

FieldTypeWhat it is
request_id
required
string

An ID for this request. Include it if you contact support.

release
required
string

The data release that answered this request.

credits_used
required
integer

Credits this request used.

results
required
array of AreaResult

One result per place, in the order you sent them.

sourcesarray of Source

Every source behind the numbers in this response.

JobCostEstimate

What a /jobs file would cost, and how we read it, returned instead of a job when options.dry_run is on. Free.

FieldTypeWhat it is
dry_run
required
true
estimated_credits
required
integer

Total credits the job would use if every place works.

places
required
integer

Rows with a place we can use.

rows
required
integer

Rows in the file.

file_columnsarray of string

Your file's columns, in order.

place_columnsobject of string

Which of your columns we read as what, such as {"lat": "Latitude"}.

previewarray of array of any

Your file's first rows, as written.

problemsarray of object

The first rows we can't use, and why.

problem_countinteger

How many rows we can't use. They aren't charged.

CostEstimate

What a request would cost, returned instead of results when dry_run is on. Free.

FieldTypeWhat it is
dry_run
required
true
estimated_credits
required
integer

Total credits the request would use.

breakdownarray of object

The cost for each place.

Variable

A single measure you can ask for, such as median household income.

FieldTypeWhat it is
id
required
string

The measure's ID.

label
required
string

Its name in plain words.

topic
required
TopicId

A topic you can ask for:

  • demographics: Demographics (population, age, households, education)
  • income: Income & poverty
  • housing: Housing (homes, vacancy, owners and renters, home values, rents)
  • labor: Labor market (jobs located in the area, hiring, unemployment and residents' work)
  • businesses: Businesses & amenities (places such as grocery stores, bank branches, workplaces, public facilities)
  • health: Health (health outcomes, insurance, Medicare, care facilities, shortage areas, food access)
  • environment: Environment & hazards (natural hazards, flood zones, regulated sites, drinking water, oil and gas wells)
  • incentives: Tax incentives (Opportunity Zones and other areas where tax incentives apply)
  • transportation: Transportation (traffic, transit, EV charging, commuting, fatal crashes)
  • spending: Consumer spending (what households spend a year, estimated from their incomes)
  • timeuse: Time use (how residents spend their week, and how many people are present at each hour)
  • education: Education (public schools and colleges)
  • broadband: Broadband (home and business internet service offered, its speeds and providers)
groupstring

The group it belongs to, which is what you pay for.

type
required
string

What kind of number it is:

  • count: how many
  • rate: a share or percent
  • median: the middle value; half are above it and half below
  • average: the total divided by the number of people or households
  • modeled: estimated by a statistical model rather than a survey
  • point_count: places, permits or wells counted, such as grocery stores, solar panels installed or active oil and gas wells
  • change: how a count moved over a number of years, such as jobs gained over the last 5 years
  • distance: how far away the nearest one is, such as the nearest Superfund site
  • road: a figure of the major roads in the area, such as the traffic on the busiest one
unitstring

What it's measured in, such as people, dollars or percent.

universestring

Who or what is counted, such as households or people 25 and older.

aggregationstring

How it's combined for your shape. See aggregation on each value.

source
required
string

Where it comes from, such as acs5 (the Census Bureau's American Community Survey).

versioninteger

Goes up by one whenever a change at the source alters what the measure counts, so a measure never changes meaning silently.

geographiesarray of GeographyLevel

The kinds of area it's published for.

vintagesarray of string

The years available.

licensestring

The terms the source publishes it under.

IndexSummary

An index, meaning a single score that combines several measures.

FieldTypeWhat it is
idstring

The index's ID.

namestring

Its name in plain words.

versionstring

The current version of its recipe.

scalestring

The range the score can take, such as 0-100.

finest_geographyany

The smallest kind of area the score is available for.

IndexMethodology

How an index is built.

JobSpec

What to return for every place in your file. Works like an /enrich request.

FieldTypeWhat it is
presetstring

A ready-made request by name (GET /presets lists them): its groups and comparisons are added to anything else you ask for. Its suggested area isn't applied for you; send it as around.

topicsarray of TopicId

Whole topics. One credit for each group in the topic, per place.

groupsarray of string

Groups of related measures. One credit per group per place.

variablesarray of string

Single measures. You pay for the group each one belongs to.

indicesarray of string

Indices. Three credits each per place.

optionsEnrichOptions

Optional settings. The defaults suit most uses.

aroundobject

Turn every point in your file into an area around it: a radius (type buffer) or a drive-, walk- or bike-time area (type isochrone, 2 credits each to draw). Rows that are already shapes or official areas are used as they are.

output_formatstring

The results file: csv (a spreadsheet), geojson (a map file, with each place's outline) or parquet (a compact data file). One row per place, in the order you sent them, with columns id, error and error_detail (if the place failed), area_km2, then each measure by its ID (in a preset's order, if you asked for one) with its margin of error as <id>.moe where it has one (counts from employer records and of places don't), its comparisons as <id>.county, <id>.state and <id>.us and its ranks as <id>.percentile.<county|state|us> when you ask for benchmarks, and a warnings column. Files with addresses also get address_found (the address the geocoder matched) and address_match (exact or close). Default "csv".

columnsstring

The results' column names: ids (measure IDs, such as income.household.median) or labels (plain words with the unit, such as "Median household income (dollars)" and "Median household income (dollars), margin of error"), with the warnings in plain words too. Default "ids".

place_columnsobject of string or null

Which of your columns hold what, when their names aren't the usual ones, such as {"lat": "North", "lon": "East"} or {"address": "Where"}. The keys are id, lat, lon, geoid, wkt, address, street, city, state and zip; null for one stops us guessing it.

keep_columnsboolean

Repeat every column of your file in the results, before ours, so each row reads as your row plus its numbers. A name we'd use that your file already has gets ' (Kadrin)' added. Default false.

webhook_urlstring

Optional. An https address on the public internet that we call when the job finishes, with only the job's ID and status; fetch the details with GET /jobs/{id} and your key.

Job

A large upload and its progress.

FieldTypeWhat it is
id
required
string

The job's ID. Use it to check progress.

status
required
string

queued (waiting to start), running, succeeded, failed (nothing is charged) or canceled.

areas_totalinteger

Places in your file.

areas_doneinteger

Places finished so far.

estimated_creditsinteger

Expected cost in credits.

credits_usedinteger

Credits used so far.

results_urlstring or null

Link to download the results once the job has finished (or was canceled part way). Expires after 7 days.

releasestring

The data release the job uses, fixed when it was accepted.

expires_atstring or null

When the results are deleted.

file_namestring or null

The name of the file you sent.

presetstring or null

The preset you asked for, if any.

created_atstring

When we accepted the job.

finished_atstring or null

When it finished.

errorany

If the job failed, what went wrong.

Problem

What went wrong, in plain words. Failed requests are never charged.

FieldTypeWhat it is
type
required
string

A link to more help on this kind of error, in the docs: https://docs.kadrindata.com/errors#.

title
required
string

A short summary of the error.

status
required
integer

The HTTP status code, a standard number for the kind of error, such as 400 (something in the request needs fixing).

code
required
string
  • invalid_request: something in the request needs fixing, such as broken JSON, no places, more than 100 places, or an option we don't recognize. The detail names it.
  • invalid_geometry: we couldn't read a shape, for example because its outline crosses itself.
  • unknown_topic, unknown_variable: we don't recognize that topic or measure ID. Check the catalog.
  • topic_unavailable: that topic isn't available yet.
  • invalid_key: the API key is missing or wrong.
  • insufficient_credits: not enough credits, or the cost is over your Kadrin-Max-Credits limit.
  • scope_denied: your key isn't allowed to do this.
  • geometry_too_large: a shape is bigger than the limit.
  • unavailable_combination: that measure isn't available for that kind of area or those years.
  • rate_limited: too many requests too quickly. Wait a moment and try again.
  • routing_unavailable: we can't draw drive-time areas right now. Try again shortly.
  • not_found: there's nothing with that ID.
  • internal_error: something broke on our side. Try again, and contact support with the request_id if it keeps happening.
  • address_not_found: in a /jobs file, we couldn't find a row's address. Check it for typos, or give lat and lon instead.
detailstring

What happened and what to do next.

area_idstring

Which place failed, if the error is about one place.

request_idstring

An ID for this request. Include it if you contact support.