The Accountability Wizard® API allows developers to check the current Accountability Wizard® review status of any nonprofit or receive a full list of the nonprofits on Charities Review Council’s online list of reviewed nonprofits.
Download a PDF of this documentation
HTTPS Required
All API requests require HTTPS. Any calls made over plain HTTP will fail.
Authorization – /api/authorize
The Accountability Wizard® requires authentication to authorize API requests. Authentication must be completed before any other data is accessible, and API requests without authentication will fail. Successful authentication will return a token to be used for request authorization.
You can reset your password at any time by going to wizard.smartgivers.org and clicking the “Reset Password” link, then following the instructions in the email you receive.
Request
Authentication is accomplished by providing a valid username and password to the authorization endpoint via basic authentication.
URL: | /api/authorize |
Method: | GET |
Headers: | |
Parameters: | |
Authentication: | <USERNAME>:<PASSWORD> |
Example Request
curl -u <USERNAME>:<PASSWORD> https://wizard.smartgivers.org/api/authorize
Response
Upon successful authentication, the Accountability Wizard® will return a JSON object containing a temporary authorization token. This token must be included with future API calls to authorize the requests.
Response Object
Token | String|Null |
Authorization token if authentication is successful |
Success | Boolean |
Success confirmation |
Message | String|Null |
Error details if authentication is unsuccessful |
Example Response – Successful Authentication
{ "Token": <TOKEN>, "Success": true, "Message": null }
Example Response – Unsuccessful Authentication
{ "Token": null, "Success": false, "Message": "User <USERNAME> or password is not valid." }
Get Organization by EIN – /api/getorganization
Call this endpoint to request the current status of a single nonprofit in the Accountability Wizard® review process. A successful request will return the current status of the organization and, if applicable, the date of their most recent review.
Request
All requests to this endpoint must be authorized with a valid token. The EIN of the nonprofit being checked is then passed as a parameter on the URL. Note that the EIN should be numerals only; remove any hyphens or other symbols from the parameter.
URL: | /api/getorganization |
Method: | GET |
Headers: | Token: <TOKEN> |
Parameters: | ein |
Example Request
curl -H "Token: <TOKEN>" https://wizard.smartgivers.org/api/getorganization?ein=410652474
Response
Upon a successful authorized request, the Accountability Wizard® will return a JSON object containing the name, review date (if applicable), and current status of the organization with the matching EIN.
Response Object
Organization | Object|Null |
An object with the organization data | |
Name | String |
The name of the organization | |
ReviewDate | String|Null |
The date of their most recent review. Unless an organization is less than three years old, an organization can be listed as a Review in Progress for up to one year from this date. They can be listed as Meets Standards® for up to three years from this date. | |
Status | String |
The current status of the nonprofit requested | |
Success | Boolean |
Success confirmation | |
Message | String|Null |
Error details if request is unsuccessful |
Example Response – Successful Request, Meets Standards®
{ "Organization": { "Name": "Charities Review Council (Self-Review)", "ReviewDate": "5/9/2019", "Status": "Meets Standards" }, "Success": true, "Message": null }
Example Response – Successful Request, Review in Progress
If the organization has been provided with the results of their review and they are working on addressing any issues that were identified, a ReviewDate
will be given. If the organization’s submission is still under review by the Council, the ReviewDate
will be null
.
{ "Organization": { "Name": "Charities Review Council (Self-Review)", "ReviewDate": "5/9/2019", "Status": "Review in Progress" }, "Success": true, "Message": null }
Example Response – Successful Request, Does Not Meet Standards
If an organization Does Not Meet Standards, that can mean one of many things.
- It could mean the organization has never been reviewed by the Council.
- It could mean the organization is working on completing a review but has not submitted it to the Council yet.
- It could mean the organization’s submission has already been reviewed and the results provided to the organization, but the organization is not yet Meet Standards® and it has been more than a year since results were provided.
- It could mean the organization was previously reviewed but never met the Standards and their account has expired.
- It could mean the organization was previously reviewed and fully met all the Standards, but their account has expired.
Whatever the specific situation, it means the organization does not have a current account that Meets Standards® or is a Review in Progress.
{ "Organization": { "Name": "Charities Review Council (Self-Review)", "ReviewDate": null, "Status": "Does Not Meet Standards" }, "Success": true, "Message": null }
Example Response – Unsuccessful Request, Organization Not Found
If an organization is not found within our system, there are two possibilities.
- The provided EIN was entered incorrectly, as in the example below.
- The organization with the requested EIN does not have an account in the Accountability Wizard® and Does Not Meet Standards.
In the second case, it cannot be reliably assumed the organization has never been reviewed in the past or that they were deemed incapable of meeting the Standards. Instead, they should be treated as though the response was “Does Not Meet Standards”.
{ "Organization": null, "Success": false, "Message": "Organization with ein 'x410652474' was not found" }
Example Response – Unsuccessful Request, Invalid Token
{ "Organization": null, "Success": false, "Message": "Token <TOKEN> is not valid." }
Get All Organizations – /api/getorganizations
Call this endpoint to request the full list of all nonprofits that are currently Meets Standards® or Review in Progress. A successful request will return a list of organizations with their current status and, if applicable, the date of their most recent review.
Request
All requests to this endpoint must be authorized with a valid token.
URL: | /api/getorganizations |
Method: | GET |
Headers: | Token: <TOKEN> |
Parameters: |
Example Request
curl -H "Token: <TOKEN>" https://wizard.smartgivers.org/api/getorganizations
Response
Upon a successful authorized request, the Accountability Wizard® will return a JSON object containing the name, review date (if applicable), and current status of the organization with the matching EIN.
Note: This request searches, filters, and sorts through the entire database in order to provide accurate up-to-date data no matter when you make the request. The result of this is that it can take several seconds for a response, up to 30s or even more. Be aware of this when thinking about any timeout functions. Additionally, this means that this endpoint is not suitable for populating a list live when a user visits your website, as the user would need to wait until the data is provided.
Response Object
Organizations | Array<Object>|Null |
An array of objects with the organization data | |
Name | String |
The name of the organization | |
ReviewDate | String|Null |
The date of their most recent review. Unless an organization is less than three years old, an organization can be listed as a Review in Progress for up to one year from this date. They can be listed as Meets Standards® for up to three years from this date. | |
Status | String |
The current status of the nonprofit requested | |
Success | Boolean |
Success confirmation | |
Message | String|Null |
Error details if request is unsuccessful |
Example Response – Successful Request
{ "Organizations": [ { "Name": "Example Organization 1", "ReviewDate": "3/21/2020", "Status" "Review in Progress" }, { "Name": "Example Organization 2", "ReviewDate": "10/7/2018", "Status" "Meets Standards" }, { "Name": "Example Organization 3", "ReviewDate": null, "Status" "Review in Progress" }, … ], "Success": true, "Message": null }
Example Response – Unsuccessful Request, Invalid Token
{ "Organizations": null, "Success": false, "Message": "Token <TOKEN> is not valid." }