Attention: This site does not support the current version of your web browser. To get the best possible experience using our website we recommend that you upgrade to a newer version or install another browser

Tools

SDKs

These software development kits (SDKs) are being developed for the FamilySearch API. We encourage you to support and contribute to these SDKs as needed. Some of them are marked as "official" SDKs, indicating that they are developed and supported by FamilySearch.

NOTE: If you contribute to an SDK for FamilySearch, please abide by our Standards for SDK Development.

Java

The official Java SDK for the FamilySearch API. Developed as an extension to the GEDCOM X Java library, the Java SDK serves as the reference implementation for both GEDCOM X and the FamilySearch API.

PHP

A PHP SDK for the FamilySearch API

C#

The official C# SDK for the FamilySearch API. Developed as an extension to the GEDCOM X C# library.

JavaScript

A JavaScript SDK for the FamilySearch API.

Python

  • Python SDK for FamilySearch API Under Development
    It is designed for Python 3 and 2.7. Python 2.6 is the earliest supported version, but bugfixes are low-priority. 2.5 and earlier are not guaranteed to work, or supported, and are considered legacy.
  • Windows App for Python SDKUnder Development 32-bit Windows sample applications for demonstrating the use of FamilySearch-Python SDK. To run these, click on Download ZIP, and then on the executable in the directory.

Ruby

Sample Apps

Sample Apps can be used for learning about the code or starting a demo project. The sample code provided is not a complete product. The code lacks appropriate error handling and provides only basic user interface to show the rendering of the results from the sample API requests.

Mobile iOS App

Mobile Android App

Mobile PhoneGap App

PHP App

Python App

C# Lite Sample App

C# Sample App

JavaScript App (Photo Manager)

JavaScript App (Tree Search)

JavaScript App (Pedigree Browser)

JavaScript App (Old)

Generated Libraries

The following libraries are generated from the source code of the API. They are available for use in reading and writing data to the FamilySearch API. They provide objects that reflect the structure of the APIs. They do not provide code that sends HTTP requests.

Many of these generated libraries were used to seed the official SDKs.

C Client Library

The C module generates the source code for the ANSI-C-compatible data structures and (de)serialization functions that can be used in conjunction with libxml2 to (de)serialize the REST resources as they are represented as XML data.

The generated C source code depends on the XML Reader API and the XML Writer API as well as the <time.h>, <string.h>, and <stdlib.h> C standard libraries.

File Size Description
fs-platform.c 1,950,529
enunciate-common.c 40,629 Common code needed for all projects.

C# Client Library

The C# client-side library defines the classes that can be (de)serialized to/from XML. This is useful for accessing the HTTP resources that are published by this application.

C# Resource Example
//read a resource from a REST url
Uri uri = new Uri(...);

XmlSerializer s = new XmlSerializer(
  typeof( byte[] )
);

  //Create the request object
WebRequest req = WebRequest.Create(uri);
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
TextReader r = new StreamReader( stream );

byte[] result = (byte[]) s.Deserialize( r );

//handle the result as needed...
    

File Size Description
fs-platform-dotnet.zip 29,749 The C# source code for the C# client library.

GWT JSON Overlay

The Google Web Toolkit JSON Overlay library provides the JSON Overlays that can be used to access the Web service API for this application.

JSON Overlay Example
String url = ...;
RequestBuilder request = new RequestBuilder(RequestBuilder.GET, url);
request.sendRequest(null, new RequestCallback() {
  public void onResponseReceived(Request request, Response response) {
    if (200 == response.getStatusCode()) {
      //handle the successful data...
      JavaScriptObject data = JavaScriptObject.fromJson(response.getText());
      //handle the JavaScriptObject...
    }
    else {
      //handle the error...
    }
  }

  public void onError(Request request, Throwable throwable) {
    //handle the error...
  }
});
    

File Size Description
fs-platform-gwt-json-overlay.jar 72,747 The sources for the GWT JSON overlay.

Java JSON Client Library

The Java client-side library is used to provide the set of Java objects that can be serialized to/from JSON using Jackson. This is useful for accessing the JSON REST endpoints that are published by this application.

Resources Example (Raw JAXB)
java.net.URL url = new java.net.URL(baseURL + "/tree/child-and-parents-relationships/{caprid}/notes/{nid}");
ObjectMapper mapper = new ObjectMapper();
java.net.URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.connect();

mapper.writeValue(connection.getOutputStream(), gedcomx);
Object result = (Object) mapper.readValue( connection.getInputStream(), Object.class );
//handle the result as needed...
    
Resources Example (Jersey client)
javax.ws.rs.client.Client client = javax.ws.rs.client.ClientBuilder.newClient();

Object result = client.target(baseUrl + "/tree/child-and-parents-relationships/{caprid}/notes/{nid}")
  .post(javax.ws.rs.client.Entity.entity(gedcomx, "application/x-fs-v1+json"), Object.class);

//handle the result as needed...
    

File Size Description
fs-platform-json-client.jar 112,222 The binaries for the Java JSON client library.
fs-platform-json-client-json-sources.jar 77,300 The sources for the Java JSON client library.

Java XML Client Library

The Java client-side library is used to access the Web service API for this application using Java.

The Java client-side library is used to provide the set of Java objects that can be serialized to/from XML using JAXB. This is useful for accessing the resources that are published by this application.

Resources Example (Raw JAXB)
java.net.URL url = new java.net.URL(baseURL + "/tree/child-and-parents-relationships/{caprid}/notes/{nid}");
JAXBContext context = JAXBContext.newInstance( byte[].class, byte[].class );
java.net.URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.connect();

Unmarshaller unmarshaller = context.createUnmarshaller();
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(gedcomx, connection.getOutputStream());
Object result = (Object) unmarshaller.unmarshal( connection.getInputStream() );
//handle the result as needed...
    
Resources Example (Jersey client)
javax.ws.rs.client.Client client = javax.ws.rs.client.ClientBuilder.newClient();

Object result = client.target(baseUrl + "/tree/child-and-parents-relationships/{caprid}/notes/{nid}")
  .post(javax.ws.rs.client.Entity.entity(gedcomx, "application/x-fs-v1+xml"), Object.class);

//handle the result as needed...
    

File Size Description
fs-platform-xml-client.jar 136,377 The binaries for the Java XML client library.
fs-platform-xml-client-xml-sources.jar 99,962 The sources for the Java XML client library.

JavaScript Client Library

The JavaScript client-side library defines classes that can be (de)serialized to/from JSON. This is useful for accessing the resources that are published by this application, but only those that produce a JSON representation of their resources (content type "application/json").

The library uses ES6 class syntax which has limited support. See MDN and the ES6 Compatibility Table for more details.

The library contains a UMD loader which supports AMD, CommonJS and browser globals. The browser global variable name for this library is "javascriptClient".

JavaScript Example
//read the resource in JSON:
var json = JSON.parse(jsonString);

//create an object
var object = new Object(json);

//retreive the json again
var newJson = object.toJSON();

//serialize the json
var newJsonString = JSON.stringify(newJson);
    

File Size Description
fs-platform-js.zip 31,438

Objective C Client Library

The Objective C module generates the source code for the Objective C classes and (de)serialization functions that can be used in conjunction with libxml2 to (de)serialize the REST resources as they are represented as XML data.

The generated Objective C source code depends on the XML Reader API and the XML Writer API as well as the base OpenStep foundation classes.

File Size Description
fs-platform.h 151,831
fs-platform.m 1,108,712
enunciate-common.h 13,133 Common header needed for all projects.
enunciate-common.m 43,361 Common implementation code needed for all projects.

PHP JSON Client Library

The PHP JSON client-side library defines the PHP classes that can be (de)serialized to/from JSON. This is useful for accessing the resources that are published by this application, but only those that produce a JSON representation of their resources (content type "application/json").

This library requires the json_encode function which was included in PHP versions 5.2.0+.

PHP JSON Example
//read the resource in JSON:
$json = ...;

//read the json as an array.
$parsed = json_decode($json, true);

//read the json array as the object
$result = new Object($parsed);

//open a writer for the json
$json = $result->toJson();
    

File Size Description
fs-platform-php.zip 36,162

PHP XML Client Library

The PHP client-side library defines the PHP classes that can be (de)serialized to/from XML. This is useful for accessing the resources that are published by this application, but only those that produce a XML representation of their resources.

This library leverages the XMLReader and XMLWriter tools that were included in PHP versions 5.1.0+.

PHP XML Example
//read the resource in XML form:
$xml = ...;

$reader = new \XMLReader();

if (!$reader->open($xml)) {
  throw new \Exception('Unable to open ' . $xml);
}
$result = new Object($reader);

//open a writer for the xml
$out = ...;
$writer = new \XMLWriter();
$writer->openUri($out);
$writer->startDocument();
$writer->setIndent(4);
$result->toXml($writer);
$writer->flush();
    

File Size Description
fs-platform-php.zip 41,166

Ruby JSON Client Library

The Ruby JSON client-side library defines the Ruby classes that can be (de)serialized to/from JSON. This is useful for accessing the REST endpoints that are published by this application, but only those that produce a JSON representation of their resources (content type "application/json").

This library leverages the Ruby JSON Implementation, which is required in order to use this library.

Ruby JSON Example
require 'net/https'
require 'uri'
//...

//read a resource from a REST url
url = URI.parse("...")
request = Net::HTTP::Post.new(url.request_uri)
input = Object.new
//set up the Object...
request.body = input.to_json
request['Content-Type'] = "application/json"

http = Net::HTTP.new(url.host, url.port)
//set up additional http stuff...
res = http.start do |ht|
  ht.request(request)
end

result = Object.from_json(JSON.parse(res.body))

//handle the result as needed...
    

File Size Description
fs-platform.rb 386,761

Other Tools

  • Fiddler - A debugging proxy to inspect and modify HTTP and HTTPS traffic
  • Restlet Studio - Web API testing tool
  • Postman - Postman is a Chrome App or Mac App that has been recommended by other developer to work with FamilySearch API as well as other APIs.
  • Wireshark - A network packet analyzer that can capture and inspect any network traffic
  • Tree Data Copy Utility - An open source project that is a utility to copy portions of the production Family Tree data to your integration. This project is not officially supported by FamilySearch.

What other utilities do you find useful? Please let us know so fellow developers can benefit.

Webinars

FSDN Webinar: Tree Foundation Part 2. View the PowerPoint slides.
Date: April 19, 2016
Time: 9:00am MST
Duration: 44 minutes (starts at 0:30)
Summary: Jimmy Zimmerman provides additional explanation, release schedule, and instructions on app testing for the transition to Tree Foundation. He also explains future enhancements that will be made later. You can download and install the DHC REST Client that Jimmy used in his demonstration.
FSDN Webinar: Tree Foundation Testing. View the PowerPoint slides.
Date: March 15, 2016
Time: 9:00am MST
Duration: 49 minutes (starts at 0:50)
Summary: Jimmy Zimmerman and Ryan Heaton provide explanation and instructions on app testing for the future transition to Tree Foundation.
FSDN Webinar: FamilySearch API Features and Roadmap
Date: November 17, 2015
Time: 9:00am MST
Duration: 59 minutes (starts at 0:10)
Summary: Dean Payne and Ryan Heaton provide insight on current and future APIs.
FSDN Webinar: RootsTech Innovator Showdown 2016 Insights and Tips
Date: September 15, 2015
Time: 9:00am MDT
Duration: 59 minutes (starts at 0:00)
Summary: David Pugmire provides industry data to show market opportunities, and tips on how to be a winner in the showdown.
FSDN Webinar: FamilySearch GedcomX - JavaScript SDK Overview
Date: August 18, 2015
Time: 9:00am MDT
Duration: 40 minutes (starts at 0:00)
Summary: Justin York presents an introduction to the GedcomX - JavaScript SDK.
FSDN Webinar: FamilySearch GedcomX - PHP SDK Overview
Date: July 21, 2015
Time: 9:00am MDT
Duration: 54 minutes (starts at 0:10)
Summary: Jimmy Zimmerman presents an introduction to the GedcomX - PHP SDK.
RootsTech Webinar: Sneak Peak for 2016
Date: May 19, 2015
Duration: 48 minutes (starts at 11:46)
Summary: David Pugmire and the RootsTech Team present a sneak peak into RootsTech 2016.
FSDN Webinar: Places and Memories API
Date: April 21, 2015
Duration: 52 minutes (Starts at 8:10)
Summary: Gordon Clarke presents an update to the FamilySearch Places and Memories API resorces.
FSDN Webinar: FamilySearch Developer Site Overview
Date: March 17, 2015
Duration: 28 minutes (starts at 4:21)
Summary: Vaughn Hepworth presents an overview of the updates to the content on the FamilySearch Developer website.
FSDN Webinar: Memories API
Date: April 15, 2014
Time: 1:00pm MDT
Duration: 31 minutes
Summary: Vaughn Hepworth presents an introductory overview of the Memories API, now in Beta.
FSDN Webinar: Building a Robust Client Using the FamilySearch API
Date: March 25, 2014
Time: 2:00pm MDT
Duration: 48 minutes
Summary: Ryan Heaton presents a follow-up discussion of the "Building a Robust Client Using the FamilySearch API" presentation that was made at RootsTech 2014.
FSDN Gedcom X Webinar
Date: March 11, 2014
Time: 2:00pm MDT
Duration: 44 minutes
Summary: Ryan Heaton will present a follow-up discussion of the Gedcom X presentation that was made at RootsTech 2014. (See also GedcomX.org)
FSDN Marketing/Roadmap Webinar
Date: February 19, 2014
Duration: 52 minutes
Summary: Review marketing/roadmap of upcoming changes
    1. Private Spaces
    2. ARK Direct Paths
    3. OSS Direct Call
    4. Memories
    5. Sources
    6. Match (“Hinting”) module
    7. Javascript SDK
    8. RootsDevCon
RootsTech 2014 Video Archive
Selected keynote and popular speakers from the 2014 RootsTech conference
Introduction to FamilySearch API
Date: December 17, 2013
Duration: 34 minutes
Summary: This webinar introduces the resources available to learn the FamilySearch API.
    1. Purpose of the FamilySearch API
    2. The Developers website
    3. Guides
    4. Q & A
Experimental Features
Date: December 3, 2013
Duration: 24 minutes
Summary: Discussion of the new Experimental Features endpoint and how this plays a role in your development cycle. (Archived recording not available)
RootsTech 2013
Selected keynote and popular speakers from the 2013 RootsTech conference
x

Select a language