{
"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."
}
}
curl --location --request POST 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28701/calculate+estimated+due+date' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{"method": "lmp", "lmp": "2026-01-04", "cycle_length": 32}'
{
"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."
}
}
curl --location --request GET 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28702/get+estimated+due+date?method=ivf&transfer_date=2026-03-01&embryo_age_days=5' --header 'Authorization: Bearer YOUR_API_KEY'
{
"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."
}
}
curl --location --request POST 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28703/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}'
{
"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."
}
}
curl --location --request GET 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28704/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'
{
"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"
}
}
curl --location --request POST 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28705/calculate+gestational+age' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{"as_of": "2026-07-28", "edd": "2026-10-11"}'
{
"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"
}
}
curl --location --request GET 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28706/get+gestational+age?as_of=2026-07-28&lmp=2026-01-04' --header 'Authorization: Bearer YOUR_API_KEY'
{
"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"
}
}
curl --location --request POST 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28707/get+pregnancy+milestones+and+visit+schedule' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{"as_of": "2026-07-28", "edd": "2026-10-11"}'
{
"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"
}
}
curl --location --request GET 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28708/list+pregnancy+milestones?as_of=2026-07-28&edd=2026-10-11&schedule=who_2016' --header 'Authorization: Bearer YOUR_API_KEY'
{
"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."
}
}
curl --location --request POST 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28709/calculate+ovulation+and+fertile+window' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{"lmp": "2026-01-01", "cycle_length": 30, "n": 3}'
{
"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."
}
}
curl --location --request GET 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28710/get+ovulation+and+fertile+window?lmp=2026-01-01&cycle_length=30&n=3' --header 'Authorization: Bearer YOUR_API_KEY'
{
"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."
}
}
curl --location --request POST 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28711/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"}}
]}'
{
"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"
]
}
]
}
curl --location --request GET 'https://zylalabs.com/api/13389/conception+date+from+lmp+calculation+api/28712/list+available+methods+and+parameters' --header 'Authorization: Bearer YOUR_API_KEY'
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 Conception Date from LMP Calculation API simply include your bearer token in the Authorization header.
| 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 🎉)
Trusted by leading companies
Conception date from a last menstrual period or from a known due date, as ISO 8601 dates
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.
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.
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.
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.
Please have a look at our Refund Policy: https://zylalabs.com/terms#refund