LMP Based Due Date Calculation API

API ID 13381

Due date from last menstrual period using Naegele's rule, with 21-45 day cycle length correction.

API Documentation

Endpoints

Request
Calculates the estimated due date (EDD) from any one of five dating methods, selected with the "method" field: - method=lmp — Naegele's rule from the last menstrual period, with optional cycle_length (21-45, default 28) and luteal_phase_length (8-20, default 14) correction. Naegele assumes a 28-day cycle; a 32-day cycle moves the EDD four days later. - method=conception — conception date + 266 days. - method=ivf — transfer_date + (266 - embryo_age_days). embryo_age_days is 0 for egg retrieval, or 3, 5, or 6 for a day-3, day-5 (blastocyst), or day-6 transfer. A day-3 and a day-5 transfer on the same date give due dates exactly two days apart. - method=ultrasound_crl — first-trimester dating from crown-rump length in millimeters, using Robinson-Fleming 1975 (the formula NICE, RCOG, and ISUOG cite as the first-trimester standard). The response flags whether the measurement fell inside that study's own validated 5-84 mm range. - method=ultrasound_biometry — second/third-trimester dating from BPD, HC, AC, and/or FL in millimeters, using Hadlock 1984. Supplying all four uses Hadlock's own multi-parameter composite regression; fewer than four use the individual formulas and reports exactly, which were applied. - method=reverse — conception date from a known EDD. Set multiple_gestation=true for an informational flag; it does not alter the EDD. For irregular cycles, send cycle_length_range as [min, max] instead of cycle_length, and the response returns edd_earliest, edd_latest, and a labeled midpoint rather than a single false-precision date. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28641
POST https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28641/calculate+estimated+due+date
INPUT PARAMETERS

Calculate Estimated Due Date — Endpoint Features

Object Description
Request Body Required Json
Request Body Required Json

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

API EXAMPLE RESPONSE
JSON
{
    "method": "lmp",
    "edd": "2026-10-15",
    "conception_date": "2026-01-22",
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance."
    }
}
Calculate Estimated Due Date — CODE SNIPPETS

curl --location --request POST 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28641/calculate+estimated+due+date' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{"method": "lmp", "lmp": "2026-01-04", "cycle_length": 32}'

    
Request
Query-string version of the estimated due date calculation — same methods, same parameters, same response as POST /v1/edd, callable from a browser or a one-line curl with no request body. Example: ?method=ivf&transfer_date=2026-03-01&embryo_age_days=5 Supports method=lmp, conception, IVF, ultrasound_crl, ultrasound_biometry, and reverse. See POST /v1/edd for the full parameter list per method. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28642
GET https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28642/get+estimated+due+date
INPUT PARAMETERS

Get Estimated Due Date — Endpoint Features

Object Description
method Required One of: lmp, conception, ivf, ultrasound_crl, ultrasound_biometry, reverse.
transfer_date Optional Embryo transfer or egg retrieval date, ISO 8601. Required when method=ivf.
embryo_age_days Optional 0 (egg retrieval), 3, 5 or 6 (transfer day). Required when method=ivf.
lmp Optional Last menstrual period, ISO 8601. Required when method=lmp.
cycle_length Optional Cycle length in days, 21-45. Default 28. Used with method=lmp.
conception_date Optional ISO 8601 date. Required when method=conception.
scan_date Optional Ultrasound date, ISO 8601. Required for both ultrasound methods.
crl_mm Optional Crown-rump length in millimetres. Required when method=ultrasound_crl.
edd Optional Estimated due date, ISO 8601. Required when method=reverse.

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

method
transfer_date
embryo_age_days
lmp
cycle_length
conception_date
scan_date
crl_mm
edd
API EXAMPLE RESPONSE
JSON
{
    "method": "ivf",
    "edd": "2026-11-17",
    "conception_date": "2026-02-24",
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance."
    }
}
Get Estimated Due Date — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28642/get+estimated+due+date?method=ivf&transfer_date=2026-03-01&embryo_age_days=5' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Decides whether an ultrasound measurement should override LMP-based dating by applying Table 1 of ACOG Committee Opinion 700 "Methods for Estimating the Due Date" (2017, reaffirmed 2022): Gestational age at scan Measurement Redate if discrepancy 5 days 9w0d - 13w6d CRL > 7 days 14w0d - 15w6d BPD, HC, AC, FL > 7 days 16w0d - 21w6d BPD, HC, AC, FL > 10 days 22w0d - 27w6d BPD, HC, AC, FL > 14 days >= 28w0d BPD, HC, AC, FL > 21 days The gestational-age row is selected by the LMP-derived gestational age at the scan, per the source table's own footnote—not by the ultrasound-derived gestational age. Implementations that use the ultrasound age instead can flip the redating decision near a row boundary. Send lmp and scan_date, plus either crl_mm (first trimester) or one or more of bpd_mm, hc_mm, ac_mm, fl_mm (second/third trimester), all in millimeters. Returns both candidate due dates, which one the rule selects (edd_used), the discrepancy in days, a boolean redated flag, and the exact rule that fired. Also returns within_acog_guideline: false with a specific note when the measurement supplied is not the one ACOG recommends at that gestational age—for example, a crown-rump length past 13w6d. Out-of-guideline measurements are still calculated and returned, never silently rejected, but they are flagged so a careful client can branch on them. The suboptimally_dated flag reports ACOG's own definition: no ultrasound confirming or revising the due date before 22w0d. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28643
POST https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28643/apply+acog+ultrasound+redating+rules
INPUT PARAMETERS

Apply ACOG Ultrasound Redating Rules — Endpoint Features

Object Description
Request Body Required Json
Request Body Required Json

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

API EXAMPLE RESPONSE
JSON
{
    "edd_lmp": "2026-10-08",
    "edd_ultrasound": "2026-10-21",
    "edd_used": "2026-10-21",
    "ga_lmp_at_scan": "10w3d",
    "ga_ultrasound_at_scan": "8w4d",
    "discrepancy_days": 13,
    "redated": true,
    "rule_applied": "9w0d-13w6d: redate if discrepancy > 7 days (ACOG CO 700 Table 1)",
    "within_acog_guideline": true,
    "guideline_note": null,
    "suboptimally_dated": false,
    "formula": "robinson_fleming_1975",
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance.",
        "as_of": "2026-03-15",
        "citation": "ACOG Committee Opinion 700 (2017, reaffirmed 2022), Table 1."
    }
}
Apply ACOG Ultrasound Redating Rules — CODE SNIPPETS

curl --location --request POST 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28643/apply+acog+ultrasound+redating+rules' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{"lmp": "2026-01-01", "scan_date": "2026-03-15", "crl_mm": 20}'

    
Request
Query-string version of the ACOG Committee Opinion 700 redating decision — same rules, same response as POST /v1/redate, callable without a request body. Example: ?lmp=2025-10-01&scan_date=2026-05-01&bpd_mm=85&hc_mm=300&ac_mm=280&fl_mm=65 Send lmp and scan_date plus either crl_mm or one or more of bpd_mm, hc_mm, ac_mm, fl_mm. See POST /v1/redate for the full rule table. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28644
GET https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28644/get+acog+redating+decision
INPUT PARAMETERS

Get ACOG Redating Decision — Endpoint Features

Object Description
lmp Required Last menstrual period, ISO 8601.
scan_date Optional Date the ultrasound was performed, ISO 8601.
bpd_mm Optional Biparietal diameter in millimetres.
hc_mm Optional Head circumference in millimetres.
ac_mm Optional Abdominal circumference in millimetres.
fl_mm Optional Femur length in millimetres.
crl_mm Optional Crown-rump length in millimetres. First trimester; mutually exclusive with the four above.
cycle_length Optional Cycle length in days, 21-45. Default 28.

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

lmp
scan_date
bpd_mm
hc_mm
ac_mm
fl_mm
crl_mm
cycle_length
API EXAMPLE RESPONSE
JSON
{
    "edd_lmp": "2026-07-08",
    "edd_ultrasound": "2026-06-19",
    "edd_used": "2026-07-08",
    "ga_lmp_at_scan": "30w2d",
    "ga_ultrasound_at_scan": "33w0d",
    "discrepancy_days": 19,
    "redated": false,
    "rule_applied": ">=28w0d: redate if discrepancy > 21 days (ACOG CO 700 Table 1)",
    "within_acog_guideline": true,
    "guideline_note": null,
    "suboptimally_dated": true,
    "formula": "hadlock_1984_composite",
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance.",
        "as_of": "2026-05-01",
        "citation": "ACOG Committee Opinion 700 (2017, reaffirmed 2022), Table 1."
    }
}
Get ACOG Redating Decision — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28644/get+acog+redating+decision?lmp=2025-10-01&scan_date=2026-05-01&bpd_mm=86&hc_mm=300&ac_mm=280&fl_mm=65' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Returns the gestational age on any given date, as both a "29w2d" style label and a total number of days. Send as_of (the date to measure at) plus exactly one of edd or lmp. When sending lmp, an optional cycle_length (21-45, default 28) is applied first. as_of is always required and never defaults to the server's current date, so the same request returns the same answer indefinitely. That also makes the endpoint work retrospectively: pass a past delivery date as as_of to get the gestational age at delivery. A combination implying a negative gestational age is rejected with a specific error rather than a nonsense number. A gestational age beyond 44w0d returns normally with a machine-readable entry in the warnings array, since retrospective and edge-case queries are legitimate. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28645
POST https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28645/calculate+gestational+age
INPUT PARAMETERS

Calculate Gestational Age — Endpoint Features

Object Description
Request Body Required Json

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

API EXAMPLE RESPONSE
JSON
{
    "edd": "2026-10-11",
    "gestational_age": {
        "label": "29w2d",
        "total_days": 205
    },
    "warnings": [],
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance.",
        "as_of": "2026-07-28"
    }
}
Calculate Gestational Age — CODE SNIPPETS

curl --location --request POST 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28645/calculate+gestational+age' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{"as_of": "2026-07-28", "edd": "2026-10-11"}'

    
Request
Query-string version of the gestational age calculation — same parameters and response as POST /v1/gestational-age. Example: ?as_of=2026-07-28&lmp=2026-01-04 Send as_of plus exactly one of edd or lmp. Returns gestational age as a "29w2d" label and as total days. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28646
GET https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28646/get+gestational+age
INPUT PARAMETERS

Get Gestational Age — Endpoint Features

Object Description
as_of Required The date to compute gestational age at, ISO 8601. Never defaults to today.
lmp Optional Last menstrual period, ISO 8601. Send exactly one of lmp or edd.
edd Optional Estimated due date, ISO 8601. Send exactly one of lmp or edd.
cycle_length Optional Cycle length in days, 21-45. Default 28. Only used with lmp.

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

as_of
lmp
edd
cycle_length
API EXAMPLE RESPONSE
JSON
{
    "edd": "2026-10-11",
    "gestational_age": {
        "label": "29w2d",
        "total_days": 205
    },
    "warnings": [],
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance.",
        "as_of": "2026-07-28"
    }
}
Get Gestational Age — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28646/get+gestational+age?as_of=2026-07-28&lmp=2026-01-04' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Returns the full milestone calendar for a pregnancy: the calendar date each boundary falls on, plus the current status at a given date. Send as_of plus exactly one of edd or lmp. Trimester boundaries follow ACOG: trimester 1 through 13w6d, trimester 2 from 14w0d to 27w6d, and trimester 3 from 28w0d. Viability is reported at 24w0d. Term classification covers every category with its start date: extreme preterm (before 28w0d), very preterm (28w0d-31w6d), moderate preterm (32w0d-33w6d), late preterm (34w0d-36w6d), early term (37w0d-38w6d), full term (39w0d-40w6d), late term (41w0d-41w6d), and post-term (42w0d onward). The term_class_if_delivered_today field names which category a delivery on the as_of date would fall into. Antenatal visit dates are returned for a selectable published schedule: schedule=who_2016 (default, 8 contacts at 12, 20, 26, 30, 34, 36, 38, and 40 weeks), schedule=nice (10 appointments for nulliparous or 7 for parous—parity is then required), or schedule=acog (the traditional US cadence of every 4 weeks to 28 w, every 2 weeks to 36 w, then weekly). Postpartum: Send delivery_date for the six-week check from the actual delivery, or omit it to get a projection from the due date. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28647
POST https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28647/get+pregnancy+milestones+and+visit+schedule
INPUT PARAMETERS

Get Pregnancy Milestones and Visit Schedule — Endpoint Features

Object Description
Request Body Required Json

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

API EXAMPLE RESPONSE
JSON
{
    "edd": "2026-10-11",
    "gestational_age": {
        "label": "29w2d",
        "total_days": 205
    },
    "trimester": 3,
    "is_viable": true,
    "term_class_if_delivered_today": "very_preterm",
    "milestones": {
        "trimester_2_start": "2026-04-12",
        "trimester_3_start": "2026-07-19",
        "viability": "2026-06-21",
        "very_preterm_start": "2026-07-19",
        "moderate_preterm_start": "2026-08-16",
        "late_preterm_start": "2026-08-30",
        "early_term_start": "2026-09-20",
        "full_term_start": "2026-10-04",
        "late_term_start": "2026-10-18",
        "post_term_start": "2026-10-25"
    },
    "visit_schedule": {
        "schedule": "who_2016",
        "parity": null,
        "visits": [
            {
                "week": 12,
                "date": "2026-03-29"
            },
            {
                "week": 20,
                "date": "2026-05-24"
            },
            {
                "week": 26,
                "date": "2026-07-05"
            },
            {
                "week": 30,
                "date": "2026-08-02"
            },
            {
                "week": 34,
                "date": "2026-08-30"
            },
            {
                "week": 36,
                "date": "2026-09-13"
            },
            {
                "week": 38,
                "date": "2026-09-27"
            },
            {
                "week": 40,
                "date": "2026-10-11"
            }
        ]
    },
    "postpartum": {
        "projected_six_week_check": "2026-11-22"
    },
    "warnings": [],
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance.",
        "as_of": "2026-07-28"
    }
}
Get Pregnancy Milestones and Visit Schedule — CODE SNIPPETS

curl --location --request POST 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28647/get+pregnancy+milestones+and+visit+schedule' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{"as_of": "2026-07-28", "edd": "2026-10-11"}'

    
Request
Query-string version of the pregnancy milestone calendar — same parameters and response as POST /v1/milestones. Example: ?as_of=2026-07-28&edd=2026-10-11&schedule=who_2016 Returns trimester boundaries, viability date, every preterm and term class with its start date, antenatal visit dates for the selected published schedule, and postpartum checkup dates. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28649
GET https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28649/list+pregnancy+milestones
INPUT PARAMETERS

List Pregnancy Milestones — Endpoint Features

Object Description
as_of Required The date to report current status at, ISO 8601.
edd Optional Estimated due date, ISO 8601. Send exactly one of edd or lmp.
lmp Optional Last menstrual period, ISO 8601. Send exactly one of edd or lmp.
schedule Optional Antenatal visit schedule: who_2016 (default), acog, or nice.
parity Optional nulliparous or parous. Required only when schedule=nice.
delivery_date Optional Actual delivery date, ISO 8601. Omit to project postpartum dates from the due date.

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

as_of
edd
lmp
schedule
parity
delivery_date
API EXAMPLE RESPONSE
JSON
{
    "edd": "2026-10-11",
    "gestational_age": {
        "label": "29w2d",
        "total_days": 205
    },
    "trimester": 3,
    "is_viable": true,
    "term_class_if_delivered_today": "very_preterm",
    "milestones": {
        "trimester_2_start": "2026-04-12",
        "trimester_3_start": "2026-07-19",
        "viability": "2026-06-21",
        "very_preterm_start": "2026-07-19",
        "moderate_preterm_start": "2026-08-16",
        "late_preterm_start": "2026-08-30",
        "early_term_start": "2026-09-20",
        "full_term_start": "2026-10-04",
        "late_term_start": "2026-10-18",
        "post_term_start": "2026-10-25"
    },
    "visit_schedule": {
        "schedule": "who_2016",
        "parity": null,
        "visits": [
            {
                "week": 12,
                "date": "2026-03-29"
            },
            {
                "week": 20,
                "date": "2026-05-24"
            },
            {
                "week": 26,
                "date": "2026-07-05"
            },
            {
                "week": 30,
                "date": "2026-08-02"
            },
            {
                "week": 34,
                "date": "2026-08-30"
            },
            {
                "week": 36,
                "date": "2026-09-13"
            },
            {
                "week": 38,
                "date": "2026-09-27"
            },
            {
                "week": 40,
                "date": "2026-10-11"
            }
        ]
    },
    "postpartum": {
        "projected_six_week_check": "2026-11-22"
    },
    "warnings": [],
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance.",
        "as_of": "2026-07-28"
    }
}
List Pregnancy Milestones — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28649/list+pregnancy+milestones?as_of=2026-07-28&edd=2026-10-11&schedule=who_2016' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Returns the estimated ovulation date, the fertile window, and the next N predicted period start dates from a last menstrual period and cycle length. Ovulation is estimated as lmp + (cycle_length - luteal_phase_length), with cycle_length 21-45 (default 28) and luteal_phase_length 8-20 (default 14), so a known short or long luteal phase can be supplied directly rather than assumed. The fertile window spans 5 days before ovulation through 1 day after, a 6-day window, following ACOG's published patient guidance: sperm can survive up to 5 days, and the egg remains viable roughly 12-24 hours. Set n (1-24, default 6) for how many future period dates to return. Reference implementation — informational only, not clinical advice, not for diagnostic use, and not contraceptive guidance. These are calendar estimates from a published formula, not a method of preventing or achieving pregnancy.
Endpoint ID: 28651
POST https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28651/calculate+ovulation+and+fertile+window
INPUT PARAMETERS

Calculate Ovulation and Fertile Window — Endpoint Features

Object Description
Request Body Required Json
Request Body Required Json

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

API EXAMPLE RESPONSE
JSON
{
    "lmp": "2026-01-01",
    "ovulation_estimate": "2026-01-17",
    "fertile_window": {
        "start": "2026-01-12",
        "end": "2026-01-18"
    },
    "next_periods": [
        "2026-01-31",
        "2026-03-02",
        "2026-04-01"
    ],
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance."
    }
}
Calculate Ovulation and Fertile Window — CODE SNIPPETS

curl --location --request POST 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28651/calculate+ovulation+and+fertile+window' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{"lmp": "2026-01-01", "cycle_length": 30, "n": 3}'

    
Request
Query-string version of the ovulation, fertile window, and period prediction calculation—same parameters and response as POST /v1/cycle. Example: ?lmp=2026-01-01&cycle_length=30&n=3 Reference implementation — informational only, not clinical advice, not for diagnostic use, and not contraceptive guidance.
Endpoint ID: 28652
GET https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28652/get+ovulation+and+fertile+window
INPUT PARAMETERS

Get Ovulation and Fertile Window — Endpoint Features

Object Description
lmp Required Last menstrual period, ISO 8601.
cycle_length Optional Cycle length in days, 21-45. Default 28.
luteal_phase_length Optional Luteal phase length in days, 8-20. Default 14.
n Optional Number of future period dates to predict, 1-24. Default 6.

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

lmp
cycle_length
luteal_phase_length
n
API EXAMPLE RESPONSE
JSON
{
    "lmp": "2026-01-01",
    "ovulation_estimate": "2026-01-17",
    "fertile_window": {
        "start": "2026-01-12",
        "end": "2026-01-18"
    },
    "next_periods": [
        "2026-01-31",
        "2026-03-02",
        "2026-04-01"
    ],
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance."
    }
}
Get Ovulation and Fertile Window — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28652/get+ovulation+and+fertile+window?lmp=2026-01-01&cycle_length=30&n=3' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Runs up to 25 calculations in a single request. Send an items array where each entry names an endpoint—edd, gestational_age, redate, milestones, or cycle—and a params object identical to what that endpoint accepts directly. Results come back in the same order, each tagged with its index and its own HTTP-style status. A failing item returns its own specific error in results[i].error and does not fail the rest of the batch, so one malformed row in a list of 25 does not cost you the other 24. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28655
POST https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28655/batch+multiple+pregnancy+calculations
INPUT PARAMETERS

Batch Multiple Pregnancy Calculations — Endpoint Features

Object Description
Request Body Required Json
Request Body Required Json

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

API EXAMPLE RESPONSE
JSON
{
    "results": [
        {
            "index": 0,
            "status": 200,
            "body": {
                "method": "lmp",
                "edd": "2026-10-08",
                "conception_date": "2026-01-15",
                "meta": {
                    "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance."
                }
            }
        },
        {
            "index": 1,
            "status": 200,
            "body": {
                "edd": "2026-10-11",
                "gestational_age": {
                    "label": "29w2d",
                    "total_days": 205
                },
                "warnings": [],
                "meta": {
                    "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance.",
                    "as_of": "2026-07-28"
                }
            }
        }
    ],
    "meta": {
        "disclaimer": "Reference implementation. Informational only -- not clinical advice, not for diagnostic use, not contraceptive guidance."
    }
}
Batch Multiple Pregnancy Calculations — CODE SNIPPETS

curl --location --request POST 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28655/batch+multiple+pregnancy+calculations' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{"items": [
  {"endpoint": "edd", "params": {"method": "lmp", "lmp": "2026-01-01"}},
  {"endpoint": "gestational_age", "params": {"as_of": "2026-07-28", "edd": "2026-10-11"}}
]}'

    
Request
Returns a machine-readable catalog of every endpoint, every dating method, and the input each one accepts. Lets a developer or an AI agent discover what this API can do without reading the documentation first. Takes no parameters. Reference implementation — informational only, not clinical advice, not for diagnostic use, not contraceptive guidance.
Endpoint ID: 28656
GET https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28656/list+available+methods+and+parameters
INPUT PARAMETERS

Free test requests remaining: 3 of 3.

This endpoint does not require any input parameters.

API EXAMPLE RESPONSE
JSON
{
    "endpoints": [
        {
            "path": "/v1/edd",
            "methods": [
                "conception",
                "ivf",
                "lmp",
                "reverse",
                "ultrasound_biometry",
                "ultrasound_crl"
            ]
        },
        {
            "path": "/v1/gestational-age",
            "input": [
                "edd",
                "lmp"
            ]
        },
        {
            "path": "/v1/redate",
            "input": [
                "crl_mm",
                "bpd_mm/hc_mm/ac_mm/fl_mm"
            ]
        },
        {
            "path": "/v1/milestones",
            "schedules": [
                "who_2016",
                "acog",
                "nice"
            ]
        },
        {
            "path": "/v1/cycle",
            "input": [
                "lmp",
                "cycle_length",
                "luteal_phase_length",
                "n"
            ]
        },
        {
            "path": "/v1/batch",
            "max_items": 25,
            "endpoints": [
                "cycle",
                "edd",
                "gestational_age",
                "milestones",
                "redate"
            ]
        }
    ]
}
List Available Methods and Parameters — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/13381/lmp+based+due+date+calculation+api/28656/list+available+methods+and+parameters' --header 'Authorization: Bearer YOUR_API_KEY' 


    

API Access Key & Authentication

After signing up, every developer is assigned a personal API access key, a unique combination of letters and digits provided to access to our API endpoint. To authenticate with the LMP Based Due Date Calculation API simply include your bearer token in the Authorization header.

Headers
Header Description
Authorization Required Should be Bearer access_key. See "Your API Access Key" above when you are subscribed.

No long-term commitment. Upgrade, downgrade, or cancel anytime. Free Trial includes up to 50 requests.

(Save 2 months with annual billing 🎉)

🚀 Enterprise Plan

Starts at
$ 10,000/Year


  • Custom Volume
  • Custom Rate Limit
  • Specialized Customer Support
  • Real-Time API Monitoring
zeiss-logo amazon-logo zoom-logo decathlon-logo

Trusted by leading companies

Overview

Due date from last menstrual period using Naegele's rule, with 21-45 day cycle length correction.

LMP Based Due Date Calculation API FAQs

Naegele's rule: the due date is the last menstrual period plus 280 days, adjusted for cycle length when it differs from 28 days. You can also date from a conception date (+266 days), an IVF transfer, or an ultrasound measurement. Every response names which formula produced the answer.

Yes. /v1/redate implements Table 1 of ACOG Committee Opinion 700 (2017, reaffirmed 2022) in full, including the detail most implementations miss: the gestational-age row is selected by the LMP-derived age at the scan, per the table's own footnote, not the ultrasound-derived age. The response tells you which rule fired, the discrepancy in days, and whether the measurement you sent is the one ACOG recommends at that gestational age.

They are calculated separately: due date = transfer date + (266 − embryo age in days). A day-3 transfer gives transfer + 263 days, a day-5 blastocyst gives transfer + 261, a day-6 gives transfer + 260, and egg retrieval gives retrieval + 266. Day-3 and day-5 transfers on the same date are two days apart — a difference generic calculators usually collapse.

Crown-rump length uses Robinson–Fleming 1975 (Br J Obstet Gynaecol 1975;82:702-710), the equation NICE, RCOG and ISUOG cite as the first-trimester standard. BPD, HC, AC and FL use Hadlock 1984 (Radiology 1984;152:497-501), and supplying all four uses Hadlock's own multi-parameter composite regression. Every response names the exact formula applied.

Yes. No endpoint reads the server clock. Any calculation that depends on "today" requires an explicit as_of date, and omitting it returns a specific error rather than a silent guess. The same request returns the same answer indefinitely within /v1, which makes responses safe to cache and test against.

Send cycle_length_range as [min, max] instead of a single cycle_length. The response returns edd_earliest, edd_latest, a clearly labelled midpoint and the range width in days, rather than a single date implying precision the input does not support.

Yes. as_of accepts any date, so passing a past delivery date returns the gestational age at delivery. /v1/milestones also reports which term category that delivery would fall into — early term, full term, late term, post-term, or one of the four preterm subcategories.

No. The API is stateless and stores nothing. Request logs record only the endpoint, status code, response time and which marketplace the request came from — never a date, a measurement, a cycle length, or a computed result.

No. This is a reference implementation of published date formulas and guideline tables, for informational and software-integration use. It is not clinical advice, not for diagnostic use, and not contraceptive guidance. Every response carries that statement in its meta.disclaimer field.

Yes, a 7-day trial with up to 50 requests, so you can verify the calculations against your own reference cases before committing to a plan.

General FAQs

To obtain your API key, first sign in to your account and navigate to the API you want to use. From the API's Pricing section, choose a plan and complete the subscription process. Once subscribed, return to the API page and you will see your API Access Key displayed at the top of the documentation page. You can use this key to authenticate your requests.

You can’t switch APIs during the free trial. If you subscribe to a different API, your trial will end and the new subscription will start as a paid plan.

The free trial lasts for 7 days and allows you to make up to 50 API requests.

No, the free trial is available only once, so we recommend using it on the API that interests you the most. Most of our APIs offer a free trial, but some may not include this option.

Yes. If the API offers a free trial, you will see a "Free 7-Day Trial" option in its Pricing section. The trial lasts for 7 days and allows up to 50 API requests, enabling you to evaluate the API before subscribing to a paid plan.

Zyla API Hub is like a big store for APIs, where you can find thousands of them all in one place. We also offer dedicated support and real-time monitoring of all APIs. Once you sign up, you can pick and choose which APIs you want to use. Just remember, each API needs its own subscription. But if you subscribe to multiple ones, you'll use the same key for all of them, making things easier for you.

Prices are listed in USD (United States Dollar), EUR (Euro), CAD (Canadian Dollar), AUD (Australian Dollar), and GBP (British Pound). We accept all major debit and credit cards. Our payment system uses the latest security technology and is powered by Stripe, one of the world's most reliable payment companies. If you have any trouble paying by card, just contact us at [email protected]

Additionally, if you already have an active subscription in any of these currencies (USD, EUR, CAD, AUD, GBP), that currency will remain for subsequent subscriptions. You can change the currency at any time as long as you don't have any active subscriptions.
The local currency shown on the pricing page is based on the country of your IP address and is provided for reference only. The actual prices are in USD (United States Dollar). When you make a payment, the charge will appear on your card statement in USD, even if you see the equivalent amount in your local currency on our website. This means you cannot pay directly with your local currency.
Occasionally, a bank may decline the charge due to its fraud protection settings. We suggest reaching out to your bank initially to check if they are blocking our charges. Also, you can access the Billing Portal and change the card associated to make the payment. If these does not work and you need further assistance, please contact our team at [email protected]
Prices are determined by a recurring monthly or yearly subscription, depending on the chosen plan.
API calls are deducted from your plan based on successful requests. Each plan comes with a specific number of calls that you can make per month. Only successful calls, indicated by a Status 200 response, will be counted against your total. This ensures that failed or incomplete requests do not impact your monthly quota.
Zyla API Hub works on a recurring monthly subscription system. Your billing cycle will start the day you purchase one of the paid plans, and it will renew the same day of the next month. So be aware to cancel your subscription beforehand if you want to avoid future charges.
To upgrade your current subscription plan, simply go to the pricing page of the API and select the plan you want to upgrade to. The upgrade will be instant, allowing you to immediately enjoy the features of the new plan. Please note that any remaining calls from your previous plan will not be carried over to the new plan, so be aware of this when upgrading. You will be charged the full amount of the new plan.
To check how many API calls you have left for the current month, refer to the 'X-Zyla-API-Calls-Monthly-Remaining' field in the response header. For example, if your plan allows 1,000 requests per month and you've used 100, this field in the response header will indicate 900 remaining calls.

You can monitor your API usage through the response headers included with every request:

x-zyla-api-calls-monthly-used: Shows the total number of API requests you have used during the current billing period.
x-zyla-api-calls-monthly-remaining: Shows the number of API requests you have remaining for the current billing period.

The 'X-Zyla-RateLimit-Reset' header shows the number of seconds until your rate limit resets. This tells you when your request count will start fresh. For example, if it displays 3,600, it means 3,600 seconds are left until the limit resets.

Yes, you can cancel your subscription at any time. Simply go to the Pricing section of the API you're subscribed to and click the "Unsubscribe" button.

Please note that upgrades, downgrades, and cancellations take effect immediately. Once your subscription is canceled, access to the service will end immediately, regardless of any remaining API calls in your quota.

After 7 days, you will be charged the full amount for the plan you were subscribed to during the trial. Therefore, it's important to cancel before the trial period ends. Refund requests for forgetting to cancel on time are not accepted.
When you subscribe to an API free trial, you can make up to 50 API calls. If you wish to make additional API calls beyond this limit, the API will prompt you to perform an "Start Your Paid Plan." You can find the "Start Your Paid Plan" button in your profile under Subscription -> Choose the API you are subscribed to -> Pricing tab.
You can contact us through our chat channel to receive immediate assistance. We are always online from 8 am to 5 pm (EST). If you reach us after that time, we will get back to you as soon as possible. Additionally, you can contact us via email at [email protected]

Please have a look at our Refund Policy: https://zylalabs.com/terms#refund


Related APIs