> For the complete documentation index, see [llms.txt](https://photon-commerce.gitbook.io/photon-commerce-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://photon-commerce.gitbook.io/photon-commerce-api/async-api-webhook.md).

# Async API Webhook

To get updates on the status of the document you submitted, you can create a webhook using any external services that sends a POST request to the endpoint '/webhook' using your credentials and the photon\_key of the document.

## Fetch document status

<mark style="color:green;">`POST`</mark> `https://api.photoncommerce.com/webhook`

Retrieves the status of a specific document - if it is being processed or has already been processed.

#### Path Parameters

| Name        | Type   | Description               |
| ----------- | ------ | ------------------------- |
| photon\_key | string | The name of the JSON file |

#### Headers

| Name          | Type   | Description                                                                                               |
| ------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| PASSWORD      | string | The password for each account                                                                             |
| SECRET-KEY    | string | The secret key for each account                                                                           |
| CLIENT-ID     | string | Unique Client ID for each account                                                                         |
| AUTHORIZATION | string | <p>Pass your username and unique API key <br>in the form "apikey \<your-username>:\<your<br>api key>"</p> |

{% tabs %}
{% tab title="200 In case the document has been processed, we will return the dictionary of extracted values within the "data" field of the response." %}

```
{
"data":
    {
    "Total":1871.8,
    "Balance_Due":1871.8,
    "Date":"2021-03-08",
    "Category":"General",
    "Invoice_Number":"1030",
    "Account_Number":"",
    "Bill_To_Name":"Kevin Condon",
    "Bill_To_Address":"San Francisco, CA",
    "Bill_To_Vat_Number":"",
    "Card_Number":"",
    "Cashback":0.0,
    "Created":"2021-06-22 04:10:21",
    "Currency_Code":"USD",
    "Discount":0.0,
    "Due_Date":"2021-03-08",
    "Payment_Terms":"Due upon Receipt",
    "Payment_Display_Name":"",
    "Payment_Type":"",
    "Phone_Number":"3108496500",
    "Reference_Number":"",
    "Service_End_Date":"",
    "Service_Start_Date":"",
    "Shipping":0.0,
    "Ship_To_Name":"",
    "Ship_To_Address":"",
    "Ship_Date":"",
    "Order_Date":"",
    "Pages":"1",
    "Delivery_Date":"",
    "Is_Duplicate":0,
    "Notes":"",
    "Subtotal":0.0,
    "Tax":0.0,
    "Tax_Lines":[],
    "Tip":0.0,
    "Tracking_Number":"",
    "Vat_Number":"",
    "Vendor_Account_Number":"",
    "Vendor_Bank_Name":"",
    "Vendor_Bank_Number":"",
    "Vendor_Bank_Swift":"",
    "PO_Number":"",
    "Vendor_Name":"Eins",
    "Vendor_Address":"13417 Contour Dr Sherman Oaks, CA 91423 US",
    "Vendor_ABN_Number":"",
    "Vendor_Email":"accounting@einsteam.com",
    "Vendor_Fax":"",
    "Vendor_IBAN":"",
    "Vendor_Phone":"3108496500",
    "Vendor_Raw_Name":"Eins",
    "Vendor_Type":"",
    "Vendor_Recipient":"",
    "Vendor_Address_Line":"13417 Contour Dr",
    "Vendor_City":"Sherman Oaks",
    "Vendor_State":"CA",
    "Vendor_Zipcode":"91423",
    "Bill_To_Recipient":"",
    "Bill_To_Address_Line":"",
    "Bill_To_City":"San Francisco",
    "Bill_To_State":"CA",
    "Bill_To_Zipcode":"",
    "Line_Items":[{"Line":1,"SKU":"","Date":"","Order":0,"Reference":"","Description":"Eins Team Hourly Consulting Service\nAttached\nis\nstatement of work\nbreaking down\nbilled hours for Feb\n15-Mar 6.","QTY":26.74,"Unit":"","Tax":0.0,"Tax_Rate":0.0,"Type":"service","Price":70.0,"Discount":0.0,"Amount":1871.8}],
    "Raw_Text":"Eins Team\n13417 Contour Dr\nSherman Oaks, CA 91423 US\n+1 3108496500\nsamstevens@einsteam.com\n\nINVOICE\n\nBILL TO\t\t\t\t\t\t\t\t\t\tINVOICE\t1030\nKevin Condon\t\t\t\t\t\t\t\t\t\tDATE\t03/08/2021\nSagetap\t\t\t\t\t\t\t\t\t\tTERMS\tDue on receipt\nSan Francisco, CA\t\t\t\t\t\t\t\t\tDUE DATE\t03/08/2021\n\nACTIVITY\t\t\t\tDESCRIPTION\t\tQTY\tRATE\t\t\tAMOUNT\nEins Team Hourly Consulting Service\tAttached is\t\t26.74\t70.00\t\t\t1,871.80\nstatement of work\nbreaking down\nbilled hours for Feb\n15-Mar 6.\n\nThank you for your business! All payments are final and non-refundable. If you\tBALANCE DUE\t\t\t\t\t$1,871.80\nhave any questions please contact accounting@einsteam.com\n\n\tPage 1 of 1",
    "All_Email_Addresses":"samstevens@einsteam.com,accounting@einsteam.com",
    "Document_Type":"Invoice",
    "Vendor_Country":"US",
    "photon_key":"data/app/2021-06-21/21-10-18_Eins_Team_Invoice_1030.json"
    },
"message": "success",
"status": "success"
}
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Python" %}

```python
import requests
headers = {
    'CLIENT-ID': '<your client id',
    'AUTHORIZATION': 'apikey <your username>:<your api key>',
    'PASSWORD':'<your password>',
    'SECRET-KEY':'<your secret key>'
}

response = requests.post('https://api.photoncommerce.com/webhook?photon_key={photon_key_here}', headers=headers)
```

{% endtab %}

{% tab title="cURL" %}

```
curl -X POST -H "CLIENT-ID:<client-id>" -H "AUTHORIZATION:apikey <username>:<api-key>" -H 'PASSWORD:<password>' -H "SECRET-KEY:<secret-key>" "https://api.photoncommerce.com/webhook?photon_key=<photon_key of the file>"
```

{% endtab %}

{% tab title="Node.js" %}

```
var request = require('request');

var headers = {
    'CLIENT-ID': '<client-id>',
    'AUTHORIZATION': 'apikey <username>:<api-key>',
    'PASSWORD': '<password>',
    'SECRET-KEY': '<secret-key>'
};

var options = {
    url: 'https://api.photoncommerce.com/webhook?photon_key=<photon_key of the file>',
    method: 'POST',
    headers: headers
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
}

request(options, callback);
```

{% endtab %}

{% tab title="Java" %}

```
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;

class Main {

	public static void main(String[] args) throws IOException {
		URL url = new URL("https://api.photoncommerce.com/webhook?photon_key=<photon_key of the file>");
		HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
		httpConn.setRequestMethod("POST");

		httpConn.setRequestProperty("CLIENT-ID", "<client-id>");
		httpConn.setRequestProperty("AUTHORIZATION", "apikey <username>:<api-key>");
		httpConn.setRequestProperty("PASSWORD", "<password>");
		httpConn.setRequestProperty("SECRET-KEY", "<secret-key>");

		InputStream responseStream = httpConn.getResponseCode() / 100 == 2
				? httpConn.getInputStream()
				: httpConn.getErrorStream();
		Scanner s = new Scanner(responseStream).useDelimiter("\\A");
		String response = s.hasNext() ? s.next() : "";
		System.out.println(response);
	}
}
```

{% endtab %}
{% endtabs %}

In case the document is still being processed, Photon will return the following as the response:\
{"message": "The document you submitted is being processed.", \
"status": "success"}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://photon-commerce.gitbook.io/photon-commerce-api/async-api-webhook.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
