Kaynak, üzerinde çalıştığınız şeydir. Örneğin, belirli bir lambayı değiştirmek için bir API'niz varsa, kaynak lambanın kendisidir. Bir kaynak fiziksel (ör. Lamba, kişi) veya fiziksel olmayan (ör. Makale, rol, veritabanındaki bir satır) olabilir, bir kaynak birincil (örneğin denge) veya türetilebilir (örneğin işlem) olabilir. Bir kaynak belirli bir varlığı ifade edebilir (örn. Bu lamba soketine takılan beşinci lamba) veya farklı zamanlarda farklı varlıklarla eşleşen bir role başvurabilir (örneğin, şu anda kurulu lamba, 5 Ağustos 2008'de kurulan lamba) veya birden fazla objeye eşlenebilir (örn. evdeki tüm lambalar).
Bir kaynağın temsili, hizmetinizin kaynağın durumunu, örneğin lambanın durumunu temsil eden XML, JSON'u iletişim biçimidir.
REST API'sinde, kaynak tekdüze bir tanımlayıcı (ör. URI) ile tanımlanır. Tek bir kaynağın birden çok temsili olabilir, HTTP REST API'sinde normalde HTTP Content-Type ve Accept üstbilgilerinde kullanmak istediğiniz temsili belirtirsiniz.
İstemci sunucusu mimarisindeki önemli gerçekleştirmelerden biri, kaynağı istemciye getirememeniz ve bunu sizin yaptığınız gibi yapmaya çalışmamanızdır. Bunun yerine, REST API'sinde, kaynağın temsillerini aktararak bir kaynağı uzaktan yönetirsiniz. Bunu düşünün, lambayı FedEx ile yapmayın, böylece müşteri doğrudan lambayı manipüle edebilir, ancak hizmet lambanın XML / JSON / protobuf / CSV temsilini oluşturur ve istemci amaçlanan manipülasyonların bir temsilini gönderir. Hizmet daha sonra istemci adına lambanın gerçek durumunu değiştirir ya da istemcinin lamba üzerindeki işlemleri yapmaya yetkili olup olmadığını söyler. Bu açık / bölünmüş saç gibi görünebilir, ancak not edilmesi gereken önemli şey, temsilin kaynağın kendisi olmamasıdır,