API reference

Families

Read and create families, edit a couple's status or events, and add or remove partners and children.

Paths are relative to https://kleiobase.com/api/v1.

get/workspaces/{workspace_id}/families

List families

NameInRequiredDescription
workspace_idpathyesThe workspace (project) id.
limitquerynoPage size. Default 25, max 100.
cursorquerynoThe next_cursor of the previous page. Opaque.

Responses

  • 200 A page of families. (FamilyList)
  • 401 Missing, malformed, unknown or revoked API key. (ErrorResponse)
  • 403 The account has no paid plan. (ErrorResponse)
  • 404 The workspace does not exist or is not visible to this key's owner. (ErrorResponse)
  • 422 Invalid limit or cursor. (ErrorResponse)
  • 429 Rate limit exceeded. Wait the number of seconds in Retry-After. (ErrorResponse)
  • 500 Unexpected error. Retry later and quote request_id if it persists. (ErrorResponse)
200 response schema
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "workspace_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "partners": {
            "maxItems": 2,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "person_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "husband",
                    "wife"
                  ]
                }
              },
              "required": [
                "person_id",
                "role"
              ]
            }
          },
          "children": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "person_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                },
                "pedigree": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "person_id",
                "pedigree"
              ]
            }
          },
          "marriage": {
            "type": "object",
            "properties": {
              "date": {
                "description": "The marriage date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the marriage happened but its date is unknown; null means no marriage is recorded.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "year": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "place": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "type": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "date",
              "year",
              "place",
              "type"
            ]
          },
          "divorce": {
            "type": "object",
            "properties": {
              "date": {
                "description": "The divorce date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the divorce happened but its date is unknown; null means no divorce is recorded.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "year": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "place": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "date",
              "year",
              "place"
            ]
          },
          "created_at": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "workspace_id",
          "partners",
          "children",
          "marriage",
          "divorce",
          "created_at"
        ]
      }
    },
    "next_cursor": {
      "description": "Pass as ?cursor to get the next page. Null on the last page.",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "data",
    "next_cursor"
  ]
}
post/workspaces/{workspace_id}/families

Create a family

1-2 partner_ids are required; children are optional. At least two people in total. The 201 body carries warnings when an extra child could not be attached. Replays of an Idempotency-Key return the original body and request_id; headers are not replayed.

NameInRequiredDescription
workspace_idpathyesThe workspace (project) id.
Idempotency-KeyheadernoMakes the write safe to retry (1-255 characters, kept 24 hours). Same key and same request replays the original response; a different request with the same key is a 409.
Request body (application/json, required)
{
  "type": "object",
  "properties": {
    "partner_ids": {
      "minItems": 1,
      "maxItems": 2,
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    },
    "child_ids": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    },
    "marriage_date": {
      "type": "string",
      "maxLength": 100
    },
    "marriage_place": {
      "type": "string",
      "maxLength": 300
    }
  },
  "required": [
    "partner_ids"
  ],
  "additionalProperties": false
}

Responses

  • 201 The created family. (FamilyCreated)
  • 401 Missing, malformed, unknown or revoked API key. (ErrorResponse)
  • 403 The account has no paid plan, or the key is read-only (a read_write key is required). Also: the plan's person limit is reached. (ErrorResponse)
  • 404 The workspace does not exist or is not visible to this key's owner. Also: A person does not exist or is not visible. (ErrorResponse)
  • 409 The workspace is archived (writes are refused). Also: Idempotency-Key was reused with a different request, or a request with it is still in progress. (ErrorResponse)
  • 422 Validation failed. A bad Idempotency-Key (1-255 characters) is also a 422. (ErrorResponse)
  • 429 Rate limit exceeded. Wait the number of seconds in Retry-After. (ErrorResponse)
  • 500 Unexpected error. Retry later and quote request_id if it persists. (ErrorResponse)
201 response schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "partners": {
      "maxItems": 2,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "role": {
            "type": "string",
            "enum": [
              "husband",
              "wife"
            ]
          }
        },
        "required": [
          "person_id",
          "role"
        ]
      }
    },
    "children": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "pedigree": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "person_id",
          "pedigree"
        ]
      }
    },
    "marriage": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The marriage date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the marriage happened but its date is unknown; null means no marriage is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place",
        "type"
      ]
    },
    "divorce": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The divorce date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the divorce happened but its date is unknown; null means no divorce is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place"
      ]
    },
    "created_at": {
      "type": "string"
    },
    "warnings": {
      "description": "Present only when a child could not be attached.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "id",
    "workspace_id",
    "partners",
    "children",
    "marriage",
    "divorce",
    "created_at"
  ]
}
get/workspaces/{workspace_id}/families/{family_id}

Get a family

NameInRequiredDescription
workspace_idpathyesThe workspace (project) id.
family_idpathyesThe family id.

Responses

  • 200 The family. (Family)
  • 401 Missing, malformed, unknown or revoked API key. (ErrorResponse)
  • 403 The account has no paid plan. (ErrorResponse)
  • 404 The workspace does not exist or is not visible to this key's owner. Also: The family does not exist or is not visible. (ErrorResponse)
  • 429 Rate limit exceeded. Wait the number of seconds in Retry-After. (ErrorResponse)
  • 500 Unexpected error. Retry later and quote request_id if it persists. (ErrorResponse)
200 response schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "partners": {
      "maxItems": 2,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "role": {
            "type": "string",
            "enum": [
              "husband",
              "wife"
            ]
          }
        },
        "required": [
          "person_id",
          "role"
        ]
      }
    },
    "children": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "pedigree": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "person_id",
          "pedigree"
        ]
      }
    },
    "marriage": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The marriage date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the marriage happened but its date is unknown; null means no marriage is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place",
        "type"
      ]
    },
    "divorce": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The divorce date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the divorce happened but its date is unknown; null means no divorce is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place"
      ]
    },
    "created_at": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "workspace_id",
    "partners",
    "children",
    "marriage",
    "divorce",
    "created_at"
  ]
}
patch/workspaces/{workspace_id}/families/{family_id}

Edit a couple's status or event

Set the relationship status, one family event, or both. Setting the same event again replaces it. Replays of an Idempotency-Key return the original body and request_id; headers are not replayed.

NameInRequiredDescription
workspace_idpathyesThe workspace (project) id.
family_idpathyesThe family id.
Idempotency-KeyheadernoMakes the write safe to retry (1-255 characters, kept 24 hours). Same key and same request replays the original response; a different request with the same key is a 409.
Request body (application/json, required)
{
  "type": "object",
  "properties": {
    "status": {
      "description": "The couple's relationship status.",
      "type": "string",
      "enum": [
        "married",
        "civil",
        "religious",
        "partnership",
        "engaged",
        "separated",
        "annulled",
        "divorced"
      ]
    },
    "event": {
      "description": "Set one couple event. Setting the same tag (and type) again replaces it.",
      "type": "object",
      "properties": {
        "tag": {
          "type": "string",
          "enum": [
            "ANUL",
            "CENS",
            "DIV",
            "DIVF",
            "ENGA",
            "EVEN",
            "MARR",
            "MARB",
            "MARC",
            "MARL",
            "MARS"
          ],
          "description": "GEDCOM family event tag. MARR and DIV set the marriage / divorce; others are stored as events. EVEN needs a type."
        },
        "date": {
          "description": "Omitted = cleared.",
          "anyOf": [
            {
              "type": "string",
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "description": "Omitted = cleared.",
          "anyOf": [
            {
              "type": "string",
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ]
        },
        "type": {
          "description": "Descriptor; required for EVEN.",
          "anyOf": [
            {
              "type": "string",
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ]
        },
        "marriage_type": {
          "description": "MARR only.",
          "anyOf": [
            {
              "type": "string",
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "tag"
      ],
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}

Responses

  • 200 The updated family. (Family)
  • 401 Missing, malformed, unknown or revoked API key. (ErrorResponse)
  • 403 The account has no paid plan, or the key is read-only (a read_write key is required). (ErrorResponse)
  • 404 The workspace does not exist or is not visible to this key's owner. Also: The family does not exist or is not visible. (ErrorResponse)
  • 409 The workspace is archived (writes are refused). Also: Idempotency-Key was reused with a different request, or a request with it is still in progress. (ErrorResponse)
  • 422 Validation failed. A bad Idempotency-Key (1-255 characters) is also a 422. Also: Invalid body, an empty body, or EVEN without a type. (ErrorResponse)
  • 429 Rate limit exceeded. Wait the number of seconds in Retry-After. (ErrorResponse)
  • 500 Unexpected error. Retry later and quote request_id if it persists. (ErrorResponse)
200 response schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "partners": {
      "maxItems": 2,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "role": {
            "type": "string",
            "enum": [
              "husband",
              "wife"
            ]
          }
        },
        "required": [
          "person_id",
          "role"
        ]
      }
    },
    "children": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "pedigree": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "person_id",
          "pedigree"
        ]
      }
    },
    "marriage": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The marriage date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the marriage happened but its date is unknown; null means no marriage is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place",
        "type"
      ]
    },
    "divorce": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The divorce date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the divorce happened but its date is unknown; null means no divorce is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place"
      ]
    },
    "created_at": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "workspace_id",
    "partners",
    "children",
    "marriage",
    "divorce",
    "created_at"
  ]
}
post/workspaces/{workspace_id}/families/{family_id}/members

Add a partner or child

Matching is queued, never run inline. Replays of an Idempotency-Key return the original body and request_id; headers are not replayed.

NameInRequiredDescription
workspace_idpathyesThe workspace (project) id.
family_idpathyesThe family id.
Idempotency-KeyheadernoMakes the write safe to retry (1-255 characters, kept 24 hours). Same key and same request replays the original response; a different request with the same key is a 409.
Request body (application/json, required)
{
  "type": "object",
  "properties": {
    "person_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "role": {
      "type": "string",
      "enum": [
        "partner",
        "child"
      ]
    },
    "pedigree": {
      "type": "string",
      "enum": [
        "birth",
        "adopted",
        "foster",
        "step"
      ]
    }
  },
  "required": [
    "person_id",
    "role"
  ],
  "additionalProperties": false
}

Responses

  • 200 The updated family. (Family)
  • 401 Missing, malformed, unknown or revoked API key. (ErrorResponse)
  • 403 The account has no paid plan, or the key is read-only (a read_write key is required). (ErrorResponse)
  • 404 The workspace does not exist or is not visible to this key's owner. Also: The family or person does not exist or is not visible. (ErrorResponse)
  • 409 The workspace is archived (writes are refused). Also: Idempotency-Key was reused with a different request, or a request with it is still in progress. Also: The person is already in the family, or the partner slot is taken. (ErrorResponse)
  • 422 Validation failed. A bad Idempotency-Key (1-255 characters) is also a 422. Also: Invalid body, or pedigree sent for a partner. (ErrorResponse)
  • 429 Rate limit exceeded. Wait the number of seconds in Retry-After. (ErrorResponse)
  • 500 Unexpected error. Retry later and quote request_id if it persists. (ErrorResponse)
200 response schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "partners": {
      "maxItems": 2,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "role": {
            "type": "string",
            "enum": [
              "husband",
              "wife"
            ]
          }
        },
        "required": [
          "person_id",
          "role"
        ]
      }
    },
    "children": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "person_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "pedigree": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "person_id",
          "pedigree"
        ]
      }
    },
    "marriage": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The marriage date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the marriage happened but its date is unknown; null means no marriage is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        },
        "type": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place",
        "type"
      ]
    },
    "divorce": {
      "type": "object",
      "properties": {
        "date": {
          "description": "The divorce date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the divorce happened but its date is unknown; null means no divorce is recorded.",
          "type": [
            "string",
            "null"
          ]
        },
        "year": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "place": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "date",
        "year",
        "place"
      ]
    },
    "created_at": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "workspace_id",
    "partners",
    "children",
    "marriage",
    "divorce",
    "created_at"
  ]
}
delete/workspaces/{workspace_id}/families/{family_id}/members

Remove a partner or child

People are not deleted. If removing the last partner leaves an empty family, the family is removed and the response is {ok, family_deleted, id}. Replays of an Idempotency-Key return the original body and request_id; headers are not replayed.

NameInRequiredDescription
workspace_idpathyesThe workspace (project) id.
family_idpathyesThe family id.
Idempotency-KeyheadernoMakes the write safe to retry (1-255 characters, kept 24 hours). Same key and same request replays the original response; a different request with the same key is a 409.
Request body (application/json, required)
{
  "type": "object",
  "properties": {
    "person_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "role": {
      "type": "string",
      "enum": [
        "partner",
        "child"
      ]
    }
  },
  "required": [
    "person_id",
    "role"
  ],
  "additionalProperties": false
}

Responses

  • 200 The updated family, or a family_deleted notice.
  • 401 Missing, malformed, unknown or revoked API key. (ErrorResponse)
  • 403 The account has no paid plan, or the key is read-only (a read_write key is required). (ErrorResponse)
  • 404 The workspace does not exist or is not visible to this key's owner. Also: The family does not exist, or the person is not in that role in it. (ErrorResponse)
  • 409 The workspace is archived (writes are refused). Also: Idempotency-Key was reused with a different request, or a request with it is still in progress. (ErrorResponse)
  • 422 Validation failed. A bad Idempotency-Key (1-255 characters) is also a 422. (ErrorResponse)
  • 429 Rate limit exceeded. Wait the number of seconds in Retry-After. (ErrorResponse)
  • 500 Unexpected error. Retry later and quote request_id if it persists. (ErrorResponse)
200 response schema
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "workspace_id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "partners": {
          "maxItems": 2,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "person_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "role": {
                "type": "string",
                "enum": [
                  "husband",
                  "wife"
                ]
              }
            },
            "required": [
              "person_id",
              "role"
            ]
          }
        },
        "children": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "person_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "pedigree": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "person_id",
              "pedigree"
            ]
          }
        },
        "marriage": {
          "type": "object",
          "properties": {
            "date": {
              "description": "The marriage date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the marriage happened but its date is unknown; null means no marriage is recorded.",
              "type": [
                "string",
                "null"
              ]
            },
            "year": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "place": {
              "type": [
                "string",
                "null"
              ]
            },
            "type": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "date",
            "year",
            "place",
            "type"
          ]
        },
        "divorce": {
          "type": "object",
          "properties": {
            "date": {
              "description": "The divorce date as GEDCOM date text (for example \"12 MAY 1892\" or \"ABT 1890\"). \"Y\" means the divorce happened but its date is unknown; null means no divorce is recorded.",
              "type": [
                "string",
                "null"
              ]
            },
            "year": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "place": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "date",
            "year",
            "place"
          ]
        },
        "created_at": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "workspace_id",
        "partners",
        "children",
        "marriage",
        "divorce",
        "created_at"
      ]
    },
    {
      "type": "object",
      "properties": {
        "ok": {
          "type": "boolean",
          "const": true
        },
        "family_deleted": {
          "type": "boolean",
          "const": true
        },
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "required": [
        "ok",
        "family_deleted",
        "id"
      ]
    }
  ]
}

We use cookies and similar technologies. Essential cookies keep the site working and secure. We only load analytics (PostHog, including masked session replays) and marketing (Meta Pixel and TikTok Pixel) with your consent. See our Privacy Policy.