Welcome!

Standards are hard and we're here to help. There are 50 states (and even more organizations) who produce standards. If you're like us, your customers will start asking to add their own standards. Creating an infrastructure to screen scrape 50 state websites and then updating them is overwhelming. Some companies charge and arm and a leg for standards in formats that don't conform to conventional JSON or are organized in bizarre, teacher unfriendly ways. Further, you need to update the standards as the states update them. And, of course, let's not forget search. What's a developer to do?

Use the Common Standards Project, of course! Here, you can learn more about use our API and how to integrate instant standards search into your website. Reach out to me at scott (at) commoncurriculum dot com if you need more help!

API Overview

Why does edtech need a standards API?

If edtech companies are going to reach their potential to change teaching practices and dramatically improve student outcomes, their products need to interop. Standards are a common denominator across vast swaths of the edtech landscape, yet their exists no

  • common data format for standards
  • shared set of IDs to uniquely identify each standard
  • central database of standards from all 50 states, organizations, and countries
  • an ability to publish new standards unique to districts, charter networks or organizations

This project aims to solve these barriers to edtech interoperability. Each standard follows a consistent convention, has a unique GUID, and is accessible through this API or through a database dump. New standards can be added through the web interface.

This project wouldn't be possible without the work of the Achivement Standards Network (ASN) and it's parent company, Desire2Learn. They convert standards and release them on their website under a Creative Commons attribution license. This project builds on their work by adding GUIDs to each standards, converting the standards into a simple JSON structure, and grouping the standards into sets that teachers are familiar with and the standard writers published them in. For instance, ASN releases standards tagged with grade levels (e.g. 1st - 12th grade). We group those standards into groups such as "Grade 1 Math", "High School -- Algebra", "High School - Functions"

Who is behind this?

The Common Standards Project is produced by Common Curriculum, a collaborative lesson planner transforming how schools develop and align instruction for their students. This API is in production at Common Curriculum.

Using these standards

Click "Register or Sign In" on the left to get your API key. Currently, there is not a limit placed on API requests. If limits are added in the future, they'll only be enacted to better share costs among the users of the API.

Authentication

  • All requests need an api-key query parameter or an Api-Key header. Your api key can be found in the sidebar.
  • All requests need to originate from one of the allowed origins. You can update origins on the sidebar.

Endpoints

Try out a live version at http://api.commonstandardsproject.com

Jurisdictions/

Find a list of all the jurisdictions and organizations in the database

Url


http://commonstandardsproject.com/api/v1/jurisdictions/
      

Example Response:

{
  "data": [
    {
      "id": "B838B98D043045748F3814B9E43CAC85",
      "title": "Alabama",
    },
    {
      "id": "0DCD3CBE12314408BDBDB97FAF45EEE8",
      "title": "Alaska",
    },
    {
      "id": "9D65E45961BC46218A6FA75732D733EB",
      "title": "American Association for the Advancement of Science",
    },
    {
      "id": "6B4D002505FC4175967211744D11C325",
      "title": "American Association of School Librarians",
    },
    {
      "id": "63CD52A014074BBCACC64A8954A97539",
      "title": "American Psychological Association",
    }
  ]
}
  
  

jurisdictions/:id

Select a particular jurisdiction

Url


http://commonstandardsproject.com/api/v1/jurisdictions/:id
      

Example Response:

{
  {
    "data": {
      "id": "49FCDFBD2CF04033A9C347BFA0584DF0",
      "title": "Maryland",
      "type": "state",
      "standardSets": [
        {
          "id": "49FCDFBD2CF04033A9C347BFA0584DF0_D1000265_grades-09-10-11-12",
          "title": "Grades 9, 10, 11, 12",
          "subject": "Science Core Learning Goals (2002)",
          "educationLevels": [
            "09",
            "10",
            "11",
            "12"
          ],
          "document": {
            "id": "D1000265",
            "valid": "2002",
            "title": "Maryland Science Core Learning Goals",
            "sourceURL": "http://mdk12.org/instruction/curriculum/science/clg_toolkit.html",
            "asnIdentifier": "D1000265",
            "publicationStatus": "Published"
          }
        },
        {
          "id": "49FCDFBD2CF04033A9C347BFA0584DF0_D10002D0_grade-01",
          "title": "Grade 1",
          "subject": "Social Studies",
          "educationLevels": [
            "01"
          ],
          "document": {
            "id": "D10002D0",
            "valid": "2006",
            "title": "Voluntary State Curriculum - Social Studies",
            "sourceURL": null,
            "asnIdentifier": "D10002D0",
            "publicationStatus": "Published"
          }
        }
      ]
    }
  }

standard_sets/:id

Select a group of standards

Url


http://commonstandardsproject.com/api/v1/standard_sets/:id
      

Example Response:

{
  "data": {
     "id": "49FCDFBD2CF04033A9C347BFA0584DF0_D2604890_grade-01",
     "title": "Grade 1",
     "subject": "Mathematics",
     "educationLevels": [
       "01"
     ],
     "license": {
       "title": "CC BY 3.0 US",
       "URL": "http://creativecommons.org/licenses/by/3.0/us/",
       "rightsHolder": "Desire2Learn Incorporated"
     },
     "rightsHolder": null,
     "document": {
       "id": "D2604890",
       "valid": "2011",
       "title": "Maryland College and Career-Ready Standards - Mathematics (PK-8)",
       "sourceURL": "http://mdk12.org/instruction/curriculum/mathematics/index.html",
       "asnIdentifier": "D2604890",
       "publicationStatus": "Published"
     },
     "jurisdiction": {
       "id": "49FCDFBD2CF04033A9C347BFA0584DF0",
       "title": "Maryland"
     },
     "standards": {
       "10C032C40D33415EA1AD242D40481A4F": {
         "id": "10C032C40D33415EA1AD242D40481A4F",
         "asnIdentifier": "S2604891",
         "position": 1000,
         "depth": 0,
         "description": "Standards for Mathematical Practice"
       },
       "97253D2D6F384ADF8001A3512A4107AE": {
         "id": "97253D2D6F384ADF8001A3512A4107AE",
         "asnIdentifier": "S2604892",
         "position": 2000,
         "depth": 1,
         "statementLabel": "Standard",
         "listId": "1.",
         "description": "Make sense of problems and persevere in solving them."
       },
       "486874A7CEC04817BCD93180E5C47CB7": {
         "id": "486874A7CEC04817BCD93180E5C47CB7",
         "asnIdentifier": "S2604893",
         "position": 3000,
         "depth": 1,
         "statementLabel": "Standard",
         "listId": "2.",
         "description": "Reason abstractly and quantitatively."
       },
       "32790706FBF043B4AE53539534337DB9": {
         "id": "32790706FBF043B4AE53539534337DB9",
         "asnIdentifier": "S2604894",
         "position": 4000,
         "depth": 1,
         "statementLabel": "Standard",
         "listId": "3.",
         "description": "Construct viable arguments and critique the reasoning of others."
       }
    ]
  }
}

We use Algolia for our search service. While the API is free to use, the standards search has a limit of 100 requests per IP per hour due to the costs of hosting search. If you need to go above that, send us an email to become a sponsor of the Common Curriculum Project and we'll raise it for you.

To get started with Algolia, go to Algolia's js library. (They have clients for other languages, too). Your Algolia API Key and application id is in the left sidebar.

// jQuery example (they have )
<script src="//cdn.jsdelivr.net/algoliasearch/3/algoliasearch.jquery.min.js"></script>
<script<
  var client = algoliaClient('O7L4OQENOZ', '');
  var index = client.initIndex('common-standards-project');
  index.search('something', function searchDone(err, content) {
    console.log(err, content)
  });
</script>

A few things to note:

  • Algolia will highlight the places where the search term is found.
  • There are facets for standardSet.title, subject, normalizedSubject, and jurisdiction.title
  • The standards are ordered by the position
  • All the standards include an array of their ancestor's descriptions so a word found in an ancestor will show the standard

Format of standard in response from Algolia

{
  "id": "0AD25973CF4E4DC892561BEEF05C6BB4",
  "asnIdentifier": "S2604988",
  "position": 33000,
  "depth": 2,
  "statementNotation": "1.NBT.4",
  "statementLabel": "Standard",
  "description": "Add within 100, including adding a two-digit number and a one-digit number, and adding a two-digit number and a multiple of 10, using concrete models or drawings and strategies based on place value, properties of operations, and/or the relationship between addition and subtraction; relate the strategy to a written method and explain the reasoning used. Understand that in adding two-digit numbers, one adds tens and tens, ones and ones, and sometimes it is necessary to compose a ten.",
  "ancestorDescriptions": [
    "Use place value understanding and properties of operations to add and subtract.",
    "Number and Operations (Base Ten)"
  ],
  "educationLevels": [
    "01"
  ],
  "subject": "Mathematics",
  "normalizedSubject": "Math",
  "standardSet": {
    "title": "Grade 1",
    "id": "49FCDFBD2CF04033A9C347BFA0584DF0_D2604890_grade-01"
  },
  "jurisdiction": {
    "id": "49FCDFBD2CF04033A9C347BFA0584DF0",
    "title": "Maryland"
  },
  "_tags": [
    "E5B209C180E24242B7D337302A19D69B",
    "3993CD0C80874BE0B5CE62758D97F64A",
    "49FCDFBD2CF04033A9C347BFA0584DF0_D2604890_grade-01",
    "49FCDFBD2CF04033A9C347BFA0584DF0",
    "01"
  ],
  "objectID": "0AD25973CF4E4DC892561BEEF05C6BB4"
}