Restore Coral API - Coral Reef Restoration

Looking to rebuild coral reefs through your app or digital platform? Our Restore Coral API enables developers and businesses to fund coral reef restoration programmatically. Reefs are restored by outplanting coral fragments onto reef structures — so we bill by the fragment, letting you contribute at any scale, from a single fragment to entire reef structures. Perfect for marine conservation applications, brands offsetting their ocean footprint, or checkout flows that let customers rebuild reefs with every purchase.

You can restore coral for your own organization or on behalf of your customers. To involve customers in the impact, include the customer_email in your request. We'll send them an email with a secure link to track their restoration impact in real time via a personalized dashboard.

How coral impact is measured

Coral reefs are rebuilt by outplanting individual coral fragments onto reef structures. The fragment is the smallest unit of restoration — and the unit we bill on — so you can contribute at any scale, from a single fragment to entire structures.

A coral fragment
1 coral fragment
144 cm²
22.32 in² of restored reef · the billable unit
A coral reef
1 reef structure
≈ 15 fragments
≈ 2,160 cm² · 335 in² (2.33 ft²)
UnitEquivalentReef area (metric)Reef area (imperial)
1 coral fragmentthe billable unit144 cm²22.32 in²
≈ 15 fragments1 reef structure≈ 2,160 cm²≈ 335 in² (2.33 ft²)

POST/v1/restore_coral

Restore coral

This endpoint enables you to restore coral. To restore coral on behalf of your customers, you must provide the customer_email. customer_name is optional. However, if you plan to make an impact on behalf of your customers or give them the ability to track their impact, you need to provide the customer_email.

Required request body attributes

  • Name
    amount
    Type
    integer
    Description

    The number of coral fragments you wish to restore in a single request. The value must be between 1 and 10,000,000.

Optional request body attributes

  • Name
    customer_email
    Type
    string
    Description

    The email of the customer if you are sending a request to restore coral on their behalf. Must be a valid email address.

  • Name
    customer_name
    Type
    string
    Description

    The name of the customer if you are sending a request to restore coral on their behalf. customer_email must be present.

  • Name
    notify
    Type
    boolean
    Description

    If set to true, the customer will receive an email confirmation for this impact. Defaults to true. Note: Notifications are always disabled in sandbox environment.

  • Name
    metadata
    Type
    object
    Description

    A set of key-value pairs for storing additional information about the impact. Keys must be strings (max 40 characters) and values must be strings (max 500 characters). Maximum 20 key-value pairs. Reserved keys (gift, widgetID) cannot be used.

Response attributes

  • Name
    coral_fragments_restored
    Type
    integer
    Description

    The number of coral fragments restored in this request.

Request

POST
/v1/restore_coral
 curl --location 'https://api.1clickimpact.com/v1/restore_coral' \
--header 'Content-Type: application/json' \
--header 'x-api-key: {PRODUCTION API KEY}' \
--data '{
    "amount": 20
}'

Response

{
  "user_id": "U123",
  "coral_fragments_restored": 20,
  "time_utc": "2024-09-16T20:34:04.429Z"
}

Request (for Customer)

POST
/v1/restore_coral
curl --location https://api.1clickimpact.com/v1/restore_coral \
--header 'Content-Type: application/json' \
--header 'x-api-key: {PRODUCTION API KEY}' \
--data '{
    "amount": 20,
    "customer_email": "sample-customer@email.com",
    "customer_name": "Sample Customer"
}'

Response (for Customer)

{
  "user_id": "U123",
  "coral_fragments_restored": 20,
  "customer": {
    "customer_id": "U12345",
    "customer_email": "sample-customer@email.com",
    "customer_name": "Sample Customer"
  },
  "time_utc": "2024-09-16T20:34:04.429Z"
}

GET/v1/records

Retrieve your coral restored records

This endpoint allows you to query your coral restored records. Refer to customer records at the bottom to see how to query customer coral restored records.

Optional query params

  • Name
    filter_by
    Type
    string
    Description

    The impact type of the records you want to query. To retrieve the coral restored records filter_by should be "coral_fragments_restored".

  • Name
    start_date
    Type
    string
    Description

    The start date after which you want to query the records. The start_date should be in the format YYYY-MM-DD.

  • Name
    end_date
    Type
    string
    Description

    The end date up to which you want to query the records. The end_date should be in the format YYYY-MM-DD.

  • Name
    limit
    Type
    integer
    Description

    Limit the number of records returned. The default value is 10. The value must be between 0 and 1000.

  • Name
    cursor
    Type
    string
    Description

    The cursor from the response can be used as query parameter in the next request to fetch the subsequent list of records. Refer to Pagination section for more details.

  • Name
    sort_order
    Type
    string
    Description

    The order in which the records are returned, sorted by time_utc. The value for sort_order could be either "asc" (default) or "desc".

Request

GET
/v1/records
curl --location 'https://api.1clickimpact.com/v1/records?filter_by=coral_fragments_restored' \
--header 'x-api-key: {PRODUCTION API KEY}'

Response

{
  "user_records":
  [
    {
        "user_id": "U123",
        "time_utc": "2024-09-16T20:30:13.391Z",
        "coral_fragments_restored": 20
    },
    {
        "user_id": "U123",
        "time_utc": "2024-09-17T13:24:04.429Z",
        "coral_fragments_restored": 45,
        "metadata": {
            "reef_site": "Great Barrier Reef",
            "event": "World Oceans Day 2024"
        }
    },
    {
        "user_id": "U123",
        "time_utc": "2024-09-17T14:32:01.638Z",
        "coral_fragments_restored": 10
    },
    {...},
    {...}
  ],
  "cursor": "fNJjcmV32dGVkTiOiIyMDI0LTA3LTidXNlcklE3UiVTk2OTQ0MDcwIpT"
}

GET/v1/customer_records

Retrieve customer coral restored records

This endpoint allows you to query customer coral restored records for all or a specific customer.

Optional query params

  • Name
    customer_email
    Type
    string
    Description

    The email of the customer whose records you want to retrieve.

  • Name
    filter_by
    Type
    string
    Description

    The impact type of the records you want to query. To retrieve the coral restored records filter_by should be "coral_fragments_restored".

  • Name
    start_date
    Type
    string
    Description

    The start date after which you want to query the records. The start_date should be in the format YYYY-MM-DD.

  • Name
    end_date
    Type
    string
    Description

    The end date up to which you want to query the records. The end_date should be in the format YYYY-MM-DD.

  • Name
    limit
    Type
    integer
    Description

    Limit the number of records returned. The default value is 10. The value must be between 0 and 1000.

  • Name
    cursor
    Type
    string
    Description

    The cursor from the response can be used as query parameter in the next request to fetch the subsequent list of records. Refer to Pagination section for more details.

  • Name
    sort_order
    Type
    string
    Description

    The order in which the records are returned, sorted by time_utc. The value for sort_order could be either "asc" (default) or "desc".

Request

GET
/v1/customer_records
curl --location 'https://api.1clickimpact.com/v1/customer_records?filter_by=coral_fragments_restored' \
--header 'x-api-key: {PRODUCTION API KEY}'

Response

{
  "customer_records":
  [
     {
        "user_id": "U123",
        "customer": {
            "customer_id": "U1234",
            "customer_email": "sample-customer-1@email.com",
            "customer_name": "Sample Customer 1"
        },
        "time_utc": "2024-06-12T15:22:14.753Z",
        "coral_fragments_restored": 40
    },
    {
        "user_id": "U123",
        "customer": {
            "customer_id": "U789",
            "customer_email": "sample-customer-2@email.com",
            "customer_name": "Sample Customer 2"
        },
        "time_utc": "2024-06-15T16:41:58.323Z",
        "coral_fragments_restored": 50
    },
    {...},
    {...}
  ],
  "cursor": "eyJjcmVhdGVkT24iOiIyMDI0LTA3LTidXNlcklEIjoiVTk2OTQ0MDcwIn0="
}