The Oracle Fusion REST API is the most direct way to read and write ERP, SCM and HCM data from other systems. Called without parameters, you get huge, slow responses and only the first 25 records.
URL structure
https://<instance>.fa.<region>.oraclecloud.com/fscmRestApi/resources/11.13.18.05/<resource>
onlyData=true
Drops the links arrays that often make up half the payload.
fields
GET .../suppliers?onlyData=true&fields=SupplierId,Supplier,SupplierNumber
q: filter server-side
GET .../invoices?q=InvoiceDate>='2026-10-01';InvoiceAmount>10000&onlyData=true
Conditions separated by ; act as AND; strings go in single quotes; URL-encode everything. Some resources also offer predefined finder searches.
limit, offset, hasMore
Default page size is 25. Request more with limit (usually up to 500) and move with offset:
async function fetchAll(url, headers) {
const all = [];
for (let offset = 0; ; offset += 500) {
const r = await fetch(`${url}&limit=500&offset=${offset}`, { headers });
if (!r.ok) throw new Error(`${r.status} ${await r.text()}`);
const { items, hasMore } = await r.json();
all.push(...items);
if (!hasMore) return all;
}
}
Add totalResults=true only when you really need the count.
expand and orderBy
?expand=lines brings child records in one call (use sparingly). When paginating changing data, sort by a stable column (orderBy=CreationDate:asc) to avoid skipped or repeated records.
Common errors
| Symptom | Likely cause |
|---|---|
| Only 25 records | Missing limit / pagination |
| 400 on filter | Quotes, encoding or attribute name (case-sensitive) |
| 401 / 403 | User lacks the role for that resource |
| Slow responses | No fields/onlyData, unnecessary expand |
Is your Oracle Fusion integration slow or incomplete? I can review it.